You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2012/09/14 09:52:24 UTC

svn commit: r1384672 - in /hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase: regionserver/SplitLogWorker.java zookeeper/ZKSplitLog.java

Author: mbautin
Date: Fri Sep 14 07:52:24 2012
New Revision: 1384672

URL: http://svn.apache.org/viewvc?rev=1384672&view=rev
Log:
[0.89-fb] [HBASE-6680]  Fix split log worker names

Author: aaiyer

Summary:
 SplitLogWorker is using a human readable worker name that contains
 space to identify itself to SplitLogManager.

 eg:
  <machine name> Worker #X.

 SplitLogWorker uses <machine name>-worker-#number as its temporary directory.
 While this is guaranteed to be unique, it appears that SplitLogManager tries
 to discover the same directory using the "worker name" given by
 SplitLogWorker. This is required to move the split recovered edits files to
 the appropriate place.

 Making both the names same, so that SplitLogManager can discover the
 directory correctly.

Test Plan:
  deploy to test cluster.
  kill a rs.
  ensure that the split log manager discovers the destination correctly, and
  moves the split files.

Reviewers: pkhemani, kannan

Reviewed By: kannan

CC: hbase-eng@, michalgr

Differential Revision: https://phabricator.fb.com/D569555

Task ID: 1452354

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java?rev=1384672&r1=1384671&r2=1384672&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/SplitLogWorker.java Fri Sep 14 07:52:24 2012
@@ -92,9 +92,9 @@ public class SplitLogWorker implements R
   private static int numWorkers = 0;
 
   public SplitLogWorker(ZooKeeperWrapper watcher, Configuration conf,
-      String serverName, TaskExecutor executor) {
+      String workerName, TaskExecutor executor) {
     this.watcher = watcher;
-    this.workerName = serverName + " Worker-" + numWorkers++;
+    this.workerName = workerName;
     this.executor = executor;
     this.zkretries = conf.getLong("hbase.splitlog.zk.retries", 3);
   }
@@ -102,7 +102,15 @@ public class SplitLogWorker implements R
   public SplitLogWorker(ZooKeeperWrapper watcher, final Configuration conf,
       final String serverName, final ExecutorService logCloseThreadPool,
       final AtomicReference<HMasterRegionInterface> masterRef) {
-    this(watcher, conf, serverName, new TaskExecutor () {
+     this(watcher, conf, serverName, serverName + "-worker-" + numWorkers++,
+         logCloseThreadPool, masterRef);
+  }
+
+  private SplitLogWorker(ZooKeeperWrapper watcher, final Configuration conf,
+      final String serverName, final String workerName,
+      final ExecutorService logCloseThreadPool,
+      final AtomicReference<HMasterRegionInterface> masterRef) {
+    this(watcher, conf, workerName, new TaskExecutor () {
       @Override
       public Status exec(String filename, CancelableProgressable p) {
         Path rootdir;
@@ -130,7 +138,7 @@ public class SplitLogWorker implements R
             return Status.ERR;
           }
           String tmpname = ZKSplitLog.getSplitLogDirTmpComponent(
-              serverName + "-worker-" + numWorkers, filename);
+              workerName, filename);
           if (HLogSplitter.splitLogFileToTemp(rootdir, tmpname,
               st, fs, conf, p, logCloseThreadPool, masterRef.get()) == false) {
             return Status.PREEMPTED;

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java?rev=1384672&r1=1384671&r2=1384672&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/zookeeper/ZKSplitLog.java Fri Sep 14 07:52:24 2012
@@ -125,9 +125,9 @@ public class ZKSplitLog {
     }
 
     public String getServerName(byte[] data) {
-      String str = Bytes.toString(data);
-      String [] parts = str.split(" ");
-      return parts[1];
+      String writer = getWriterName(data);
+      String [] parts = writer.split("-worker");
+      return parts[0];
     }