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/07/23 22:48:49 UTC
[jira] [Updated] (HBASE-8764) Some MasterMonitorCallable should
retry
[ https://issues.apache.org/jira/browse/HBASE-8764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
stack updated HBASE-8764:
-------------------------
Attachment: 8764.txt
Here is part one. Still have to do the master retrying part:
{code}
Refactor out retrying so can be used not only contacting regionservers but
also to retry master operations.
ServerCallable is broke. It implements Callable. It adds withRetries and
withoutRetries methods. What is the difference between withoutRetries and
call? We added a public 'prepare'. Should this be called before we do
'call'? ServerCallable is all about RegionServer calling; it can't be
used calling the Master.
This patch breaks apart ServerCallable moving the retrying mechanism into
a 'Caller' class; use a Caller to run a Callable.
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncProcess.java
Convert the MultiCallable to subclass RegionServerCallable and use
RpcRetryingCaller to run the multis.
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java
Create a ScannerCaller to use scanning.
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionUtils.java
Fix javadoc.
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnection.java
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionWrapper.java
Remove deprecated callable making calls.
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/HTable.java
Use new form getting a RpcRetryingCaller to run RegionServerCallables
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/MultiServerCallable.java
Implement RegionServerCallable instead of ServerCallable.
A hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionServerCallable.java
Callable for going to a regionserver
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetriesExhaustedException.java
Javadoc.
A hbase-client/src/main/java/org/apache/hadoop/hbase/client/RetryingCallable.java
A callable that can be retried.
A hbase-client/src/main/java/org/apache/hadoop/hbase/client/RpcRetryingCaller.java
Class to run retryable callers.
M hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java
Implement RegionServerCallable instead of ServerCallable.
A hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCaller.java
A caller used scanning.
D hbase-client/src/main/java/org/apache/hadoop/hbase/client/ServerCallable.java
Replaced by RpcRetryingCaller and RegionServerCaller. Its functionality has
been split between the two.
M hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RegionCoprocessorRpcChannel.java
M hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncProcess.java
M hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java
M hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/WALEditsReplaySink.java
M hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.java
Move to the new model subclassing RegionServerCallable and use RpcRetryingCaller to run
the rpcs.
{code}
> Some MasterMonitorCallable should retry
> ---------------------------------------
>
> Key: HBASE-8764
> URL: https://issues.apache.org/jira/browse/HBASE-8764
> Project: HBase
> Issue Type: Bug
> Components: IPC/RPC
> Affects Versions: 0.95.1
> Reporter: Elliott Clark
> Assignee: stack
> Fix For: 0.95.2
>
> Attachments: 8764.txt
>
>
> Calls in the admin that only get status should re-try.
> got a call stack like:
> {code}
> org.apache.hadoop.hbase.exceptions.PleaseHoldException: org.apache.hadoop.hbase.exceptions.PleaseHoldException: Master is initializing
> at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2266)
> at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1610)
> at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:1646)
> at org.apache.hadoop.hbase.protobuf.generated.MasterAdminProtos$MasterAdminService$2.callBlockingMethod(MasterAdminProtos.java:20930)
> at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2122)
> at org.apache.hadoop.hbase.ipc.RpcServer$Handler.run(RpcServer.java:1829)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
> at org.apache.hadoop.ipc.RemoteException.instantiateException(RemoteException.java:90)
> at org.apache.hadoop.ipc.RemoteException.unwrapRemoteException(RemoteException.java:79)
> at org.apache.hadoop.hbase.protobuf.ProtobufUtil.getRemoteException(ProtobufUtil.java:230)
> at org.apache.hadoop.hbase.client.HBaseAdmin.executeCallable(HBaseAdmin.java:2705)
> at org.apache.hadoop.hbase.client.HBaseAdmin.execute(HBaseAdmin.java:2674)
> at org.apache.hadoop.hbase.client.HBaseAdmin.createTableAsync(HBaseAdmin.java:524)
> at org.apache.hadoop.hbase.client.HBaseAdmin.createTable(HBaseAdmin.java:417)
> at org.apache.hadoop.hbase.client.HBaseAdmin.createTable(HBaseAdmin.java:349)
> at org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList$Generator.createSchema(IntegrationTestBigLinkedList.java:437)
> at org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList$Generator.runGenerator(IntegrationTestBigLinkedList.java:471)
> at org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList$Generator.run(IntegrationTestBigLinkedList.java:505)
> at org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList$Loop.runGenerator(IntegrationTestBigLinkedList.java:698)
> at org.apache.hadoop.hbase.test.IntegrationTestBigLinkedList$Loop.run(IntegrationTestBigLinkedList.java:748)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.hadoop.hbase.test.IntegrationTestBigLinkedListWithChaosMonkey.testContinuousIngest(IntegrationTestBigLinkedListWithChaosMonkey.java:80)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:601)
> 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.RunBefores.evaluate(RunBefores.java:26)
> at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
> at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
> at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> at org.junit.runners.Suite.runChild(Suite.java:127)
> at org.junit.runners.Suite.runChild(Suite.java:26)
> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
> at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
> at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
> at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
> at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
> at org.apache.hadoop.hbase.IntegrationTestsDriver.doWork(IntegrationTestsDriver.java:111)
> at org.apache.hadoop.hbase.util.AbstractHBaseTool.run(AbstractHBaseTool.java:108)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
> at org.apache.hadoop.hbase.IntegrationTestsDriver.main(IntegrationTestsDriver.java:47)
> {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