Return-Path: X-Original-To: apmail-incubator-accumulo-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-accumulo-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 7EB469D3F for ; Sat, 22 Oct 2011 01:13:44 +0000 (UTC) Received: (qmail 73805 invoked by uid 500); 22 Oct 2011 01:13:44 -0000 Delivered-To: apmail-incubator-accumulo-commits-archive@incubator.apache.org Received: (qmail 73777 invoked by uid 500); 22 Oct 2011 01:13:44 -0000 Mailing-List: contact accumulo-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: accumulo-dev@incubator.apache.org Delivered-To: mailing list accumulo-commits@incubator.apache.org Received: (qmail 73770 invoked by uid 99); 22 Oct 2011 01:13:44 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Oct 2011 01:13:44 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 22 Oct 2011 01:13:34 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id B009B2388900; Sat, 22 Oct 2011 01:13:10 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1187617 - in /incubator/accumulo/trunk/src: core/src/main/java/org/apache/accumulo/core/zookeeper/ server/src/main/java/org/apache/accumulo/server/fate/ server/src/main/java/org/apache/accumulo/server/gc/ server/src/main/java/org/apache/ac... Date: Sat, 22 Oct 2011 01:13:08 -0000 To: accumulo-commits@incubator.apache.org From: kturner@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20111022011310.B009B2388900@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kturner Date: Sat Oct 22 01:13:07 2011 New Revision: 1187617 URL: http://svn.apache.org/viewvc?rev=1187617&view=rev Log: ACCUMULO-9 Made accumulo more tolerant of all zookeepers being offline Added: incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/IZooReader.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/IZooReaderWriter.java Modified: incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooReader.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/fate/ZooStore.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/gc/GarbageCollectWriteAheadLogs.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/Utils.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tserverOps/ShutdownTServer.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/security/ZKAuthenticator.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/TabletServer.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/UniqueNameAllocator.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestClean.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestWriter.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/SplitRecoveryTest.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/RunPreUpgradeCheck.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/ZooKeeperUpgrade.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/CleanZookeeper.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DeleteZooInstance.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/Initialize.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ListInstances.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ZooZap.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooLock.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooQueueLock.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReservation.java Added: incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/IZooReader.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/IZooReader.java?rev=1187617&view=auto ============================================================================== --- incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/IZooReader.java (added) +++ incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/IZooReader.java Sat Oct 22 01:13:07 2011 @@ -0,0 +1,25 @@ +package org.apache.accumulo.core.zookeeper; + +import java.util.List; + +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.Watcher; +import org.apache.zookeeper.data.Stat; + +public interface IZooReader { + + public abstract byte[] getData(String zPath, Stat stat) throws KeeperException, InterruptedException; + + public abstract Stat getStatus(String zPath) throws KeeperException, InterruptedException; + + public abstract Stat getStatus(String zPath, Watcher watcher) throws KeeperException, InterruptedException; + + public abstract List getChildren(String zPath) throws KeeperException, InterruptedException; + + public abstract List getChildren(String zPath, Watcher watcher) throws KeeperException, InterruptedException; + + public abstract boolean exists(String zPath) throws KeeperException, InterruptedException; + + public abstract boolean exists(String zPath, Watcher watcher) throws KeeperException, InterruptedException; + +} \ No newline at end of file Modified: incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooReader.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooReader.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooReader.java (original) +++ incubator/accumulo/trunk/src/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooReader.java Sat Oct 22 01:13:07 2011 @@ -24,7 +24,7 @@ import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.Stat; -public class ZooReader { +public class ZooReader implements IZooReader { protected String keepers; protected int timeout; @@ -37,30 +37,37 @@ public class ZooReader { return getSession(keepers, timeout, null); } + @Override public byte[] getData(String zPath, Stat stat) throws KeeperException, InterruptedException { return getZooKeeper().getData(zPath, false, stat); } + @Override public Stat getStatus(String zPath) throws KeeperException, InterruptedException { return getZooKeeper().exists(zPath, false); } + @Override public Stat getStatus(String zPath, Watcher watcher) throws KeeperException, InterruptedException { return getZooKeeper().exists(zPath, watcher); } + @Override public List getChildren(String zPath) throws KeeperException, InterruptedException { return getZooKeeper().getChildren(zPath, false); } + @Override public List getChildren(String zPath, Watcher watcher) throws KeeperException, InterruptedException { return getZooKeeper().getChildren(zPath, watcher); } + @Override public boolean exists(String zPath) throws KeeperException, InterruptedException { return getZooKeeper().exists(zPath, false) != null; } + @Override public boolean exists(String zPath, Watcher watcher) throws KeeperException, InterruptedException { return getZooKeeper().exists(zPath, watcher) != null; } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/fate/ZooStore.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/fate/ZooStore.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/fate/ZooStore.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/fate/ZooStore.java Sat Oct 22 01:13:07 2011 @@ -34,7 +34,7 @@ import java.util.Set; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeExistsPolicy; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; -import org.apache.accumulo.server.zookeeper.ZooReaderWriter; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.KeeperException.NoNodeException; import org.apache.zookeeper.KeeperException.NodeExistsException; @@ -46,7 +46,7 @@ import org.apache.zookeeper.KeeperExcept public class ZooStore implements TStore { private String path; - private ZooReaderWriter zk; + private IZooReaderWriter zk; private Set reserved; private Map defered; private SecureRandom idgenerator; @@ -86,7 +86,7 @@ public class ZooStore implements TSto return Long.parseLong(txdir.split("_")[1], 16); } - public ZooStore(String path, ZooReaderWriter zk) throws KeeperException, InterruptedException { + public ZooStore(String path, IZooReaderWriter zk) throws KeeperException, InterruptedException { this.path = path; this.zk = zk; Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/gc/GarbageCollectWriteAheadLogs.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/gc/GarbageCollectWriteAheadLogs.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/gc/GarbageCollectWriteAheadLogs.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/gc/GarbageCollectWriteAheadLogs.java Sat Oct 22 01:13:07 2011 @@ -42,6 +42,7 @@ import org.apache.accumulo.server.conf.S import org.apache.accumulo.server.security.SecurityConstants; import org.apache.accumulo.server.util.MetadataTable; import org.apache.accumulo.server.util.MetadataTable.LogEntry; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; @@ -186,7 +187,7 @@ public class GarbageCollectWriteAheadLog private static int scanServers(Map fileToServerMap) throws Exception { int count = 0; - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); String loggersDir = ZooUtil.getRoot(HdfsZooInstance.getInstance()) + Constants.ZLOGGERS; List servers = zk.getChildren(loggersDir, null); Collections.shuffle(servers); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/logger/LogService.java Sat Oct 22 01:13:07 2011 @@ -63,6 +63,7 @@ import org.apache.accumulo.server.util.F import org.apache.accumulo.server.util.Halt; import org.apache.accumulo.server.util.TServerUtils; import org.apache.accumulo.server.util.TServerUtils.ServerPort; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; @@ -242,7 +243,7 @@ public class LogService implements Mutat void registerInZooKeeper(String zooDir) { try { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); String path = ZooUtil.getRoot(HdfsZooInstance.getInstance()) + zooDir; path += "/logger-"; path = zoo.putEphemeralSequential(path, addressString.getBytes()); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java Sat Oct 22 01:13:07 2011 @@ -299,7 +299,7 @@ public class LiveTServerSet implements W log.info("Removing zookeeper lock for " + server); String zpath = ZooUtil.getRoot(instance) + Constants.ZTSERVERS + "/" + server.hostPort(); try { - ZooReaderWriter.getInstance().recursiveDelete(zpath, SKIP); + ZooReaderWriter.getRetryingInstance().recursiveDelete(zpath, SKIP); } catch (Exception e) { log.error("error removing tablet server lock", e); } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/Master.java Sat Oct 22 01:13:07 2011 @@ -148,6 +148,7 @@ import org.apache.accumulo.server.util.T import org.apache.accumulo.server.util.TablePropUtil; import org.apache.accumulo.server.util.TabletIterator.TabletDeletedException; import org.apache.accumulo.server.util.time.SimpleTimer; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock.LockLossReason; @@ -303,7 +304,7 @@ public class Master implements LiveTServ private void upgradeSettings() { AccumuloConfiguration conf = ServerConfiguration.getTableConfiguration(Constants.METADATA_TABLE_ID); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); if (!conf.getBoolean(Property.TABLE_BLOCKCACHE_ENABLED)) { try { // make sure the last shutdown was clean @@ -540,7 +541,7 @@ public class Master implements LiveTServ String zTablePath = Constants.ZROOT + "/" + HdfsZooInstance.getInstance().getInstanceID() + Constants.ZTABLES + "/" + tableId + Constants.ZTABLE_FLUSH_ID; - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); byte fid[]; try { fid = zoo.mutate(zTablePath, null, null, new Mutator() { @@ -1981,7 +1982,7 @@ public class Master implements LiveTServ // TODO: add shutdown for fate object try { fate = new Fate(this, new org.apache.accumulo.server.fate.ZooStore(ZooUtil.getRoot(instance) + Constants.ZFATE, - ZooReaderWriter.getInstance()), 4); + ZooReaderWriter.getRetryingInstance()), 4); } catch (KeeperException e) { throw new IOException(e); } catch (InterruptedException e) { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java Sat Oct 22 01:13:07 2011 @@ -22,6 +22,7 @@ import java.util.List; import org.apache.accumulo.core.master.thrift.DeadServer; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeExistsPolicy; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.log4j.Logger; import org.apache.zookeeper.data.Stat; @@ -32,7 +33,7 @@ public class DeadServerList { public DeadServerList(String path) { this.path = path; - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); try { zoo.mkdirs(path); } catch (Exception ex) { @@ -42,7 +43,7 @@ public class DeadServerList { public List getList() { List result = new ArrayList(); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); try { List children = zoo.getChildren(path); if (children != null) { @@ -60,7 +61,7 @@ public class DeadServerList { } public void delete(String server) { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); try { zoo.recursiveDelete(path + "/" + server, NodeMissingPolicy.SKIP); } catch (Exception ex) { @@ -69,7 +70,7 @@ public class DeadServerList { } public void post(String server, String cause) { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); try { zoo.putPersistentData(path + "/" + server, cause.getBytes(), NodeExistsPolicy.SKIP); } catch (Exception ex) { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java Sat Oct 22 01:13:07 2011 @@ -23,6 +23,7 @@ import org.apache.accumulo.core.zookeepe import org.apache.accumulo.core.zookeeper.ZooUtil.NodeExistsPolicy; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.server.client.HdfsZooInstance; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooCache; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.log4j.Logger; @@ -83,7 +84,7 @@ public class ZooStore implements Distrib try { log.debug("Removing " + path); path = relative(path); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); if (zoo.exists(path)) zoo.recursiveDelete(path, NodeMissingPolicy.SKIP); cache.clear(); } catch (Exception ex) { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java Sat Oct 22 01:13:07 2011 @@ -32,6 +32,7 @@ import org.apache.accumulo.core.zookeepe import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.server.client.HdfsZooInstance; import org.apache.accumulo.server.util.TablePropUtil; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooCache; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter.Mutator; @@ -57,7 +58,7 @@ public class TableManager { throws KeeperException, InterruptedException { // state gets created last String zTablePath = Constants.ZROOT + "/" + instanceId + Constants.ZTABLES + "/" + tableId; - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); zoo.putPersistentData(zTablePath, new byte[0], existsPolicy); zoo.putPersistentData(zTablePath + Constants.ZTABLE_CONF, new byte[0], existsPolicy); zoo.putPersistentData(zTablePath + Constants.ZTABLE_NAME, tableName.getBytes(), existsPolicy); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java Sat Oct 22 01:13:07 2011 @@ -43,6 +43,7 @@ import org.apache.accumulo.server.master import org.apache.accumulo.server.master.state.TServerInstance; import org.apache.accumulo.server.security.SecurityConstants; import org.apache.accumulo.server.util.MapCounter; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter.Mutator; import org.apache.hadoop.io.Text; @@ -190,7 +191,7 @@ public class CompactRange extends Master public Repo call(long tid, Master environment) throws Exception { String zTablePath = Constants.ZROOT + "/" + HdfsZooInstance.getInstance().getInstanceID() + Constants.ZTABLES + "/" + tableId + Constants.ZTABLE_COMPACT_ID; - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getRetryingInstance(); byte[] cid; try { cid = zoo.mutate(zTablePath, null, null, new Mutator() { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java Sat Oct 22 01:13:07 2011 @@ -26,6 +26,7 @@ import org.apache.accumulo.core.zookeepe import org.apache.accumulo.server.client.HdfsZooInstance; import org.apache.accumulo.server.fate.Repo; import org.apache.accumulo.server.master.Master; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter.Mutator; import org.apache.log4j.Logger; @@ -53,7 +54,7 @@ public class RenameTable extends MasterR Instance instance = HdfsZooInstance.getInstance(); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getRetryingInstance(); Utils.tableNameLock.lock(); try { Utils.checkTableDoesNotExist(instance, newTableName, tableId, TableOperation.RENAME); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/Utils.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/Utils.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/Utils.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tableOps/Utils.java Sat Oct 22 01:13:07 2011 @@ -29,6 +29,7 @@ import org.apache.accumulo.core.client.i import org.apache.accumulo.core.zookeeper.ZooUtil; import org.apache.accumulo.server.client.HdfsZooInstance; import org.apache.accumulo.server.zookeeper.DistributedReadWriteLock; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooQueueLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReservation; @@ -50,7 +51,7 @@ public class Utils { String tableId = null; try { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getRetryingInstance(); final String ntp = ZooUtil.getRoot(instance) + Constants.ZTABLES; byte[] nid = zoo.mutate(ntp, "0".getBytes(), ZooUtil.PUBLIC, new Mutator() { @Override @@ -75,7 +76,7 @@ public class Utils { if (getLock(tableId, tid, writeLock).tryLock()) { if (tableMustExist) { Instance instance = HdfsZooInstance.getInstance(); - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getRetryingInstance(); if (!zk.exists(ZooUtil.getRoot(instance) + Constants.ZTABLES + "/" + tableId)) throw new ThriftTableOperationException(tableId, "", op, TableOperationExceptionType.NOTFOUND, "Table does not exists"); } @@ -94,7 +95,7 @@ public class Utils { String resvPath = ZooUtil.getRoot(instance) + Constants.ZHDFS_RESERVATIONS + "/" + new String(Base64.encodeBase64(directory.getBytes())); - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getRetryingInstance(); if (ZooReservation.attempt(zk, resvPath, String.format("%016x", tid), "")) { return 0; @@ -104,7 +105,7 @@ public class Utils { public static void unreserveHdfsDirectory(String directory, long tid) throws KeeperException, InterruptedException { Instance instance = HdfsZooInstance.getInstance(); String resvPath = ZooUtil.getRoot(instance) + Constants.ZHDFS_RESERVATIONS + "/" + new String(Base64.encodeBase64(directory.getBytes())); - ZooReservation.release(ZooReaderWriter.getInstance(), resvPath, String.format("%016x", tid)); + ZooReservation.release(ZooReaderWriter.getRetryingInstance(), resvPath, String.format("%016x", tid)); } private static Lock getLock(String tableId, long tid, boolean writeLock) throws Exception { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tserverOps/ShutdownTServer.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tserverOps/ShutdownTServer.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tserverOps/ShutdownTServer.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/master/tserverOps/ShutdownTServer.java Sat Oct 22 01:13:07 2011 @@ -27,6 +27,7 @@ import org.apache.accumulo.server.master import org.apache.accumulo.server.master.LiveTServerSet.TServerConnection; import org.apache.accumulo.server.master.state.TServerInstance; import org.apache.accumulo.server.master.tableOps.MasterRepo; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.log4j.Logger; @@ -57,7 +58,7 @@ public class ShutdownTServer extends Mas String path = ZooUtil.getRoot(m.getInstance()) + Constants.ZTSERVERS + "/" + tserver; ZooLock.deleteLock(path); path = ZooUtil.getRoot(m.getInstance()) + Constants.ZDEADTSERVERS + "/" + tserver; - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); zoo.putPersistentData(path, "forced down".getBytes(), NodeExistsPolicy.OVERWRITE); return new DisconnectLogger(server.getLocation().getAddress().getHostAddress()); } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/problems/ProblemReports.java Sat Oct 22 01:13:07 2011 @@ -45,6 +45,7 @@ import org.apache.accumulo.server.client import org.apache.accumulo.server.security.SecurityConstants; import org.apache.accumulo.server.util.MetadataTable; import org.apache.accumulo.server.util.NamingThreadFactory; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.commons.collections.map.LRUMap; import org.apache.hadoop.io.Text; @@ -177,7 +178,7 @@ public class ProblemReports implements I return new Iterator() { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); private int iter1Count = 0; private Iterator iter1; Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/security/ZKAuthenticator.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/security/ZKAuthenticator.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/security/ZKAuthenticator.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/security/ZKAuthenticator.java Sat Oct 22 01:13:07 2011 @@ -45,6 +45,7 @@ import org.apache.accumulo.core.util.Byt import org.apache.accumulo.core.zookeeper.ZooUtil.NodeExistsPolicy; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.server.client.HdfsZooInstance; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooCache; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.log4j.Logger; @@ -110,7 +111,7 @@ public final class ZKAuthenticator imple try { // remove old settings from zookeeper first, if any - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getRetryingInstance(); synchronized (zooCache) { zooCache.clear(); if (zoo.exists(ZKUserPath)) { @@ -150,7 +151,7 @@ public final class ZKAuthenticator imple throws KeeperException, InterruptedException { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getRetryingInstance(); zoo.putPrivatePersistentData(ZKUserPath + "/" + user, pass, NodeExistsPolicy.FAIL); zoo.putPersistentData(ZKUserPath + "/" + user + ZKUserAuths, Tool.convertAuthorizations(auths), NodeExistsPolicy.FAIL); zoo.putPersistentData(ZKUserPath + "/" + user + ZKUserSysPerms, Tool.convertSystemPermissions(sysPerms), NodeExistsPolicy.FAIL); @@ -166,7 +167,7 @@ public final class ZKAuthenticator imple private void createTablePerm(String user, String table, Set perms) throws KeeperException, InterruptedException { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter.getInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserTablePerms + "/" + table, Tool.convertTablePermissions(perms), + ZooReaderWriter.getRetryingInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserTablePerms + "/" + table, Tool.convertTablePermissions(perms), NodeExistsPolicy.FAIL); } } @@ -232,7 +233,7 @@ public final class ZKAuthenticator imple try { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter.getInstance().recursiveDelete(ZKUserPath + "/" + user, NodeMissingPolicy.FAIL); + ZooReaderWriter.getRetryingInstance().recursiveDelete(ZKUserPath + "/" + user, NodeMissingPolicy.FAIL); } log.info("Deleted user " + user + " at the request of user " + credentials.user); } catch (InterruptedException e) { @@ -256,7 +257,7 @@ public final class ZKAuthenticator imple try { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter.getInstance().putPrivatePersistentData(ZKUserPath + "/" + user, Tool.createPass(pass), NodeExistsPolicy.OVERWRITE); + ZooReaderWriter.getRetryingInstance().putPrivatePersistentData(ZKUserPath + "/" + user, Tool.createPass(pass), NodeExistsPolicy.OVERWRITE); } log.info("Changed password for user " + user + " at the request of user " + credentials.user); } catch (KeeperException e) { @@ -292,7 +293,7 @@ public final class ZKAuthenticator imple try { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter.getInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserAuths, Tool.convertAuthorizations(authorizations), + ZooReaderWriter.getRetryingInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserAuths, Tool.convertAuthorizations(authorizations), NodeExistsPolicy.OVERWRITE); } log.info("Changed authorizations for user " + user + " at the request of user " + credentials.user); @@ -396,7 +397,7 @@ public final class ZKAuthenticator imple if (perms.add(permission)) { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter.getInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserSysPerms, Tool.convertSystemPermissions(perms), + ZooReaderWriter.getRetryingInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserSysPerms, Tool.convertSystemPermissions(perms), NodeExistsPolicy.OVERWRITE); } } @@ -430,7 +431,7 @@ public final class ZKAuthenticator imple if (tablePerms.add(permission)) { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter.getInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserTablePerms + "/" + table, Tool.convertTablePermissions(tablePerms), + ZooReaderWriter.getRetryingInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserTablePerms + "/" + table, Tool.convertTablePermissions(tablePerms), NodeExistsPolicy.OVERWRITE); } } @@ -462,7 +463,7 @@ public final class ZKAuthenticator imple if (sysPerms.remove(permission)) { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter.getInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserSysPerms, Tool.convertSystemPermissions(sysPerms), + ZooReaderWriter.getRetryingInstance().putPersistentData(ZKUserPath + "/" + user + ZKUserSysPerms, Tool.convertSystemPermissions(sysPerms), NodeExistsPolicy.OVERWRITE); } } @@ -494,7 +495,7 @@ public final class ZKAuthenticator imple try { if (tablePerms.remove(permission)) { zooCache.clear(); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getRetryingInstance(); if (tablePerms.size() == 0) zoo.recursiveDelete(ZKUserPath + "/" + user + ZKUserTablePerms + "/" + table, NodeMissingPolicy.SKIP); else zoo.putPersistentData(ZKUserPath + "/" + user + ZKUserTablePerms + "/" + table, Tool.convertTablePermissions(tablePerms), NodeExistsPolicy.OVERWRITE); @@ -519,7 +520,7 @@ public final class ZKAuthenticator imple try { synchronized (zooCache) { zooCache.clear(); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getRetryingInstance(); for (String user : zooCache.getChildren(ZKUserPath)) zoo.recursiveDelete(ZKUserPath + "/" + user + ZKUserTablePerms + "/" + table, NodeMissingPolicy.SKIP); } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/Tablet.java Sat Oct 22 01:13:07 2011 @@ -113,6 +113,7 @@ import org.apache.accumulo.server.util.M import org.apache.accumulo.server.util.MetadataTable; import org.apache.accumulo.server.util.TabletOperations; import org.apache.accumulo.server.util.MetadataTable.LogEntry; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; @@ -744,7 +745,7 @@ public class Tablet { void bringMinorCompactionOnline(Path tmpDatafile, Path newDatafile, Path absMergeFile, DataFileValue dfv, CommitSession commitSession, long flushId) { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); if (extent.equals(Constants.ROOT_TABLET_EXTENT)) { try { if (!zoo.isLockHeld(tabletServer.getLock().getLockID())) { @@ -942,7 +943,7 @@ public class Tablet { t1 = System.currentTimeMillis(); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); dataSourceDeletions.incrementAndGet(); @@ -2256,7 +2257,7 @@ public class Tablet { try { String zTablePath = Constants.ZROOT + "/" + HdfsZooInstance.getInstance().getInstanceID() + Constants.ZTABLES + "/" + extent.getTableId() + Constants.ZTABLE_FLUSH_ID; - return Long.parseLong(new String(ZooReaderWriter.getInstance().getData(zTablePath, null))); + return Long.parseLong(new String(ZooReaderWriter.getRetryingInstance().getData(zTablePath, null))); } catch (Exception e) { throw new RuntimeException(e); } @@ -2266,7 +2267,7 @@ public class Tablet { try { String zTablePath = Constants.ZROOT + "/" + HdfsZooInstance.getInstance().getInstanceID() + Constants.ZTABLES + "/" + extent.getTableId() + Constants.ZTABLE_COMPACT_ID; - return Long.parseLong(new String(ZooReaderWriter.getInstance().getData(zTablePath, null))); + return Long.parseLong(new String(ZooReaderWriter.getRetryingInstance().getData(zTablePath, null))); } catch (Exception e) { throw new RuntimeException(e); } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/TabletServer.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/TabletServer.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/TabletServer.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/TabletServer.java Sat Oct 22 01:13:07 2011 @@ -175,6 +175,7 @@ import org.apache.accumulo.server.util.M import org.apache.accumulo.server.util.TServerUtils.ServerPort; import org.apache.accumulo.server.util.time.RelativeTime; import org.apache.accumulo.server.util.time.SimpleTimer; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.TransactionWatcher; import org.apache.accumulo.server.zookeeper.ZooCache; import org.apache.accumulo.server.zookeeper.ZooLock; @@ -2525,7 +2526,7 @@ public class TabletServer extends Abstra } private void announceExistence() { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); try { String zPath = ZooUtil.getRoot(HdfsZooInstance.getInstance()) + Constants.ZTSERVERS + "/" + getClientAddressString(); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/UniqueNameAllocator.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/UniqueNameAllocator.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/UniqueNameAllocator.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/tabletserver/UniqueNameAllocator.java Sat Oct 22 01:13:07 2011 @@ -48,7 +48,7 @@ public class UniqueNameAllocator { final int allocate = 100 + rand.nextInt(100); try { - byte[] max = ZooReaderWriter.getInstance().mutate(nextNamePath, null, ZooUtil.PRIVATE, new ZooReaderWriter.Mutator() { + byte[] max = ZooReaderWriter.getRetryingInstance().mutate(nextNamePath, null, ZooUtil.PRIVATE, new ZooReaderWriter.Mutator() { public byte[] mutate(byte[] currentValue) throws Exception { long l = Long.parseLong(new String(currentValue), Character.MAX_RADIX); l += allocate; Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestClean.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestClean.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestClean.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestClean.java Sat Oct 22 01:13:07 2011 @@ -19,6 +19,7 @@ package org.apache.accumulo.server.test. import java.io.File; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; public class CacheTestClean { @@ -30,7 +31,7 @@ public class CacheTestClean { String rootDir = args[0]; File reportDir = new File(args[1]); - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); if (zoo.exists(rootDir)) { zoo.recursiveDelete(rootDir, NodeMissingPolicy.FAIL); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestWriter.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestWriter.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestWriter.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/CacheTestWriter.java Sat Oct 22 01:13:07 2011 @@ -29,6 +29,7 @@ import java.util.UUID; import org.apache.accumulo.core.util.UtilWaitThread; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeExistsPolicy; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; public class CacheTestWriter { @@ -36,7 +37,7 @@ public class CacheTestWriter { static final int NUM_DATA = 3; public static void main(String[] args) throws Exception { - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); String rootDir = args[0]; File reportDir = new File(args[1]); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/SplitRecoveryTest.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/SplitRecoveryTest.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/SplitRecoveryTest.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/test/functional/SplitRecoveryTest.java Sat Oct 22 01:13:07 2011 @@ -46,6 +46,7 @@ import org.apache.accumulo.server.securi import org.apache.accumulo.server.tabletserver.TabletServer; import org.apache.accumulo.server.tabletserver.TabletTime; import org.apache.accumulo.server.util.MetadataTable; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock.LockLossReason; @@ -76,7 +77,7 @@ public class SplitRecoveryTest extends F @Override public void run() throws Exception { String zPath = ZooUtil.getRoot(HdfsZooInstance.getInstance()) + "/testLock"; - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); zoo.putPersistentData(zPath, "".getBytes(), NodeExistsPolicy.OVERWRITE); ZooLock zl = new ZooLock(zPath); boolean gotLock = zl.tryLock(new LockWatcher() { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/trace/TraceServer.java Sat Oct 22 01:13:07 2011 @@ -36,6 +36,7 @@ import org.apache.accumulo.server.Accumu import org.apache.accumulo.server.client.HdfsZooInstance; import org.apache.accumulo.server.conf.ServerConfiguration; import org.apache.accumulo.server.util.time.SimpleTimer; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.io.Text; import org.apache.log4j.Logger; @@ -185,7 +186,7 @@ public class TraceServer implements Watc private void registerInZooKeeper(String name) throws Exception { String root = ZooUtil.getRoot(HdfsZooInstance.getInstance()) + Constants.ZTRACERS; - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); String path = zoo.putEphemeralSequential(root + "/trace-", name.getBytes()); zoo.exists(path, this); } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/RunPreUpgradeCheck.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/RunPreUpgradeCheck.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/RunPreUpgradeCheck.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/RunPreUpgradeCheck.java Sat Oct 22 01:13:07 2011 @@ -30,6 +30,7 @@ import org.apache.accumulo.core.iterator import org.apache.accumulo.core.util.CachedConfiguration; import org.apache.accumulo.server.ServerConstants; import org.apache.accumulo.server.client.HdfsZooInstance; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; @@ -55,7 +56,7 @@ public class RunPreUpgradeCheck { } String rootTabletWALOGS = ZROOT_PATH + "/" + HdfsZooInstance.getInstance().getInstanceID() + ZLOGS_PATH; - ZooReaderWriter session = ZooReaderWriter.getInstance(); + IZooReaderWriter session = ZooReaderWriter.getInstance(); if (session.exists(rootTabletWALOGS) && session.getChildren(rootTabletWALOGS).size() != 0) { System.err.println("The root tablet has write ahead logs"); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/ZooKeeperUpgrade.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/ZooKeeperUpgrade.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/ZooKeeperUpgrade.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/upgrade/ZooKeeperUpgrade.java Sat Oct 22 01:13:07 2011 @@ -35,6 +35,7 @@ import org.apache.accumulo.server.Server import org.apache.accumulo.server.client.HdfsZooInstance; import org.apache.accumulo.server.master.state.tables.TableManager; import org.apache.accumulo.server.util.Initialize; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; @@ -54,7 +55,7 @@ public class ZooKeeperUpgrade extends In private static String zkInstanceRoot; public static void main(String[] args) { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); try { zkInstanceRoot = ZooUtil.getRoot(HdfsZooInstance.getInstance()); upgradeZooKeeper(zoo); @@ -65,7 +66,7 @@ public class ZooKeeperUpgrade extends In } } - static void upgradeSecurity(ZooReaderWriter zoo) throws Exception { + static void upgradeSecurity(IZooReaderWriter zoo) throws Exception { SortedMap tableIds = Tables.getNameToIdMap(HdfsZooInstance.getInstance()); @@ -91,7 +92,7 @@ public class ZooKeeperUpgrade extends In } - static void upgradeZooKeeper(ZooReaderWriter zoo) throws IOException, KeeperException, InterruptedException { + static void upgradeZooKeeper(IZooReaderWriter zoo) throws IOException, KeeperException, InterruptedException { SortedSet tableNames = getOldTableNames(zoo); // initialize zookeeper layout (skip 1.1 dirs that may already be there) @@ -143,7 +144,7 @@ public class ZooKeeperUpgrade extends In zoo.recursiveDelete(zkInstanceRoot + OLD_CONF_DIR, NodeMissingPolicy.SKIP); } - private static SortedSet getOldTableNames(ZooReaderWriter zoo) throws IOException, KeeperException, InterruptedException { + private static SortedSet getOldTableNames(IZooReaderWriter zoo) throws IOException, KeeperException, InterruptedException { SortedSet tableNames = new TreeSet(); // get list of 1.1 tables from HDFS and ZooKeeper FileStatus[] tablesStatus = FileSystem.get(new Configuration()).listStatus(new Path(ServerConstants.getTablesDir())); @@ -156,14 +157,14 @@ public class ZooKeeperUpgrade extends In return tableNames; } - private static void move(ZooReaderWriter zoo, String source, String destination) throws KeeperException, InterruptedException { + private static void move(IZooReaderWriter zoo, String source, String destination) throws KeeperException, InterruptedException { if (zoo.exists(source)) { zoo.recursiveCopyPersistent(source, destination, NodeExistsPolicy.FAIL); zoo.recursiveDelete(source, NodeMissingPolicy.SKIP); } } - private static void validateConfig(String tableId, ZooReaderWriter zoo) throws KeeperException, InterruptedException { + private static void validateConfig(String tableId, IZooReaderWriter zoo) throws KeeperException, InterruptedException { String confPath = zkInstanceRoot + Constants.ZTABLES + "/" + tableId + Constants.ZTABLE_CONF; for (String propKey : zoo.getChildren(confPath)) { String propKeyPath = confPath + "/" + propKey; Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ChangeSecret.java Sat Oct 22 01:13:07 2011 @@ -29,6 +29,7 @@ import org.apache.accumulo.core.zookeepe import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.server.ServerConstants; import org.apache.accumulo.server.client.HdfsZooInstance; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; @@ -98,7 +99,7 @@ public class ChangeSecret { private static String rewriteZooKeeperInstance(final Instance inst, String oldPass, String newPass) throws Exception { final ZooReaderWriter orig = new ZooReaderWriter(inst.getZooKeepers(), inst.getZooKeepersSessionTimeOut(), oldPass); - final ZooReaderWriter new_ = new ZooReaderWriter(inst.getZooKeepers(), inst.getZooKeepersSessionTimeOut(), newPass); + final IZooReaderWriter new_ = new ZooReaderWriter(inst.getZooKeepers(), inst.getZooKeepersSessionTimeOut(), newPass); final String newInstanceId = UUID.randomUUID().toString(); String root = ZooUtil.getRoot(inst); recurse(orig, root, new Visitor() { @@ -138,7 +139,7 @@ public class ChangeSecret { } private static void deleteInstance(Instance origInstance, String oldPass) throws Exception { - ZooReaderWriter orig = new ZooReaderWriter(origInstance.getZooKeepers(), origInstance.getZooKeepersSessionTimeOut(), oldPass); + IZooReaderWriter orig = new ZooReaderWriter(origInstance.getZooKeepers(), origInstance.getZooKeepersSessionTimeOut(), oldPass); orig.recursiveDelete("/accumulo/" + origInstance.getInstanceID(), NodeMissingPolicy.SKIP); } } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/CleanZookeeper.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/CleanZookeeper.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/CleanZookeeper.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/CleanZookeeper.java Sat Oct 22 01:13:07 2011 @@ -21,6 +21,7 @@ import java.io.IOException; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.server.client.HdfsZooInstance; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.log4j.Logger; import org.apache.zookeeper.KeeperException; @@ -42,7 +43,7 @@ public class CleanZookeeper { System.exit(1); } String root = Constants.ZROOT; - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); if (args.length == 2) { zk.getZooKeeper().addAuthInfo("digest", args[1].getBytes()); } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DeleteZooInstance.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DeleteZooInstance.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DeleteZooInstance.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DeleteZooInstance.java Sat Oct 22 01:13:07 2011 @@ -21,6 +21,7 @@ import java.util.Set; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; public class DeleteZooInstance { @@ -34,7 +35,7 @@ public class DeleteZooInstance { System.err.println("Usage: " + DeleteZooInstance.class.getName() + " [instanceName|UUID ... ]"); System.exit(1); } - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); // try instance name: Set instances = new HashSet(zk.getChildren(Constants.ZROOT + Constants.ZINSTANCES)); Set uuids = new HashSet(zk.getChildren(Constants.ZROOT)); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/DumpZookeeper.java Sat Oct 22 01:13:07 2011 @@ -19,6 +19,7 @@ package org.apache.accumulo.server.util; import java.io.PrintStream; import java.io.UnsupportedEncodingException; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.commons.codec.binary.Base64; import org.apache.log4j.Level; @@ -28,7 +29,7 @@ import org.apache.zookeeper.data.Stat; public class DumpZookeeper { - static ZooReaderWriter zk = null; + static IZooReaderWriter zk = null; private static final Logger log = Logger.getLogger(DumpZookeeper.class); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/Initialize.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/Initialize.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/Initialize.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/Initialize.java Sat Oct 22 01:13:07 2011 @@ -50,6 +50,7 @@ import org.apache.accumulo.server.master import org.apache.accumulo.server.security.SecurityConstants; import org.apache.accumulo.server.security.ZKAuthenticator; import org.apache.accumulo.server.tabletserver.TabletTime; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; @@ -305,7 +306,7 @@ public class Initialize { private static void initZooKeeper(String uuid, String instanceNamePath) throws KeeperException, InterruptedException { // setup basic data in zookeeper - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); ZooUtil.putPersistentData(zoo.getZooKeeper(), Constants.ZROOT, new byte[0], -1, NodeExistsPolicy.SKIP, Ids.OPEN_ACL_UNSAFE); ZooUtil.putPersistentData(zoo.getZooKeeper(), Constants.ZROOT + Constants.ZINSTANCES, new byte[0], -1, NodeExistsPolicy.SKIP, Ids.OPEN_ACL_UNSAFE); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ListInstances.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ListInstances.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ListInstances.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ListInstances.java Sat Oct 22 01:13:07 2011 @@ -28,6 +28,7 @@ import java.util.UUID; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.conf.Property; import org.apache.accumulo.server.conf.ServerConfiguration; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.log4j.Logger; @@ -166,7 +167,7 @@ public class ListInstances { private static TreeMap getInstanceNames() { - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); String instancesPath = Constants.ZROOT + Constants.ZINSTANCES; TreeMap tm = new TreeMap(); @@ -197,7 +198,7 @@ public class ListInstances { private static TreeSet getInstanceIDs() { TreeSet ts = new TreeSet(); - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); try { List children = zk.getChildren(Constants.ZROOT); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java Sat Oct 22 01:13:07 2011 @@ -78,6 +78,7 @@ import org.apache.accumulo.server.master import org.apache.accumulo.server.security.SecurityConstants; import org.apache.accumulo.server.test.FastFormat; import org.apache.accumulo.server.trace.TraceFileSystem; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; import org.apache.hadoop.fs.FileStatus; @@ -155,7 +156,7 @@ public class MetadataTable extends org.a Set filesInUseByScans, String address, ZooLock zooLock, Set unusedWalLogs, TServerInstance lastLocation, long flushId) { if (extent.equals(Constants.ROOT_TABLET_EXTENT)) { if (unusedWalLogs != null) { - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); // unusedWalLogs will contain the location/name of each log in a log set // the log set is stored under one of the log names, but not both // find the entry under one of the names and delete it. @@ -372,7 +373,7 @@ public class MetadataTable extends org.a } public static boolean recordRootTabletLocation(String address) { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); for (int i = 0; i < SAVE_ROOT_TABLET_RETRIES; i++) { try { log.info("trying to write root tablet location to ZooKeeper as " + address); @@ -790,7 +791,7 @@ public class MetadataTable extends org.a String root = getZookeeperLogLocation(); while (true) { try { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); if (zoo.isLockHeld(zooLock.getLockID())) zoo.putPersistentData(root + "/" + entry.filename, entry.toBytes(), NodeExistsPolicy.OVERWRITE); break; } catch (KeeperException e) { @@ -900,7 +901,7 @@ public class MetadataTable extends org.a } private static void getRootLogEntries(ArrayList result) throws KeeperException, InterruptedException, IOException { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); String root = getZookeeperLogLocation(); for (String child : zoo.getChildren(root)) { LogEntry e = new LogEntry(); @@ -966,7 +967,7 @@ public class MetadataTable extends org.a String root = getZookeeperLogLocation(); while (true) { try { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); if (zoo.isLockHeld(zooLock.getLockID())) zoo.recursiveDelete(root + "/" + entry.filename, NodeMissingPolicy.SKIP); break; } catch (Exception e) { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/TabletServerLocks.java Sat Oct 22 01:13:07 2011 @@ -21,6 +21,7 @@ import java.util.List; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.zookeeper.ZooUtil; import org.apache.accumulo.server.client.HdfsZooInstance; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; @@ -34,7 +35,7 @@ public class TabletServerLocks { String tserverPath = ZooUtil.getRoot(HdfsZooInstance.getInstance()) + Constants.ZTSERVERS; if (args.length == 1 && args[0].equals("-list")) { - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); List tabletServers = zoo.getChildren(tserverPath); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ZooZap.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ZooZap.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ZooZap.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/util/ZooZap.java Sat Oct 22 01:13:07 2011 @@ -21,6 +21,7 @@ import java.util.List; import org.apache.accumulo.core.Constants; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.server.client.HdfsZooInstance; +import org.apache.accumulo.server.zookeeper.IZooReaderWriter; import org.apache.accumulo.server.zookeeper.ZooLock; import org.apache.accumulo.server.zookeeper.ZooReaderWriter; @@ -64,7 +65,7 @@ public class ZooZap { } } - ZooReaderWriter zoo = ZooReaderWriter.getInstance(); + IZooReaderWriter zoo = ZooReaderWriter.getInstance(); String iid = HdfsZooInstance.getInstance().getInstanceID(); if (zapMaster) { @@ -107,7 +108,7 @@ public class ZooZap { } - private static void zapDirectory(ZooReaderWriter zoo, String loggersPath) { + private static void zapDirectory(IZooReaderWriter zoo, String loggersPath) { try { List children = zoo.getChildren(loggersPath); for (String child : children) { Added: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/IZooReaderWriter.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/IZooReaderWriter.java?rev=1187617&view=auto ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/IZooReaderWriter.java (added) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/IZooReaderWriter.java Sat Oct 22 01:13:07 2011 @@ -0,0 +1,47 @@ +package org.apache.accumulo.server.zookeeper; + +import java.util.List; + +import org.apache.accumulo.core.zookeeper.IZooReader; +import org.apache.accumulo.core.zookeeper.ZooUtil; +import org.apache.accumulo.core.zookeeper.ZooUtil.NodeExistsPolicy; +import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; +import org.apache.accumulo.server.zookeeper.ZooReaderWriter.Mutator; +import org.apache.zookeeper.KeeperException; +import org.apache.zookeeper.ZooKeeper; +import org.apache.zookeeper.data.ACL; + +public interface IZooReaderWriter extends IZooReader { + + public abstract ZooKeeper getZooKeeper(); + + public abstract void recursiveDelete(String zPath, NodeMissingPolicy policy) throws KeeperException, InterruptedException; + + public abstract void recursiveDelete(String zPath, int version, NodeMissingPolicy policy) throws KeeperException, InterruptedException; + + /** + * Create a persistent node with the default ACL + * + * @return true if the node was created or altered; false if it was skipped + */ + public abstract boolean putPersistentData(String zPath, byte[] data, NodeExistsPolicy policy) throws KeeperException, InterruptedException; + + public abstract boolean putPrivatePersistentData(String zPath, byte[] data, NodeExistsPolicy policy) throws KeeperException, InterruptedException; + + public abstract void putPersistentData(String zPath, byte[] data, int version, NodeExistsPolicy policy) throws KeeperException, InterruptedException; + + public abstract String putPersistentSequential(String zPath, byte[] data) throws KeeperException, InterruptedException; + + public abstract String putEphemeralSequential(String zPath, byte[] data) throws KeeperException, InterruptedException; + + public abstract void recursiveCopyPersistent(String source, String destination, NodeExistsPolicy policy) throws KeeperException, InterruptedException; + + public abstract void delete(String path, int version) throws InterruptedException, KeeperException; + + public abstract byte[] mutate(String zPath, byte[] createValue, List acl, Mutator mutator) throws Exception; + + public abstract boolean isLockHeld(ZooUtil.LockID lockID) throws KeeperException, InterruptedException; + + public abstract void mkdirs(String path) throws KeeperException, InterruptedException; + +} \ No newline at end of file Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/TransactionWatcher.java Sat Oct 22 01:13:07 2011 @@ -52,14 +52,14 @@ public class TransactionWatcher { public static void start(String type, long tid) throws KeeperException, InterruptedException { Instance instance = HdfsZooInstance.getInstance(); - ZooReaderWriter writer = ZooReaderWriter.getInstance(); + IZooReaderWriter writer = ZooReaderWriter.getInstance(); writer.putPersistentData(ZooUtil.getRoot(instance) + "/" + type, new byte[] {}, NodeExistsPolicy.OVERWRITE); writer.putPersistentData(ZooUtil.getRoot(instance) + "/" + type + "/" + tid, new byte[] {}, NodeExistsPolicy.OVERWRITE); } public static void stop(String type, long tid) throws KeeperException, InterruptedException { Instance instance = HdfsZooInstance.getInstance(); - ZooReaderWriter writer = ZooReaderWriter.getInstance(); + IZooReaderWriter writer = ZooReaderWriter.getInstance(); writer.recursiveDelete(ZooUtil.getRoot(instance) + "/" + type + "/" + tid, NodeMissingPolicy.SKIP); } } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooLock.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooLock.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooLock.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooLock.java Sat Oct 22 01:13:07 2011 @@ -53,7 +53,7 @@ public class ZooLock implements Watcher private boolean lockWasAcquired; final private String path; - final private ZooReaderWriter zooKeeper; + final private IZooReaderWriter zooKeeper; private String lock; private LockWatcher lockWatcher; @@ -399,7 +399,7 @@ public class ZooLock implements Watcher public static void deleteLock(String path) throws InterruptedException, KeeperException { List children; - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); children = zk.getChildren(path); if (children.size() == 0) { @@ -421,7 +421,7 @@ public class ZooLock implements Watcher public static boolean deleteLock(String path, String lockData) throws InterruptedException, KeeperException { List children; - ZooReaderWriter zk = ZooReaderWriter.getInstance(); + IZooReaderWriter zk = ZooReaderWriter.getInstance(); children = zk.getChildren(path); if (children.size() == 0) { Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooQueueLock.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooQueueLock.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooQueueLock.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooQueueLock.java Sat Oct 22 01:13:07 2011 @@ -36,12 +36,12 @@ public class ZooQueueLock implements Que // private static final Logger log = Logger.getLogger(ZooQueueLock.class); - private ZooReaderWriter zoo; + private IZooReaderWriter zoo; private String path; private boolean ephemeral; public ZooQueueLock(String path, boolean ephemeral) throws KeeperException, InterruptedException { - this.zoo = ZooReaderWriter.getInstance(); + this.zoo = ZooReaderWriter.getRetryingInstance(); this.path = path; this.ephemeral = ephemeral; } Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReaderWriter.java Sat Oct 22 01:13:07 2011 @@ -16,16 +16,22 @@ */ package org.apache.accumulo.server.zookeeper; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; import java.security.SecurityPermission; import java.util.List; import org.apache.accumulo.core.conf.AccumuloConfiguration; import org.apache.accumulo.core.conf.Property; +import org.apache.accumulo.core.util.UtilWaitThread; import org.apache.accumulo.core.zookeeper.ZooReader; import org.apache.accumulo.core.zookeeper.ZooUtil; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeExistsPolicy; import org.apache.accumulo.core.zookeeper.ZooUtil.NodeMissingPolicy; import org.apache.accumulo.server.conf.ServerConfiguration; +import org.apache.log4j.Logger; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.KeeperException.BadVersionException; @@ -34,13 +40,14 @@ import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.data.ACL; import org.apache.zookeeper.data.Stat; -public class ZooReaderWriter extends ZooReader { +public class ZooReaderWriter extends ZooReader implements IZooReaderWriter { private static SecurityPermission ZOOWRITER_PERMISSION = new SecurityPermission("zookeeperWriterPermission"); private static ZooReaderWriter instance = null; + private static IZooReaderWriter retryingInstance = null; private final String auth; - + @Override public ZooKeeper getZooKeeper() { SecurityManager sm = System.getSecurityManager(); @@ -55,10 +62,12 @@ public class ZooReaderWriter extends Zoo this.auth = "accumulo:" + auth; } + @Override public void recursiveDelete(String zPath, NodeMissingPolicy policy) throws KeeperException, InterruptedException { ZooUtil.recursiveDelete(getZooKeeper(), zPath, policy); } + @Override public void recursiveDelete(String zPath, int version, NodeMissingPolicy policy) throws KeeperException, InterruptedException { ZooUtil.recursiveDelete(getZooKeeper(), zPath, version, policy); } @@ -68,30 +77,37 @@ public class ZooReaderWriter extends Zoo * * @return true if the node was created or altered; false if it was skipped */ + @Override public boolean putPersistentData(String zPath, byte[] data, NodeExistsPolicy policy) throws KeeperException, InterruptedException { return ZooUtil.putPersistentData(getZooKeeper(), zPath, data, policy); } + @Override public boolean putPrivatePersistentData(String zPath, byte[] data, NodeExistsPolicy policy) throws KeeperException, InterruptedException { return ZooUtil.putPrivatePersistentData(getZooKeeper(), zPath, data, policy); } + @Override public void putPersistentData(String zPath, byte[] data, int version, NodeExistsPolicy policy) throws KeeperException, InterruptedException { ZooUtil.putPersistentData(getZooKeeper(), zPath, data, version, policy); } + @Override public String putPersistentSequential(String zPath, byte[] data) throws KeeperException, InterruptedException { return ZooUtil.putPersistentSequential(getZooKeeper(), zPath, data); } + @Override public String putEphemeralSequential(String zPath, byte[] data) throws KeeperException, InterruptedException { return ZooUtil.putEphemeralSequential(getZooKeeper(), zPath, data); } + @Override public void recursiveCopyPersistent(String source, String destination, NodeExistsPolicy policy) throws KeeperException, InterruptedException { ZooUtil.recursiveCopyPersistent(getZooKeeper(), source, destination, policy); } + @Override public void delete(String path, int version) throws InterruptedException, KeeperException { getZooKeeper().delete(path, version); } @@ -100,6 +116,7 @@ public class ZooReaderWriter extends Zoo byte[] mutate(byte[] currentValue) throws Exception; } + @Override public byte[] mutate(String zPath, byte[] createValue, List acl, Mutator mutator) throws Exception { if (createValue != null) { try { @@ -132,10 +149,48 @@ public class ZooReaderWriter extends Zoo return instance; } + /** + * get an instance that retries when zookeeper connection errors occur + * + * @return + */ + public static synchronized IZooReaderWriter getRetryingInstance() { + + if(retryingInstance == null){ + final IZooReaderWriter inst = getInstance(); + + InvocationHandler ih = new InvocationHandler() { + @Override + public Object invoke(Object obj, Method method, Object[] args) throws Throwable { + long retryTime = 250; + while(true){ + try { + return method.invoke(inst, args); + } catch (InvocationTargetException e) { + if(e.getCause() instanceof KeeperException.ConnectionLossException){ + Logger.getLogger(ZooReaderWriter.class).warn("Error connecting to zookeeper, will retry in "+retryTime, e.getCause()); + UtilWaitThread.sleep(retryTime); + retryTime = Math.min(5000, retryTime + 250); + }else{ + throw e.getCause(); + } + } + } + } + }; + + retryingInstance = (IZooReaderWriter) Proxy.newProxyInstance(ZooReaderWriter.class.getClassLoader(),new Class[] {IZooReaderWriter.class}, ih); + } + + return retryingInstance; + } + + @Override public boolean isLockHeld(ZooUtil.LockID lockID) throws KeeperException, InterruptedException { return ZooUtil.isLockHeld(getZooKeeper(), lockID); } + @Override public void mkdirs(String path) throws KeeperException, InterruptedException { if (path.equals("")) return; if (!path.startsWith("/")) throw new IllegalArgumentException(path + "does not start with /"); Modified: incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReservation.java URL: http://svn.apache.org/viewvc/incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReservation.java?rev=1187617&r1=1187616&r2=1187617&view=diff ============================================================================== --- incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReservation.java (original) +++ incubator/accumulo/trunk/src/server/src/main/java/org/apache/accumulo/server/zookeeper/ZooReservation.java Sat Oct 22 01:13:07 2011 @@ -26,7 +26,7 @@ import org.apache.zookeeper.data.Stat; public class ZooReservation { - public static boolean attempt(ZooReaderWriter zk, String path, String reservationID, String debugInfo) throws KeeperException, InterruptedException { + public static boolean attempt(IZooReaderWriter zk, String path, String reservationID, String debugInfo) throws KeeperException, InterruptedException { if (reservationID.contains(":")) throw new IllegalArgumentException(); while (true) { @@ -50,7 +50,7 @@ public class ZooReservation { } - public static void release(ZooReaderWriter zk, String path, String reservationID) throws KeeperException, InterruptedException { + public static void release(IZooReaderWriter zk, String path, String reservationID) throws KeeperException, InterruptedException { Stat stat = new Stat(); byte[] zooData;