You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2014/08/18 19:33:50 UTC

svn commit: r1618672 - in /lucene/dev/trunk/solr: ./ contrib/map-reduce/src/test/org/apache/solr/hadoop/ contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/ core/src/java/org/apache/solr/core/ core/src/java/org/apache/solr/handler/admin/

Author: uschindler
Date: Mon Aug 18 17:33:49 2014
New Revision: 1618672

URL: http://svn.apache.org/r1618672
Log:
SOLR-6387: Add better error messages throughout Solr and supply a work around for Java bug #8047340 to SystemInfoHandler: On Turkish default locale, some JVMs fail to fork on MacOSX, BSD, AIX, and Solaris platforms.

Modified:
    lucene/dev/trunk/solr/CHANGES.txt
    lucene/dev/trunk/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java
    lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java

Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1618672&r1=1618671&r2=1618672&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Mon Aug 18 17:33:49 2014
@@ -285,6 +285,10 @@ Bug Fixes
 * SOLR-6383: RegexTransformer returns no results after replaceAll if regex does not match a value.
   (Alexander Kingson, shalin)
 
+* SOLR-6387: Add better error messages throughout Solr and supply a work around for
+  Java bug #8047340 to SystemInfoHandler: On Turkish default locale, some JVMs fail
+  to fork on MacOSX, BSD, AIX, and Solaris platforms.  (hossman, Uwe Schindler)
+
 Optimizations
 ---------------------
 

Modified: lucene/dev/trunk/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java?rev=1618672&r1=1618671&r2=1618672&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java (original)
+++ lucene/dev/trunk/solr/contrib/map-reduce/src/test/org/apache/solr/hadoop/MRUnitBase.java Mon Aug 18 17:33:49 2014
@@ -18,6 +18,7 @@ package org.apache.solr.hadoop;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.Locale;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.conf.Configuration;
@@ -35,13 +36,15 @@ public abstract class MRUnitBase extends
 
   @BeforeClass
   public static void setupClass() throws Exception {
+    assumeFalse("This test fails on UNIX with Turkish default locale (https://issues.apache.org/jira/browse/SOLR-6387)",
+        new Locale("tr").getLanguage().equals(Locale.getDefault().getLanguage()));
     solrHomeZip = SolrOutputFormat.createSolrHomeZip(new File(RESOURCES_DIR + "/solr/mrunit"));
     assertNotNull(solrHomeZip);
   }
 
   @AfterClass
   public static void teardownClass() throws Exception {
-    solrHomeZip.delete();
+    if (solrHomeZip != null) solrHomeZip.delete();
   }
   
   protected void setupHadoopConfig(Configuration config) throws IOException {

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java?rev=1618672&r1=1618671&r2=1618672&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineTestBase.java Mon Aug 18 17:33:49 2014
@@ -84,6 +84,8 @@ public class AbstractSolrMorphlineTestBa
 
   @BeforeClass
   public static void beforeClass() throws Exception {
+    assumeFalse("This test fails on UNIX with Turkish default locale (https://issues.apache.org/jira/browse/SOLR-6387)",
+        new Locale("tr").getLanguage().equals(Locale.getDefault().getLanguage()));
     myInitCore(DEFAULT_BASE_DIR);
   }
 

Modified: lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java?rev=1618672&r1=1618671&r2=1618672&view=diff
==============================================================================
--- lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java (original)
+++ lucene/dev/trunk/solr/contrib/morphlines-core/src/test/org/apache/solr/morphlines/solr/AbstractSolrMorphlineZkTestBase.java Mon Aug 18 17:33:49 2014
@@ -20,6 +20,7 @@ package org.apache.solr.morphlines.solr;
 import java.io.File;
 import java.io.IOException;
 import java.util.Iterator;
+import java.util.Locale;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.solr.client.solrj.SolrServerException;
@@ -68,6 +69,8 @@ public abstract class AbstractSolrMorphl
   
   @BeforeClass
   public static void setupClass() throws Exception {
+    assumeFalse("This test fails on UNIX with Turkish default locale (https://issues.apache.org/jira/browse/SOLR-6387)",
+        new Locale("tr").getLanguage().equals(Locale.getDefault().getLanguage()));
     solrHomeDirectory = createTempDir();
     AbstractZkTestCase.SOLRHOME = solrHomeDirectory;
     FileUtils.copyDirectory(SOLR_INSTANCE_DIR, solrHomeDirectory);

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java?rev=1618672&r1=1618671&r2=1618672&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/RunExecutableListener.java Mon Aug 18 17:33:49 2014
@@ -78,7 +78,18 @@ class RunExecutableListener extends Abst
       if (doLog) {
         log.debug("About to exec " + cmd[0]);
       }
-      Process proc = Runtime.getRuntime().exec(cmd, envp ,dir);
+      final Process proc;
+      try {
+        proc = Runtime.getRuntime().exec(cmd, envp ,dir);
+      } catch (Error err) {
+        // Create better error message
+        if (err.getMessage() != null && err.getMessage().contains("posix_spawn")) {
+          Error newErr = new Error("Error forking command due to JVM locale bug (see https://issues.apache.org/jira/browse/SOLR-6387): " + err.getMessage());
+          newErr.setStackTrace(err.getStackTrace());
+          err = newErr;
+        }
+        throw err;
+      }
 
       if (wait) {
         try {

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java?rev=1618672&r1=1618671&r2=1618672&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java Mon Aug 18 17:33:49 2014
@@ -17,9 +17,9 @@
 
 package org.apache.solr.handler.admin;
 
-import java.io.DataInputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.lang.management.ManagementFactory;
 import java.lang.management.OperatingSystemMXBean;
@@ -213,20 +213,24 @@ public class SystemInfoHandler extends R
    */
   private static String execute( String cmd )
   {
-    DataInputStream in = null;
+    InputStream in = null;
     Process process = null;
     
     try {
       process = Runtime.getRuntime().exec(cmd);
-      in = new DataInputStream( process.getInputStream() );
+      in = process.getInputStream();
       // use default charset from locale here, because the command invoked also uses the default locale:
       return IOUtils.toString(new InputStreamReader(in, Charset.defaultCharset()));
-    }
-    catch( Exception ex ) {
+    } catch( Exception ex ) {
       // ignore - log.warn("Error executing command", ex);
       return "(error executing: " + cmd + ")";
-    }
-    finally {
+    } catch (Error err) {
+      if (err.getMessage() != null && err.getMessage().contains("posix_spawn")) {
+        log.warn("Error forking command due to JVM locale bug (see https://issues.apache.org/jira/browse/SOLR-6387): " + err.getMessage());
+        return "(error executing: " + cmd + ")";
+      }
+      throw err;
+    } finally {
       if (process != null) {
         IOUtils.closeQuietly( process.getOutputStream() );
         IOUtils.closeQuietly( process.getInputStream() );