Author: stack
Date: Thu Jul 28 21:12:50 2011
New Revision: 1152003

URL: http://svn.apache.org/viewvc?rev=1152003&view=rev
Log:
 HBASE-3065  Retry all 'retryable' zk operations; e.g. connection loss; 
addendum... split log zk code url encodes which interacts w/ new naming of 
znodes that this patch introduces... this commit fixes testslitlogworker

Modified:
    
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java
    
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.java

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java?rev=1152003&r1=1152002&r2=1152003&view=diff
==============================================================================
--- 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
 (original)
+++ 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
 Thu Jul 28 21:12:50 2011
@@ -414,8 +414,8 @@ public class SplitLogWorker extends ZooK
               ! TaskState.TASK_DONE.equals(data, serverName) &&
               ! TaskState.TASK_ERR.equals(data, serverName) &&
               ! TaskState.TASK_RESIGNED.equals(data, serverName)) {
-            LOG.info("task " + taskpath + " preempted from server " +
-                serverName + " ... current task state and owner - " +
+            LOG.info("task " + taskpath + " preempted from " +
+                serverName + ", current task state and owner=" +
                 new String(data));
             stopTask();
           }

Modified: 
hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java?rev=1152003&r1=1152002&r2=1152003&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java 
(original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java 
Thu Jul 28 21:12:50 2011
@@ -51,7 +51,8 @@ public class ZKSplitLog {
   public static final int DEFAULT_UNASSIGNED_TIMEOUT = (3 * 60 * 1000); //3 min
 
   /**
-   * Gets the full path node name for the log file being split
+   * Gets the full path node name for the log file being split.
+   * This method will url encode the filename.
    * @param zkw zk reference
    * @param filename log file name (only the basename)
    */

Modified: 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.java
URL: 
http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.java?rev=1152003&r1=1152002&r2=1152003&view=diff
==============================================================================
--- 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.java
 (original)
+++ 
hbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSplitLogWorker.java
 Thu Jul 28 21:12:50 2011
@@ -34,6 +34,7 @@ import java.util.concurrent.atomic.Atomi
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.hbase.util.CancelableProgressable;
 import org.apache.hadoop.hbase.zookeeper.ZKSplitLog;
 import org.apache.hadoop.hbase.zookeeper.ZKSplitLog.TaskState;
@@ -264,29 +265,29 @@ public class TestSplitLogWorker {
     Thread.yield(); // let the worker start
     Thread.sleep(100);
 
-    zkw.getRecoverableZooKeeper().create(ZKSplitLog.getEncodedNodeName(zkw, 
"task"),
-        TaskState.TASK_UNASSIGNED.get("manager"), Ids.OPEN_ACL_UNSAFE,
-        CreateMode.PERSISTENT);
+    String task = ZKSplitLog.getEncodedNodeName(zkw, "task");
+    zkw.getRecoverableZooKeeper().create(task,
+      TaskState.TASK_UNASSIGNED.get("manager"), Ids.OPEN_ACL_UNSAFE,
+      CreateMode.PERSISTENT);
 
     waitForCounter(tot_wkr_task_acquired, 0, 1, 1000);
     // now the worker is busy doing the above task
 
     // preempt the task, have it owned by another worker
-    ZKUtil.setData(zkw, ZKSplitLog.getEncodedNodeName(zkw, "task"),
-        TaskState.TASK_UNASSIGNED.get("manager"));
+    ZKUtil.setData(zkw, task, TaskState.TASK_UNASSIGNED.get("manager"));
     waitForCounter(tot_wkr_preempt_task, 0, 1, 1000);
 
     // create a RESCAN node
-    zkw.getRecoverableZooKeeper().create(ZKSplitLog.getEncodedNodeName(zkw, 
"RESCAN"),
-        TaskState.TASK_UNASSIGNED.get("manager"), Ids.OPEN_ACL_UNSAFE,
-        CreateMode.PERSISTENT_SEQUENTIAL);
+    String rescan = ZKSplitLog.getEncodedNodeName(zkw, "RESCAN");
+    rescan = zkw.getRecoverableZooKeeper().create(rescan,
+      TaskState.TASK_UNASSIGNED.get("manager"), Ids.OPEN_ACL_UNSAFE,
+      CreateMode.PERSISTENT_SEQUENTIAL);
 
     waitForCounter(tot_wkr_task_acquired, 1, 2, 1000);
     // RESCAN node might not have been processed if the worker became busy
     // with the above task. preempt the task again so that now the RESCAN
     // node is processed
-    ZKUtil.setData(zkw, ZKSplitLog.getEncodedNodeName(zkw, "task"),
-        TaskState.TASK_UNASSIGNED.get("manager"));
+    ZKUtil.setData(zkw, task, TaskState.TASK_UNASSIGNED.get("manager"));
     waitForCounter(tot_wkr_preempt_task, 1, 2, 1000);
     waitForCounter(tot_wkr_task_acquired_rescan, 0, 1, 1000);
 
@@ -296,8 +297,11 @@ public class TestSplitLogWorker {
     for (String node : nodes) {
       num++;
       if (node.startsWith("RESCAN")) {
-        assertTrue(TaskState.TASK_DONE.equals(ZKUtil.getData(zkw,
-            ZKSplitLog.getEncodedNodeName(zkw, node)), "svr"));
+        String name = ZKSplitLog.getEncodedNodeName(zkw, node);
+        String fn = ZKSplitLog.getFileName(name);
+        byte [] data = ZKUtil.getData(zkw, ZKUtil.joinZNode(zkw.splitLogZNode, 
fn));
+        String datastr = Bytes.toString(data);
+        assertTrue("data=" + datastr, TaskState.TASK_DONE.equals(data, "svr"));
       }
     }
     assertEquals(2, num);


Reply via email to