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