You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by se...@apache.org on 2013/05/01 19:32:25 UTC

svn commit: r1478104 - in /hbase/trunk: hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ hbase-server/src/test/java/org/apache/hadoop/hbase/replication/

Author: sershe
Date: Wed May  1 17:32:25 2013
New Revision: 1478104

URL: http://svn.apache.org/r1478104
Log:
HBASE-8460 [replication] Fix the three TODOs in TestReplicationStateBasic.testReplicationQueues (Chris Trezzo)

Modified:
    hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateBasic.java
    hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.java

Modified: hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.java?rev=1478104&r1=1478103&r2=1478104&view=diff
==============================================================================
--- hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.java (original)
+++ hbase/trunk/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationQueuesZKImpl.java Wed May  1 17:32:25 2013
@@ -120,6 +120,10 @@ public class ReplicationQueuesZKImpl ext
   @Override
   public SortedMap<String, SortedSet<String>> claimQueues(String regionserverZnode) {
     SortedMap<String, SortedSet<String>> newQueues = new TreeMap<String, SortedSet<String>>();
+    if (ZKUtil.joinZNode(this.queuesZNode, regionserverZnode).equals(this.myQueuesZnode)) {
+      LOG.warn("An attempt was made to claim our own queues on region server " + regionserverZnode);
+      return newQueues;
+    }
     // check whether there is multi support. If yes, use it.
     if (conf.getBoolean(HConstants.ZOOKEEPER_USEMULTI, true)) {
       LOG.info("Atomically moving " + regionserverZnode + "'s hlogs to my queue");
@@ -337,7 +341,8 @@ public class ReplicationQueuesZKImpl ext
           try {
             position = parseHLogPositionFrom(positionBytes);
           } catch (DeserializationException e) {
-            LOG.warn("Failed parse of hlog position from the following znode: " + z);
+            LOG.warn("Failed parse of hlog position from the following znode: " + z
+                + ", Exception: " + e);
           }
           LOG.debug("Creating " + hlog + " with data " + position);
           String child = ZKUtil.joinZNode(newClusterZnode, hlog);
@@ -382,6 +387,9 @@ public class ReplicationQueuesZKImpl ext
    * @throws DeserializationException
    */
   private long parseHLogPositionFrom(final byte[] bytes) throws DeserializationException {
+    if(bytes == null) {
+      throw new DeserializationException("Unable to parse null HLog position.");
+    }
     if (ProtobufUtil.isPBMagicPrefix(bytes)) {
       int pblen = ProtobufUtil.lengthOfPBMagic();
       ZooKeeperProtos.ReplicationHLogPosition.Builder builder =

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateBasic.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateBasic.java?rev=1478104&r1=1478103&r2=1478104&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateBasic.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateBasic.java Wed May  1 17:32:25 2013
@@ -94,13 +94,11 @@ public abstract class TestReplicationSta
     rq1.removeLog("bogus", "bogus");
     rq1.removeAllQueues();
     assertNull(rq1.getAllQueues());
-    // TODO fix NPE if getting a log position on a file that does not exist
-    // assertEquals(0, rq1.getLogPosition("bogus", "bogus"));
+    assertEquals(0, rq1.getLogPosition("bogus", "bogus"));
     assertNull(rq1.getLogsInQueue("bogus"));
     assertEquals(0, rq1.claimQueues(new ServerName("bogus", 1234, -1L).toString()).size());
 
-    // TODO test setting a log position on a bogus file
-    // rq1.setLogPosition("bogus", "bogus", 5L);
+    rq1.setLogPosition("bogus", "bogus", 5L);
 
     populateQueues();
 
@@ -124,8 +122,8 @@ public abstract class TestReplicationSta
     assertEquals(5, queues.size());
     assertEquals(1, rq2.getListOfReplicators().size());
 
-    // TODO test claimQueues on yourself
-    // rq2.claimQueues(server2);
+    // Try to claim our own queues
+    assertEquals(0, rq2.claimQueues(server2).size());
 
     assertEquals(6, rq2.getAllQueues().size());
 

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.java?rev=1478104&r1=1478103&r2=1478104&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationStateZKImpl.java Wed May  1 17:32:25 2013
@@ -20,6 +20,8 @@ package org.apache.hadoop.hbase.replicat
 
 import java.io.IOException;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.MediumTests;
@@ -38,6 +40,8 @@ import org.junit.experimental.categories
 @Category(MediumTests.class)
 public class TestReplicationStateZKImpl extends TestReplicationStateBasic {
 
+  private static final Log LOG = LogFactory.getLog(TestReplicationStateZKImpl.class);
+
   private static Configuration conf;
   private static HBaseTestingUtility utility;
   private static ZooKeeperWatcher zkw;
@@ -104,6 +108,7 @@ public class TestReplicationStateZKImpl 
 
     @Override
     public void abort(String why, Throwable e) {
+      LOG.info("Aborting " + serverName);
       this.isAborted = true;
     }