Well, not to my knowledge, anything could be interrupting the thread (because it's waiting) on the remote machine which is propagating it as an IOException.

So we don't know in this case what caused the interruption, as that stack trace is missing.

Do you have logging activated at the remote end?

I've attached a patch that will record the stack trace, which should identify interrupt cause.

But you'll need to build River from source.

Alternatively I can commit the patch and you can pick up a Hudson build?

Regards,

Peter.


Bryan Thompson wrote:
I am curious whether there is any known problem where an interrupt could be 
propagated into the wrong thread by the jini/river library (this is against 
river 2.2), or perhaps retained across the reuse of a thread for another task.

The critical bit of the stack trace that I am seeing is:

Caused by: java.io.IOException: request I/O interrupted
        at 
com.sun.jini.jeri.internal.mux.Session$MuxInputStream.read(Session.java:833)
        at 
net.jini.jeri.connection.ConnectionManager$Outbound$Input.read(ConnectionManager.java:550)
        at 
net.jini.jeri.BasicObjectEndpoint.executeCall(BasicObjectEndpoint.java:410)
        at 
net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:806)
        ... 12 more

There are definitely times when we interrupt operations, but I am having a very 
difficult time finding a reason why an interrupt would have been generated 
during this phase of query processing by our application.  However, there are 
heavy concurrent operations going on which could cause interrupts.  Is it 
possible that the interrupt is being propagated into another thread by mistake?

The full stack trace is:

java.util.concurrent.ExecutionException: java.rmi.UnmarshalException: exception 
unmarshalling response; nested exception is:
        java.io.IOException: request I/O interrupted
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
        at java.util.concurrent.FutureTask.get(FutureTask.java:83)
        at 
com.bigdata.service.ndx.ClientIndexView.runParallel(ClientIndexView.java:1742)
        at 
com.bigdata.service.ndx.ClientIndexView.runTasks(ClientIndexView.java:1656)
        at 
com.bigdata.service.ndx.ClientIndexView.submit(ClientIndexView.java:1421)
        at 
com.bigdata.service.ndx.ClientIndexView.submit(ClientIndexView.java:1338)
        at 
com.bigdata.service.ndx.ClientIndexView.rangeCount(ClientIndexView.java:609)
        at 
com.bigdata.relation.accesspath.AccessPath.historicalRangeCount(AccessPath.java:1357)
        at 
com.bigdata.relation.accesspath.AccessPath.rangeCount(AccessPath.java:1325)
        at 
com.bigdata.rdf.sparql.ast.optimizers.ASTStaticJoinOptimizer.attachRangeCounts(ASTStaticJoinOptimizer.java:510)
        at 
com.bigdata.rdf.sparql.ast.optimizers.ASTStaticJoinOptimizer.optimize(ASTStaticJoinOptimizer.java:312)
        at 
com.bigdata.rdf.sparql.ast.optimizers.ASTStaticJoinOptimizer.optimize(ASTStaticJoinOptimizer.java:457)
        at 
com.bigdata.rdf.sparql.ast.optimizers.ASTStaticJoinOptimizer.optimize(ASTStaticJoinOptimizer.java:457)
        at 
com.bigdata.rdf.sparql.ast.optimizers.ASTStaticJoinOptimizer.optimize(ASTStaticJoinOptimizer.java:179)
        at 
com.bigdata.rdf.sparql.ast.optimizers.ASTOptimizerList.optimize(ASTOptimizerList.java:92)
        at 
com.bigdata.rdf.sparql.ast.eval.AST2BOpUtility.convert(AST2BOpUtility.java:193)
        at 
com.bigdata.rdf.sparql.ast.eval.ASTEvalHelper.evaluateGraphQuery(ASTEvalHelper.java:314)
        at 
com.bigdata.rdf.sail.BigdataSailGraphQuery.evaluate(BigdataSailGraphQuery.java:91)
        at 
org.openrdf.repository.sail.SailGraphQuery.evaluate(SailGraphQuery.java:102)
        at 
com.bigdata.rdf.sail.webapp.BigdataRDFContext$GraphQueryTask.doQuery(BigdataRDFContext.java:799)
        at 
com.bigdata.rdf.sail.webapp.BigdataRDFContext$AbstractQueryTask.call(BigdataRDFContext.java:632)
        at 
com.bigdata.rdf.sail.webapp.BigdataRDFContext$AbstractQueryTask.call(BigdataRDFContext.java:280)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.rmi.UnmarshalException: exception unmarshalling response; 
nested exception is:
        java.io.IOException: request I/O interrupted
        at 
net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:847)
        at 
net.jini.jeri.BasicInvocationHandler.invokeRemoteMethod(BasicInvocationHandler.java:659)
        at 
net.jini.jeri.BasicInvocationHandler.invoke(BasicInvocationHandler.java:528)
        at $Proxy3.submit(Unknown Source)
        at 
com.bigdata.service.ndx.AbstractDataServiceProcedureTask.submit(AbstractDataServiceProcedureTask.java:348)
        at 
com.bigdata.service.ndx.AbstractDataServiceProcedureTask.submit(AbstractDataServiceProcedureTask.java:292)
        at 
com.bigdata.service.ndx.AbstractDataServiceProcedureTask.call(AbstractDataServiceProcedureTask.java:215)
        at 
com.bigdata.service.ndx.AbstractDataServiceProcedureTask.call(AbstractDataServiceProcedureTask.java:45)
        ... 5 more
Caused by: java.io.IOException: request I/O interrupted
        at 
com.sun.jini.jeri.internal.mux.Session$MuxInputStream.read(Session.java:833)
        at 
net.jini.jeri.connection.ConnectionManager$Outbound$Input.read(ConnectionManager.java:550)
        at 
net.jini.jeri.BasicObjectEndpoint.executeCall(BasicObjectEndpoint.java:410)
        at 
net.jini.jeri.BasicInvocationHandler.invokeRemoteMethodOnce(BasicInvocationHandler.java:806)
        ... 12 more
Caused by: java.lang.InterruptedException
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:485)
        at 
com.sun.jini.jeri.internal.mux.Session$MuxInputStream.read(Session.java:829)
... 15 more

# This patch file was generated by NetBeans IDE
# Following Index: paths are relative to: /opt/src/river/trunk/src/com/sun/jini/jeri/internal/mux
# This patch can be applied using context Tools: Patch action on respective folder.
# It uses platform neutral UTF-8 encoding and \n newlines.
# Above lines and this line are ignored by the patching process.
Index: Session.java
--- Session.java Base (BASE)
+++ Session.java Locally Modified (Based On LOCAL)
@@ -830,7 +830,8 @@
 		    } catch (InterruptedException e) {
 			String message = "request I/O interrupted";
 			setDown(message, e);
-			IOException ioe = new IOException(message);
+                        Throwable t = e.fillInStackTrace();
+			IOException ioe = new IOException(message, t);
 			ioe.initCause(e);
 			throw ioe;
 		    }

Reply via email to