Solved

When FME runs out of memory, will the shutdown script (Python/TCL) still be executed?

  • 23 November 2016
  • 4 replies
  • 3 views

Badge +7

Had a hard time trying to let FME run out of memory, so I thought it would be faster to just ask around.

My guess is no, right? Since it usually says "Warning: not all FMESessions that were created were destroyed before shutdown. This may cause instability" in the log...

icon

Best answer by mark2atsafe 23 November 2016, 18:31

View original

4 replies

Userlevel 4
Badge +25

As far as I know:

not all FMESessions that were created were destroyed

 

...is just a generic catch-all message when something has gone wrong. We can't be more specific because it's an area of code that unexpectedly errors. If it occurs you should certainly let us know via our support team (safe.com/support) as it is a bug that needs fixing.

In this scenario the translation may stop, or it may complete. I would be careful to check the output in that case, but I've no evidence to say it will/won't be compromised.

In any case, it's not specifically a memory error.

Basically if the workspace errors out with an FME engine crash, or it fails with an error in the log, then I would not expect the Python script to execute.

If the workspace runs to completion, even if there is a message like that in the log, I would expect the Python script will execute.

Of course, I now stand to be corrected if you find an example that goes against this behaviour!

Mark

 

Badge +7

As far as I know:

not all FMESessions that were created were destroyed

 

...is just a generic catch-all message when something has gone wrong. We can't be more specific because it's an area of code that unexpectedly errors. If it occurs you should certainly let us know via our support team (safe.com/support) as it is a bug that needs fixing.

In this scenario the translation may stop, or it may complete. I would be careful to check the output in that case, but I've no evidence to say it will/won't be compromised.

In any case, it's not specifically a memory error.

Basically if the workspace errors out with an FME engine crash, or it fails with an error in the log, then I would not expect the Python script to execute.

If the workspace runs to completion, even if there is a message like that in the log, I would expect the Python script will execute.

Of course, I now stand to be corrected if you find an example that goes against this behaviour!

Mark

 

Hi Mark! Thanks for your extensive explanation. Good to know also that the "not all FMESessions that were created were destroyed" message is not necessarily linked exclusively to an out of memory issue.

 

So you also expect that the Python shutdown script does not get executed when an out of memory issue occurs (I have personally never experienced that the workspace still ran to completion after that btw). How would you deal with this situation if the Python shutdown script contains code that writes some results to a database? This will never be written then...

 

Userlevel 4
Badge +25
Hi Mark! Thanks for your extensive explanation. Good to know also that the "not all FMESessions that were created were destroyed" message is not necessarily linked exclusively to an out of memory issue.

 

So you also expect that the Python shutdown script does not get executed when an out of memory issue occurs (I have personally never experienced that the workspace still ran to completion after that btw). How would you deal with this situation if the Python shutdown script contains code that writes some results to a database? This will never be written then...

 

I think the only way to be *absolutely* sure is to have a script outside FME. The script calls the FME workspace (maybe iFMEWorkspaceRunner) and checks on the result - I would expect it to return a code of some sort. If it works, fine, go ahead and run the Python. If it failed, well do whatever else you need to do. On the one hand it's not great, but on the other hand, we don't aim for FME to crash (or run out of memory) so it shouldn't ever be an issue.

 

No, it's unlikely that a workspace will run to completion if a memory issue did occur, but it can run to completion and still show that "not all FMESessions" error right at the end, which is why I mention that possibility.

 

Badge +7
I think the only way to be *absolutely* sure is to have a script outside FME. The script calls the FME workspace (maybe iFMEWorkspaceRunner) and checks on the result - I would expect it to return a code of some sort. If it works, fine, go ahead and run the Python. If it failed, well do whatever else you need to do. On the one hand it's not great, but on the other hand, we don't aim for FME to crash (or run out of memory) so it shouldn't ever be an issue.

 

No, it's unlikely that a workspace will run to completion if a memory issue did occur, but it can run to completion and still show that "not all FMESessions" error right at the end, which is why I mention that possibility.

 

@Mark2AtSafe Just realized I still needed to get back to you :)

 

Of course, you guys don't aim for FME to crash and I have to say that it rarely ever runs out of memory. But I do have some occasions with SketchUp files that contain a lot of geometry instances. When I instantiate them (which you sometimes have to do at a certain point if you want to manipulate them), the memory consumption might explode. Sure, optimization of my workspace takes a bite off, but I believe that the main issue is that we run our engine on AWS EC2 (Windows). I have the impression that the engine thinks that there is way more memory available (e.g. all the memory on AWS) then there actually is... However, I will contact the FME Cloud team to ask how they dealt with this issue!

 

Reply