You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2012/01/30 15:12:22 UTC

svn commit: r1237667 - in /incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master: Master.java state/MergeStats.java

Author: ecn
Date: Mon Jan 30 14:12:22 2012
New Revision: 1237667

URL: http://svn.apache.org/viewvc?rev=1237667&view=rev
Log:
ACCUMULO-315 fix hang when table merge is unnecessary; added utility to print merge state

Modified:
    incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
    incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MergeStats.java

Modified: incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java?rev=1237667&r1=1237666&r2=1237667&view=diff
==============================================================================
--- incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java (original)
+++ incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/Master.java Mon Jan 30 14:12:22 2012
@@ -1494,13 +1494,14 @@ public class Master implements LiveTServ
                     deleteTablets(stats.getMergeInfo());
                   else
                     mergeMetadataRecords(stats.getMergeInfo());
-                  setMergeState(stats.getMergeInfo(), MergeState.COMPLETE);
-                  update = MergeState.NONE;
+                  setMergeState(stats.getMergeInfo(), update = MergeState.COMPLETE);
                 } catch (Exception ex) {
                   log.error("Unable merge metadata table records", ex);
                 }
               }
             }
+            if (update == MergeState.COMPLETE)
+              update = MergeState.NONE;
             setMergeState(stats.getMergeInfo(), update);
           }
         } catch (Exception ex) {

Modified: incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MergeStats.java
URL: http://svn.apache.org/viewvc/incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MergeStats.java?rev=1237667&r1=1237666&r2=1237667&view=diff
==============================================================================
--- incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MergeStats.java (original)
+++ incubator/accumulo/branches/1.4/src/server/src/main/java/org/apache/accumulo/server/master/state/MergeStats.java Mon Jan 30 14:12:22 2012
@@ -17,18 +17,26 @@
 package org.apache.accumulo.server.master.state;
 
 import java.io.IOException;
+import java.util.Map;
 import java.util.Map.Entry;
 
 import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.data.Key;
 import org.apache.accumulo.core.data.KeyExtent;
 import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
+import org.apache.accumulo.core.zookeeper.ZooUtil;
+import org.apache.accumulo.server.client.HdfsZooInstance;
+import org.apache.accumulo.server.security.SecurityConstants;
+import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
+import org.apache.hadoop.io.DataInputBuffer;
 import org.apache.hadoop.io.Text;
 import org.apache.log4j.Logger;
+import org.apache.zookeeper.data.Stat;
 
 public class MergeStats {
   final static private Logger log = Logger.getLogger(MergeStats.class);
@@ -172,4 +180,20 @@ public class MergeStats {
     }
     return chopped == verify.chopped && unassigned == verify.unassigned && unassigned == verify.total;
   }
+  
+  public static void main(String[] args) throws Exception {
+    Instance instance = HdfsZooInstance.getInstance();
+    Map<String,String> tableIdMap = instance.getConnector(SecurityConstants.getSystemCredentials()).tableOperations().tableIdMap();
+    for (String tableId : tableIdMap.keySet()) {
+      String path = ZooUtil.getRoot(instance.getInstanceID()) + Constants.ZTABLES + "/" + tableId.toString() + "/merge";
+      MergeInfo info = new MergeInfo();
+      if (ZooReaderWriter.getInstance().exists(path)) {
+        byte[] data = ZooReaderWriter.getInstance().getData(path, new Stat());
+        DataInputBuffer in = new DataInputBuffer();
+        in.reset(data, data.length);
+        info.readFields(in);
+      }
+      System.out.println(String.format("%25s  %10s %10s %s", tableIdMap.get(tableId), info.state, info.operation, info.range));
+    }
+  }
 }
\ No newline at end of file