-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/10342/
-----------------------------------------------------------

(Updated April 8, 2013, 5:21 p.m.)


Review request for giraph.


Summary (updated)
-----------------

 More information on runtime exceptions for Callables 


Description
-------

We ocassionally see errors in user code such as

java.lang.IllegalStateException: run: Caught an unrecoverable exception 
waitFor: ExecutionException occurred while waiting for 
org.apache.giraph.utils.ProgressableUtils$FutureWaitable@7215f9e4 at 
org.apache.giraph.graph.GraphMapper.run(GraphMapper.java:102) at 
org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:632) at 
org.apache.hadoop.mapred.MapTask.run(MapTask.java:307) at 
org.apache.hadoop.mapred.Child.main(Child.java:171) Caused by: 
java.lang.IllegalStateException: waitFor: ExecutionException occurred while 
waiting for org.apache.giraph.utils.ProgressableUtils$FutureWaitable@7215f9e4 
at 
org.apache.giraph.utils.ProgressableUtils.waitFor(ProgressableUtils.java:145) 
at 
org.apache.giraph.utils.ProgressableUtils.waitForever(ProgressableUtils.java:105)
 at 
org.apache.giraph.utils.ProgressableUtils.getFutureResult(ProgressableUtils.java:67)
 at 
org.apache.giraph.graph.GraphTaskManager.processGraphPartitions(GraphTaskManager.java:738)
 at org.apache.giraph.graph.GraphTaskManager.execute(GraphTaskManager.java:267) 
at org.apache.giraph.graph.GraphMapper.run(GraphMapper.java:92) ... 3 more 
Caused by: java.util.concurrent.ExecutionException: 
java.lang.ArrayIndexOutOfBoundsException at 
java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:262) at 
java.util.concurrent.FutureTask.get(FutureTask.java:119) at 
org.apache.giraph.utils.ProgressableUtils$FutureWaitable.waitFor(ProgressableUtils.java:232)
 at 
org.apache.giraph.utils.ProgressableUtils.waitFor(ProgressableUtils.java:137) 
... 8 more Caused by: java.lang.ArrayIndexOutOfBoundsException ,Job killed

But it doesn't provide a lot of information about the actual stack trace in the 
user land code of the callable. We can wrap the invocation of the 
Callable#run() to get access to this stack, which can be very helpful for 
debugging user code.


This addresses bug GIRAPH-609.
    https://issues.apache.org/jira/browse/GIRAPH-609


Diffs
-----

  giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java 
8ed44e8377e2b8d517b82b2c3175db2ed60ba5c8 
  giraph-core/src/main/java/org/apache/giraph/master/BspServiceMaster.java 
7d02533097875867ffcecdc98d3639e814694981 
  giraph-core/src/main/java/org/apache/giraph/utils/LogStacktraceCallable.java 
PRE-CREATION 
  giraph-core/src/main/java/org/apache/giraph/worker/BspServiceWorker.java 
061df6876658e60be76afec815f67f03d7c6c0ea 

Diff: https://reviews.apache.org/r/10342/diff/


Testing
-------

Forced a exception in a callable and observed the stack trace in user-code.

mvn clean verify.


Thanks,

Avery Ching

Reply via email to