You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2013/08/23 07:31:53 UTC
[jira] [Commented] (HBASE-9318) Procedure#waitForLatch may not
throw error even there is one
[ https://issues.apache.org/jira/browse/HBASE-9318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13748299#comment-13748299 ]
stack commented on HBASE-9318:
------------------------------
lgtm
If passes hadoopqa and works on your centos machine, +1
> Procedure#waitForLatch may not throw error even there is one
> ------------------------------------------------------------
>
> Key: HBASE-9318
> URL: https://issues.apache.org/jira/browse/HBASE-9318
> Project: HBase
> Issue Type: Bug
> Reporter: Jeffrey Zhong
> Assignee: Jeffrey Zhong
> Attachments: hbase-9318.patch
>
>
> On Suse, TestProcedureCoordinator#testUnreachableControllerDuringCommit often fails with stack trace pasted at the bottom.
> The failure is due to a race condition that if current procedure throws error in the last wait because we don't check error after while wait loop.
> When I looked at the failure, I found the related code in file ForeignExceptionDispatcher#receive may have an issue. Though we create a new exception, we still pass e to dispatch when e is null. [~jmhsieh] Do you know if it's by design?
> {code}
> if (e != null) {
> exception = e;
> } else {
> exception = new ForeignException(name, "");
> }
> // notify all the listeners
> dispatch(e);
> {code}
> {code}
> Test case failure stack trace:
> java.io.IOException via some op:java.io.IOException: Failed to reach controller during prepare
> at org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher.rethrowException(ForeignExceptionDispatcher.java:85)
> at org.apache.hadoop.hbase.procedure.Procedure.waitForLatch(Procedure.java:371)
> at org.apache.hadoop.hbase.procedure.Procedure.waitForCompleted(Procedure.java:343)
> at org.apache.hadoop.hbase.procedure.TestProcedureCoordinator.testUnreachableControllerDuringCommit(TestProcedureCoordinator.java:171)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
> at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
> at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)
> Caused by: java.io.IOException: Failed to reach controller during prepare
> at org.apache.hadoop.hbase.procedure.Procedure.call(Procedure.java:212)
> at org.apache.hadoop.hbase.procedure.Procedure.call(Procedure.java:68)
> 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)
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira