Repository: hbase
Updated Branches:
  refs/heads/master 8dbbe96e0 -> 86be690b0


HBASE-14840 Sink cluster reports data replication request as success
though the data is not replicated (Ashish Singhi)


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/86be690b
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/86be690b
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/86be690b

Branch: refs/heads/master
Commit: 86be690b0723e814a655ad0ae8a6577d7111c1f2
Parents: 8dbbe96
Author: ramkrishna <[email protected]>
Authored: Fri Nov 20 15:57:10 2015 +0530
Committer: ramkrishna <[email protected]>
Committed: Fri Nov 20 15:57:10 2015 +0530

----------------------------------------------------------------------
 .../hbase/regionserver/RSRpcServices.java       |  6 +++--
 .../replication/TestMasterReplication.java      | 27 ++++++++++++++++++++
 2 files changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/86be690b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 5729334..d94e11c 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -1794,16 +1794,18 @@ public class RSRpcServices implements 
HBaseRPCErrorHandler,
   public ReplicateWALEntryResponse replicateWALEntry(final RpcController 
controller,
       final ReplicateWALEntryRequest request) throws ServiceException {
     try {
+      checkOpen();
       if (regionServer.replicationSinkHandler != null) {
-        checkOpen();
         requestCount.increment();
         List<WALEntry> entries = request.getEntryList();
         CellScanner cellScanner = 
((PayloadCarryingRpcController)controller).cellScanner();
         
regionServer.getRegionServerCoprocessorHost().preReplicateLogEntries(entries, 
cellScanner);
         regionServer.replicationSinkHandler.replicateLogEntries(entries, 
cellScanner);
         
regionServer.getRegionServerCoprocessorHost().postReplicateLogEntries(entries, 
cellScanner);
+        return ReplicateWALEntryResponse.newBuilder().build();
+      } else {
+        throw new ServiceException("Replication services are not initialized 
yet");
       }
-      return ReplicateWALEntryResponse.newBuilder().build();
     } catch (IOException ie) {
       throw new ServiceException(ie);
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/86be690b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestMasterReplication.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestMasterReplication.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestMasterReplication.java
index 184fd14..455a790 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestMasterReplication.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestMasterReplication.java
@@ -48,6 +48,8 @@ import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver;
 import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;
 import org.apache.hadoop.hbase.coprocessor.ObserverContext;
 import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment;
+import org.apache.hadoop.hbase.regionserver.HRegionServer;
+import org.apache.hadoop.hbase.regionserver.RSRpcServices;
 import org.apache.hadoop.hbase.regionserver.wal.WALEdit;
 import org.apache.hadoop.hbase.testclassification.LargeTests;
 import org.apache.hadoop.hbase.testclassification.ReplicationTests;
@@ -59,6 +61,8 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import com.google.protobuf.ServiceException;
+
 @Category({ReplicationTests.class, LargeTests.class})
 public class TestMasterReplication {
 
@@ -245,6 +249,29 @@ public class TestMasterReplication {
     }
   }
 
+  /*
+   * Test RSRpcServices#replicateWALEntry when replication is disabled. This 
is to simulate
+   * HBASE-14840
+   */
+  @Test(timeout = 180000, expected = ServiceException.class)
+  public void testReplicateWALEntryWhenReplicationIsDisabled() throws 
Exception {
+    LOG.info("testSimplePutDelete");
+    baseConfiguration.setBoolean(HConstants.REPLICATION_ENABLE_KEY, false);
+    Table[] htables = null;
+    try {
+      startMiniClusters(1);
+      createTableOnClusters(table);
+      htables = getHTablesOnClusters(tableName);
+
+      HRegionServer rs = utilities[0].getRSForFirstRegionInTable(tableName);
+      RSRpcServices rsrpc = new RSRpcServices(rs);
+      rsrpc.replicateWALEntry(null, null);
+    } finally {
+      close(htables);
+      shutDownMiniClusters();
+    }
+  }
+
   @After
   public void tearDown() throws IOException {
     configurations = null;

Reply via email to