TSSS on Linux with open-source R and "rJava" package version 0.9-9: home page works, but ExtendedServerInfo hangs.
book
Article ID: KB0082401
calendar_today
Updated On:
Products
Versions
Spotfire Statistics Services
All supported versions
Description
TIBCO Spotfire Statistics Services (TSSS) on Linux with open-source R and "rJava" package version 0.9-9: home page works, but ExtendedServerInfo hangs.
Example errors from SplusServer.log:
2018-02-04 11:17:29,315 | ERROR | | SplusMessageServerWrapper | JobExecutionThreadPool-3: Error occurred while trying to start engine service!
TSSS on Linux with open-source R and "rJava" package version 0.9-9: home page works, but ExtendedServerInfo hangs.
Environment
All supported environments
Resolution
This occurs when TSSS uses open-source R as its statistical engine, but only on Linux.
It appears to be due to a change implemented in version 0.9-9 of the user-contributed "rJava" package from the open-source R community's CRAN repository. The change is described on the CRAN repository at the following URL:
TSSS uses functions from this "rJava" package to manage engine sessions, when open-source R is the statistical engine.
In an R Console session, the following command will display the "rJava" package version that is in use:
packageVersion( "rJava" )
The workaround (to make open-source R using rJava version 0.9-9 work with TSSS on Linux) is to edit the init.d/spserver file to add the following lines right after the line "export CATALINA_OPTS", then start or restart the TSSS service:
This issue appears to be due to the following change that was introduced in version 0.9-9 of the "rJava" package from the open-source R community's CRAN repository:
0.9-9 (released to CRAN) o Work around a bug of Oracle's Java on Linux which caps the stack of R at 2M. The bug leads to segfaults in recursive computations (not an R error as R doesn't know the stack size has been reduced). The workaround can be disabled via environment variable RJAVA_JVM_STACK_WORKAROUND=0, which may produce better results with memory access checkers (ASAN, valgrind), because the workaround detects the new stack size by trying to access inaccessible memory. This JVM behavior was a workaround for an issue in old Linux systems (JDK-4466587) and is going to be fixed in Java 10. -----