You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by cu...@apache.org on 2006/03/21 23:50:04 UTC

svn commit: r387660 - in /lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc: Client.java Server.java

Author: cutting
Date: Tue Mar 21 14:50:04 2006
New Revision: 387660

URL: http://svn.apache.org/viewcvs?rev=387660&view=rev
Log:
Fix for HADOOP-44.  The error string for remote exceptions now contains the full remote stack trace.  Remote exceptions are now also re-thrown on the client as RemoteException rather than IOException, so that they can be distinguished from other IOExceptions.

Modified:
    lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Client.java
    lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Client.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Client.java?rev=387660&r1=387659&r2=387660&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Client.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Client.java Tue Mar 21 14:50:04 2006
@@ -29,6 +29,8 @@
 import java.io.FilterInputStream;
 import java.io.FilterOutputStream;
 
+import java.rmi.RemoteException;
+
 import java.util.Hashtable;
 import java.util.logging.Logger;
 import java.util.logging.Level;
@@ -298,7 +300,7 @@
       } while (!call.done && wait > 0);
 
       if (call.error != null) {
-        throw new IOException(call.error);
+        throw new RemoteException(call.error);
       } else if (!call.done) {
         throw new IOException("timed out waiting for response");
       } else {

Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java
URL: http://svn.apache.org/viewcvs/lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java?rev=387660&r1=387659&r2=387660&view=diff
==============================================================================
--- lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java (original)
+++ lucene/hadoop/trunk/src/java/org/apache/hadoop/ipc/Server.java Tue Mar 21 14:50:04 2006
@@ -22,6 +22,8 @@
 import java.io.DataOutputStream;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
+import java.io.StringWriter;
+import java.io.PrintWriter;
 
 import java.net.Socket;
 import java.net.ServerSocket;
@@ -214,10 +216,10 @@
             value = call(call.param);             // make the call
           } catch (IOException e) {
             LOG.log(Level.INFO, getName() + " call error: " + e, e);
-            error = e.getMessage();
+            error = getStackTrace(e);
           } catch (Exception e) {
             LOG.log(Level.INFO, getName() + " call error: " + e, e);
-            error = e.toString();
+            error = getStackTrace(e);
           }
             
           DataOutputStream out = call.connection.out;
@@ -236,6 +238,15 @@
       }
       LOG.info(getName() + ": exiting");
     }
+
+    private String getStackTrace(Throwable throwable) {
+      StringWriter stringWriter = new StringWriter();
+      PrintWriter printWriter = new PrintWriter(stringWriter);
+      throwable.printStackTrace(printWriter);
+      printWriter.flush();
+      return stringWriter.toString();
+    }
+
   }
   
   /** Constructs a server listening on the named port.  Parameters passed must