You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2016/08/30 08:57:38 UTC
hbase git commit: HBASE-16510 Reset RpcController before retry
Repository: hbase
Updated Branches:
refs/heads/master c000f29e4 -> 0d05c7518
HBASE-16510 Reset RpcController before retry
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/0d05c751
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/0d05c751
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/0d05c751
Branch: refs/heads/master
Commit: 0d05c75184557d0961aacb0a6923cf804ff2a74c
Parents: c000f29
Author: zhangduo <zh...@apache.org>
Authored: Mon Aug 29 22:54:29 2016 +0800
Committer: zhangduo <zh...@apache.org>
Committed: Tue Aug 30 16:56:28 2016 +0800
----------------------------------------------------------------------
.../hadoop/hbase/client/MasterCallable.java | 3 ++-
.../client/NoncedRegionServerCallable.java | 5 ++---
.../hbase/client/RegionServerCallable.java | 22 ++++++++++----------
.../hbase/client/TestRpcControllerFactory.java | 9 ++++----
4 files changed, 20 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/0d05c751/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MasterCallable.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MasterCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MasterCallable.java
index 8c4da68..e279a39 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MasterCallable.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MasterCallable.java
@@ -92,6 +92,7 @@ abstract class MasterCallable<V> implements RetryingCallable<V>, Closeable {
public V call(int callTimeout) throws IOException {
try {
if (this.rpcController != null) {
+ this.rpcController.reset();
this.rpcController.setCallTimeout(callTimeout);
}
return rpcCall();
@@ -129,7 +130,7 @@ abstract class MasterCallable<V> implements RetryingCallable<V>, Closeable {
/**
* @param regionName RegionName. If hbase:meta, we'll set high priority.
*/
- void setPriority(final byte [] regionName) {
+ void setPriority(final byte[] regionName) {
if (isMetaRegion(regionName)) {
setPriority(TableName.META_TABLE_NAME);
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/0d05c751/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
index 21e77bd..8fbaa90 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/NoncedRegionServerCallable.java
@@ -63,9 +63,6 @@ public abstract class NoncedRegionServerCallable<T> extends AbstractRegionServer
TableName tableName, byte [] row) {
super(connection, tableName, row);
this.rpcController = rpcController;
- if (this.rpcController != null) {
- this.rpcController.setPriority(tableName);
- }
this.nonce = getConnection().getNonceGenerator().newNonce();
}
@@ -96,6 +93,8 @@ public abstract class NoncedRegionServerCallable<T> extends AbstractRegionServer
@Override
public T call(int callTimeout) throws IOException {
if (this.rpcController != null) {
+ this.rpcController.reset();
+ this.rpcController.setPriority(tableName);
this.rpcController.setCallTimeout(callTimeout);
}
try {
http://git-wip-us.apache.org/repos/asf/hbase/blob/0d05c751/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionServerCallable.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionServerCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionServerCallable.java
index 3771c50..baf99a0 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionServerCallable.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RegionServerCallable.java
@@ -70,12 +70,6 @@ public abstract class RegionServerCallable<T> extends AbstractRegionServerCallab
TableName tableName, byte [] row) {
super(connection, tableName, row);
this.rpcController = rpcController;
- // If it is an instance of PayloadCarryingRpcController, we can set priority on the
- // controller based off the tableName. RpcController may be null in tests when mocking so allow
- // for null controller.
- if (this.rpcController != null && this.rpcController instanceof PayloadCarryingRpcController) {
- ((PayloadCarryingRpcController)this.rpcController).setPriority(tableName);
- }
}
void setClientByServiceName(ServerName service) throws IOException {
@@ -106,11 +100,17 @@ public abstract class RegionServerCallable<T> extends AbstractRegionServerCallab
@Override
public T call(int callTimeout) throws IOException {
try {
- if (this.rpcController != null &&
- this.rpcController instanceof PayloadCarryingRpcController) {
- ((PayloadCarryingRpcController)this.rpcController).setCallTimeout(callTimeout);
- // Do a reset of the CellScanner in case we are carrying any Cells since last time through.
- setRpcControllerCellScanner(null);
+ if (this.rpcController != null) {
+ // Do a reset to clear previous states, such as CellScanner.
+ this.rpcController.reset();
+ if (this.rpcController instanceof PayloadCarryingRpcController) {
+ PayloadCarryingRpcController pcrc = (PayloadCarryingRpcController)this.rpcController;
+ // If it is an instance of PayloadCarryingRpcController, we can set priority on the
+ // controller based off the tableName. RpcController may be null in tests when mocking so allow
+ // for null controller.
+ pcrc.setPriority(tableName);
+ pcrc.setCallTimeout(callTimeout);
+ }
}
return rpcCall();
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/0d05c751/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRpcControllerFactory.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRpcControllerFactory.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRpcControllerFactory.java
index 34d3c91..1f093fe 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRpcControllerFactory.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestRpcControllerFactory.java
@@ -20,6 +20,9 @@ package org.apache.hadoop.hbase.client;
import static org.apache.hadoop.hbase.HBaseTestingUtility.fam1;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import com.google.common.collect.Lists;
import java.io.IOException;
import java.util.List;
@@ -44,8 +47,6 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import com.google.common.collect.Lists;
-
@Category({MediumTests.class, ClientTests.class})
public class TestRpcControllerFactory {
@@ -202,9 +203,9 @@ public class TestRpcControllerFactory {
}
int verifyCount(Integer counter) {
- assertEquals(counter.intValue(), CountingRpcController.TABLE_PRIORITY.get());
+ assertTrue(CountingRpcController.TABLE_PRIORITY.get() >= counter.intValue());
assertEquals(0, CountingRpcController.INT_PRIORITY.get());
- return counter + 1;
+ return CountingRpcController.TABLE_PRIORITY.get() + 1;
}
@Test