-----------------------------------------------------------
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