Solved

RCaller timeout error


I'm using an RCaller within a workbench that's processing some reasonably large datasets. The R script I'm using works fine in R itself, and the workbench runs perfectly with a smaller test dataset. 

However with a full-size dataset I get the following error, approximately 30 seconds after the last feature enters the RCaller and the rscript.exe processes begin:

RCaller(InlineQueryFactory): InlineQueryFactory encountered an error when starting R interpreter. Message was: Process operation timed out

Running with the same size dataset in RGui or RStudio, the processing I'm doing takes approximately 10 minutes. However the processing is by group and so I use the ddply package in parallel mode to split the processing across 10 cores, making the process take approximately 1 minute.

I've transferred this over to the RCaller in FME, and it starts the 10 processes, but still times out after about 30 seconds. 

How can I use the RCaller to do work that takes more than 30 seconds to produce an output? Is there any way of spitting out "something" so that FME knows it's running ok and should wait?

icon

Best answer by trentatsafe 24 July 2017, 19:10

View original

3 replies

Badge +6

Hi @harry13 ,

 

What version of FME are you running by chance? There was a fix implemented to stop a timeout from occurring for R scripts that could take a long time(the timeout defaulted to 30 seconds). This fix can be found in FME 2017.1 beta, B 17478 and later. The latest beta can be found here: https://www.safe.com/support/support-resources/fme-downloads/beta/

 

 

Please let me know if that works or if you require further assistance.

Amazing, that's the most perfect answer you can hope for on a support forum: "it's already fixed"! I've installed the new version of FME (I was on an earlier 2017 build) and now it works perfectly. Thanks!

Out of curiosity, does or did this timeout apply to the other "external caller" transformers (PythonCaller and SystemCaller)?

Thanks again.

Badge +6

Amazing, that's the most perfect answer you can hope for on a support forum: "it's already fixed"! I've installed the new version of FME (I was on an earlier 2017 build) and now it works perfectly. Thanks!

Out of curiosity, does or did this timeout apply to the other "external caller" transformers (PythonCaller and SystemCaller)?

Thanks again.

Hello @harry13

 

The SystemCaller will wait forever for the subprocess to complete. This is similar to what the RCaller now does as well.

 

 

The PythonCaller is completely different, in the sense that it isn't a separate process. The PythonCaller executes the code within the FME process that is performing the translation. As such, the PythonCaller should not timeout as it is not an external process.

 

 

I hope that helps

 

 

Have a good day!

Reply