Skip to main content

When I run an FME Script in one repository containing a custom transformer, FME Server will sometimes incorrectly use a custom transformer with same name from a different repository.

 

I have separate repositories on FME Server for a set of workspaces. I would like to extract some logic into custom transformers that would be loaded into these repositories. Unfortunately, it seems that FME Server sometimes loads a transformer from a different repository. I can run the same workspace in one repository twice in a row and get a different result because it will grab a transformer from different folders on different runs.

So, I wouldn't recommend having multiple resources on FME Server with the same name, even though they're in different folders.

What seems to be the case is that the first time a job runs on an engine, that engine will take the correct fmx (custom transformer) based on which repository the workspace and fmx is in. When the next job runs, because it's already loaded that transformer (based on the name) it uses the originally used fmx, even though it might be using the wrong one.

 

 

To get round this you could either:

 

a) Rename and republish your custom transformers so they have unique names (recommended)

or

b) Force the engines to restart after every transaction. In the fmeServerConfig.txt file you'll see a MAX_TRANSACTION_RESULT_SUCCESSES and a MAX_TRANSACTION_RESULT_FAILURES parameter. If you set both of these to 1, it will force the engine to restart after every time a workspace fails/succeeds. This will release whatever and however it had the custom transformer in memory and pick up the correct transformer.

However, this isn't an elegant workaround, and could result in a delay between each job whilst the engines restart, so if you have workspaces that need to run in quick succession you may experience a slow down.


Reply