How to fix PortalTransforms Cannot register transform lynx_dump?

we have a site that shows the following message on the logs all the time:

2017-01-09T11:50:30 ERROR PortalTransforms Cannot register transform lynx_dump, using BrokenTransform: Error
 Unable to find binary "lynx" in /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

I already followed Martijn's advice from here:

and removed the broken transform from there, but the error message keeps showing up on the logs.

any hints?

Might be easier to just install lynx...

I want to fix the issue, not just hide it.

Do we really (soft) depend on lynx? Well, this should be fixed.

What is it the transform is used for? Do we need it at all?

After reading the Stackoverflow thread, I'd propose to not register the transform by default in Plone 5.1 any more and mark it for removal in Plone 6

1 Like

no, we don't depend; this is a site that was running Plone 4.2 and had a broken portal transform registered (the original server had lynx installed).

I don't know why it had that, and I don't know how it got there :slight_smile:

is this related with the caching of the transforms? how do I solve that?

thanks, I've reinstalled lynx and now the messages are gone.

1 Like

@hvelarde you're correct that the transforms tool caches installed transforms. I've used this in the past to remove an old kupu transform (html_to_captioned) from the transforms tool on a debug prompt: (backup first, verify on a copy of your instance, etc., the usual disclaimers)

from StringIO import StringIO
from Products.PortalTransforms.setuphandlers import correctMapping
out = StringIO()
correctMapping(out, app.plone)
out.getvalue()
'have to unmap transform (html-to-captioned) cause its not in portal_transforms ...\n...ok\n'

1 Like

So let's see if I got this right... I propose something and Hector sneers at me. Jens proposes the same thing, Hector does it and thanks him.

:wink:

1 Like

Kim, I think I proposed to get rid of lynx transform. So well, I am confused.

1 Like

Funny concidence, but I've the same issue with other transforms in a very old Plone site I'm migrating to Plone 4.

2017-01-10 09:11:00 ERROR PortalTransforms Cannot register transform html_to_web_intelligent_plain_text (ImportError), using BrokenTransform: Error
No module named intelligenttext.transforms.html_to_web_intelligent_plain_text
2017-01-10 09:11:00 ERROR PortalTransforms Cannot register transform web_intelligent_plain_text_to_html (ImportError), using BrokenTransform: Error
No module named intelligenttext.transforms.web_intelligent_plain_text_to_html

Errors came from an ancient Poi that was shipped with an old style add-ons intelligenttext.

I found some information about this issue: http://plone.293351.n2.nabble.com/How-to-go-from-Plone-2-5-to-3-0-with-intelligenttext-td322634.html with an old @mauritsvanrees blob post but nothing fixed the warning.

As @hvelarde I also deleted broken transform but nothing changed. I'm really confused about this transform stuff works.

EDIT... the usage of correctMapping suggested by @fredvd returns an empty string, so no visible issue here

I had @keul's and similar several years ago too in a bunch of sites after upgrading massive customized sites (not sure exactly which versions and addons). Fastest solution was to delete whole portal_transform, create a blank plone site in parallel and copy over the tool from there into the migrated site.

Thanks @jensens, I already tried this also:

  • created a new Plone 4.3 site with Poi
  • deleted portal_transform tool
  • copied it from test site

Still, after the reboot I have the same warning... this is what drive me crazy!

I think I finally found why deleting broken transform stopped working, and probably this fix the @hvelarde issue too, and every other issue similar to this ones.

<rant-mode>
Sometimes I really like the idea to find a DeLorean, go back in time at the moment when we started adding persistent utility and using the component registry and say "I'm a time traveller that came from a dark future. Don't do this, is a bad idea".
</rant-mode>

So, I found I was not able to create new Poi issues due to ValueError: Unknown mime type text/x-web-intelligent.
I found that the mimetype_registry I have was a lot different than on from a whole new site + Poi.

One time again: deleted the tool from my site and copied one from a test site.

Nothing changed.

After some debugging I found that:

len(app.Plone.mimetypes())
875

... but ...

mtr = getToolByName(context, 'mimetypes_registry')
len(mtr.mimetypes())
598

Now is easy to get why. We have a persistent utility that is someway different from the tool object (probably because those tools implements a cache? I don't know).

Fix this is easy: just rerun the "Local Component Registry" import step of Products.MimeTypesRegistry.

After this I was pretty sure that portal_transforms tool was hit by the same issue.

After a rerun of Local Component Registry of Products.PortalTransforms my startup warnings disappeared, I can create Poi issues and the Sun is shining in the sky.

5 Likes

@keul if you ever get such a DeLorean, may I pass you my list of things-not-to-do-in-Plone?

@jensens sure! :smile:

maybe because he gave additional information on why I should reinstall it?

ok, that required a search for me :wink:

can you please explain that with more detail for the newbies?

Not 100% clear to me (as I said, it's probably related to the cache). However: rerunning the component registry import step refresh (destroy and re-create) the persistent utility.

If you look at the implementation of getToolByName you'll see it try first load a named utility. Someway the utility and the portal tool are different.

(Plone 4, similar case)

@keul, I'm trying to follow these steps...
Can you give me a hint where to find / do these?

Tried:

def unregister_transform(name):
    portal = api.portal.get()
    transforms = getToolByName(portal, 'portal_transforms')

    result = ""
    try:
        try:
            transforms.unregisterTransform(name)
        except MimeTypeException:
            if name in transforms.objectIds():
                transforms._delObject(name)
        result = ("Removed transform %s" % name)
    except AttributeError:
        result = ("Could not remove transform %s (not found)" % name)

    return result

^ As an upgrade step: This seems useful - no BROKEN items now in portal_transformations, but the error still appears after restarting the instance. Started to search for a solution, then found this topic.

Then tried:

  • ZMI -> portal_transformations -> Reload transforms (manage_reloadAllTransforms) (the errors still here)
  • in portal_setup - Upgrades a see no profile for Products.MimeTypesRegistry, so I can't rerun upgrade steps... / The same for PortalTransforms.

I expect it is easy, but I just can't get it. Please help. :slight_smile:

Oh, I found them in ZML -> portal_setup -> Advanced import.

I tried:

  • import without including dependencies of the step -> the errors still here
  • import including dependencies -> still not solved

The log on import:
2018-10-01 14:31:06 WARNING GenericSetup.toolset Not creating required tool portal_ploneboard, because class Products.Ploneboard.PloneboardTool is not found.
2018-10-01 14:31:06 INFO GenericSetup.toolset Toolset imported.
2018-10-01 14:31:06 INFO GenericSetup.componentregistry Adapters registered.
2018-10-01 14:31:06 INFO GenericSetup.componentregistry Utilities registered.
2018-10-01 14:31:41 WARNING GenericSetup.toolset Not creating required tool portal_ploneboard, because class Products.Ploneboard.PloneboardTool is not found.
2018-10-01 14:31:41 INFO GenericSetup.toolset Toolset imported.
2018-10-01 14:31:41 INFO GenericSetup.componentregistry Adapters registered.
2018-10-01 14:31:41 INFO GenericSetup.componentregistry Utilities registered.

My errors that I want to solve:
2018-10-01 14:33:44 ERROR PortalTransforms Cannot register transform text_to_emoticons (ImportError), using BrokenTransform: Error
No module named Ploneboard.transforms.text_to_emoticons
2018-10-01 14:33:44 ERROR PortalTransforms Cannot register transform url_to_hyperlink (ImportError), using BrokenTransform: Error
No module named Ploneboard.transforms.url_to_hyperlink

Any idea how to fix them?