You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by js...@apache.org on 2009/06/16 02:49:34 UTC

svn commit: r785039 - in /hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec: ExecMapper.java ExecReducer.java

Author: jssarma
Date: Tue Jun 16 00:49:34 2009
New Revision: 785039

URL: http://svn.apache.org/viewvc?rev=785039&view=rev
Log:
Hive-557 - catch outofmemory exceptions in mapper/reducers

Modified:
    hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java
    hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecReducer.java

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java?rev=785039&r1=785038&r2=785039&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecMapper.java Tue Jun 16 00:49:34 2009
@@ -124,10 +124,15 @@
         }
 
         rp = reporter;
-      } catch (Exception e) {
+      } catch (Throwable e) {
         abort = true;
         e.printStackTrace();
-        throw new RuntimeException ("Map operator initialization failed", e);
+        if (e instanceof OutOfMemoryError) {
+          // Don't create a new object if we are already out of memory 
+          throw (OutOfMemoryError) e; 
+        } else {
+          throw new RuntimeException ("Map operator initialization failed", e);
+        }
       }
     }
 
@@ -137,10 +142,15 @@
       else
         // Since there is no concept of a group, we don't invoke startGroup/endGroup for a mapper
         mo.process((Writable)value);
-    } catch (Exception e) {
+    } catch (Throwable e) {
       abort = true;
       e.printStackTrace();
-      throw new RuntimeException ("Map operator process failed", e);
+      if (e instanceof OutOfMemoryError) {
+        // Don't create a new object if we are already out of memory 
+        throw (OutOfMemoryError) e; 
+      } else {
+        throw new RuntimeException (e.getMessage(), e);
+      }
     }
   }
 
@@ -151,10 +161,15 @@
         l4j.trace("Close called no row");
         mo.initialize(jc, null, null);
         rp = null;
-      } catch (Exception e) {
+      } catch (Throwable e) {
         abort = true;
         e.printStackTrace();
-        throw new RuntimeException ("Map operator close failed during initialize", e);
+        if (e instanceof OutOfMemoryError) {
+          // Don't create a new object if we are already out of memory 
+          throw (OutOfMemoryError) e; 
+        } else {
+          throw new RuntimeException ("Map operator close failed during initialize", e);
+        }
       }
     }
 

Modified: hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecReducer.java
URL: http://svn.apache.org/viewvc/hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecReducer.java?rev=785039&r1=785038&r2=785039&view=diff
==============================================================================
--- hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecReducer.java (original)
+++ hadoop/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ExecReducer.java Tue Jun 16 00:49:34 2009
@@ -118,10 +118,15 @@
         reducer.setOutputCollector(oc);
         reducer.initialize(jc, reporter, rowObjectInspector);
         rp = reporter;
-      } catch (Exception e) {
+      } catch (Throwable e) {
         abort = true;
         e.printStackTrace();
-        throw new RuntimeException ("Reduce operator process failed", e);
+        if (e instanceof OutOfMemoryError) {
+          // Don't create a new object if we are already out of memory 
+          throw (OutOfMemoryError) e; 
+        } else {
+          throw new RuntimeException ("Reduce operator initialization failed");
+        }
       }
     }
 
@@ -175,9 +180,14 @@
         reducer.process(row, rowObjectInspector[tag.get()], tag.get());
       }
 
-    } catch (Exception e) {
+    } catch (Throwable e) {
       abort = true;
-      throw new IOException (e);
+      if (e instanceof OutOfMemoryError) {
+        // Don't create a new object if we are already out of memory 
+        throw (OutOfMemoryError) e; 
+      } else {
+        throw new IOException (e);
+      }
     }
   }
 
@@ -198,10 +208,15 @@
         l4j.trace("Close called no row");
         reducer.initialize(jc, null, rowObjectInspector);
         rp = null;
-      } catch (Exception e) {
+      } catch (Throwable e) {
         abort = true;
         e.printStackTrace();
-        throw new RuntimeException ("Reduce operator close failed during initialize", e);
+        if (e instanceof OutOfMemoryError) {
+          // Don't create a new object if we are already out of memory 
+          throw (OutOfMemoryError) e; 
+        } else {
+          throw new RuntimeException ("Reduce operator close failed during initialize", e);
+        }
       }
     }