Various versions of the Sun/Oracle/OpenJDK JVM have issues executing new processes if the default langauge of the JVM is "Turkish".
The root bug reports of this affecting Runtime.exec() are here...
On systems runining the affected JVMs, with a default langauge of "Turkish", this problem has historically manifested itself in Solr in a few ways:
- SystemInfoHandler would throw nasty exceptions on these systems due to an attempt at conditionally executing some native process to check system stats
- RunExecutableListener would fail cryptically
- some solr tests involving either the SystemInfoHandler or the Hadoop MapReduce code would fail if the test framework randomly selected a turkish language based locale.
Starting with Solr 4.10, We have worked around this jvm bug in Solr in 3 ways:
- RunExecutableListener makes it more clear in the logs why it can't be used
- SystemInfoHandler traps and ignores any Error related to "posix_span" in the same way it traps and ignores other errors related to it's conditional attempts at exec'ing (ie: permission problems, executable not found ,etc...)
- our map reduce based tests that depend on exec'ing external processes now skip themselves automatically if a turkish local is randomly selected.
Users affected by this issue who, for whatever reasons, can not upgrade to Solr 4.10, may wish to consider setting the "jdk.lang.Process.launchMechanism" system property explicitly (see below)