You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2014/09/22 22:48:15 UTC
[15/16] git commit: Another round of updates
Another round of updates
git-svn-id: https://svn.apache.org/repos/asf/accumulo/branches/ACCUMULO-CURATOR@1499092 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/a951e789
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/a951e789
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/a951e789
Branch: refs/heads/ACCUMULO-CURATOR
Commit: a951e789f83b9b995ec8fff0eca52a51dda2953c
Parents: 4640866
Author: John Vines <vi...@apache.org>
Authored: Tue Jul 2 20:13:20 2013 +0000
Committer: John Vines <vi...@apache.org>
Committed: Tue Jul 2 20:13:20 2013 +0000
----------------------------------------------------------------------
.../core/client/admin/TableOperationsImpl.java | 2 -
.../core/client/impl/OfflineScanner.java | 7 +-
.../accumulo/core/client/impl/ServerClient.java | 2 +-
.../accumulo/core/client/impl/Tables.java | 6 +-
.../impl/TabletServerBatchReaderIterator.java | 1 -
.../client/impl/TabletServerBatchWriter.java | 3 +-
.../core/client/impl/ThriftScanner.java | 6 +-
.../core/client/mapred/InputFormatBase.java | 5 +-
.../core/client/mapreduce/InputFormatBase.java | 5 +-
.../core/util/shell/commands/FateCommand.java | 7 +-
.../java/org/apache/accumulo/fate/ZooStore.java | 2 +
.../accumulo/fate/curator/CuratorCaches.java | 45 ++++---
.../accumulo/fate/curator/CuratorReader.java | 14 ++-
.../fate/curator/CuratorReaderWriter.java | 47 +++++---
.../accumulo/fate/curator/CuratorSession.java | 11 +-
.../accumulo/fate/curator/CuratorUtil.java | 21 +++-
.../apache/accumulo/fate/zookeeper/ZooLock.java | 2 +-
.../accumulo/fate/zookeeper/ZooQueueLock.java | 2 +-
.../server/client/ClientServiceHandler.java | 1 -
.../accumulo/server/client/HdfsZooInstance.java | 2 +-
.../server/conf/TableConfiguration.java | 7 +-
.../accumulo/server/conf/ZooConfiguration.java | 4 +-
.../server/constraints/MetadataConstraints.java | 6 +-
.../accumulo/server/curator/CuratorCaches.java | 49 ++++++++
.../server/curator/CuratorReaderWriter.java | 8 +-
.../server/gc/SimpleGarbageCollector.java | 4 +-
.../accumulo/server/master/LiveTServerSet.java | 14 +--
.../apache/accumulo/server/master/Master.java | 4 +-
.../server/master/TabletGroupWatcher.java | 4 +-
.../server/master/recovery/RecoveryManager.java | 10 +-
.../server/master/state/DeadServerList.java | 2 +-
.../server/master/state/MetaDataStateStore.java | 3 +-
.../master/state/MetaDataTableScanner.java | 3 +-
.../master/state/TabletStateChangeIterator.java | 2 +-
.../accumulo/server/master/state/ZooStore.java | 6 +-
.../master/state/ZooTabletStateStore.java | 1 -
.../master/state/tables/TableManager.java | 21 ++--
.../server/master/tableOps/BulkImport.java | 1 -
.../server/master/tableOps/CloneTable.java | 4 -
.../server/master/tableOps/CompactRange.java | 1 -
.../server/master/tableOps/CreateTable.java | 10 +-
.../server/master/tableOps/DeleteTable.java | 2 -
.../server/master/tableOps/ExportTable.java | 1 -
.../server/master/tableOps/ImportTable.java | 7 +-
.../server/master/tableOps/RenameTable.java | 2 -
.../server/security/SecurityOperation.java | 6 +-
.../security/handler/ZKAuthenticator.java | 7 +-
.../server/security/handler/ZKAuthorizor.java | 6 +-
.../server/security/handler/ZKPermHandler.java | 118 +++++++++----------
.../accumulo/server/tabletserver/Tablet.java | 7 +-
.../server/tabletserver/TabletServer.java | 19 ++-
.../tabletserver/UniqueNameAllocator.java | 1 -
.../apache/accumulo/server/util/Initialize.java | 2 +-
.../accumulo/server/util/TablePropUtil.java | 11 +-
.../server/zookeeper/DistributedWorkQueue.java | 5 +-
.../accumulo/server/zookeeper/ZooCache.java | 31 -----
.../accumulo/server/zookeeper/ZooLock.java | 3 +-
.../test/functional/CacheTestReader.java | 2 +-
.../accumulo/fate/zookeeper/ZooLockTest.java | 12 +-
.../org/apache/accumulo/test/MetaSplitTest.java | 1 +
60 files changed, 310 insertions(+), 288 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java
index ece5eff..f354f9c 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java
@@ -296,7 +296,6 @@ public class TableOperationsImpl extends TableOperationsHelper {
return null;
}
String ret = waitForTableOperation(opid);
- Tables.clearCache(instance);
return ret;
} catch (ThriftSecurityException e) {
String tableName = ByteBufferUtil.toString(args.get(0));
@@ -483,7 +482,6 @@ public class TableOperationsImpl extends TableOperationsHelper {
tabLocator.invalidateCache(tl.tablet_location);
continue;
} catch (ThriftSecurityException e) {
- Tables.clearCache(instance);
if (!Tables.exists(instance, tableId))
throw new TableNotFoundException(tableId, tableName, null);
throw new AccumuloSecurityException(e.user, e.code, e);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java b/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
index 9c53c1d..1f4539b 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/OfflineScanner.java
@@ -211,10 +211,7 @@ class OfflineIterator implements Iterator<Entry<Key,Value>> {
while (eloc.getSecond() != null) {
if (Tables.getTableState(instance, tableId) != TableState.OFFLINE) {
- Tables.clearCache(instance);
- if (Tables.getTableState(instance, tableId) != TableState.OFFLINE) {
- throw new AccumuloException("Table is online " + tableId + " cannot scan tablet in offline mode " + eloc.getFirst());
- }
+ throw new AccumuloException("Table is online " + tableId + " cannot scan tablet in offline mode " + eloc.getFirst());
}
UtilWaitThread.sleep(250);
@@ -230,7 +227,7 @@ class OfflineIterator implements Iterator<Entry<Key,Value>> {
if (currentExtent != null && !extent.isPreviousExtent(currentExtent))
throw new AccumuloException(" " + currentExtent + " is not previous extent " + extent);
-
+
String tablesDir = instance.getConfiguration().get(Property.INSTANCE_DFS_DIR) + "/tables";
String[] volumes = instance.getConfiguration().get(Property.INSTANCE_VOLUMES).split(",");
if (volumes.length > 1) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/impl/ServerClient.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ServerClient.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ServerClient.java
index 68fce23..9ab9ca9 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ServerClient.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ServerClient.java
@@ -49,7 +49,7 @@ public class ServerClient {
private synchronized static CuratorCaches getZooCache(Instance instance) {
CuratorCaches result = zooCaches.get(instance.getZooKeepers());
if (result == null) {
- result = new CuratorCaches(instance.getZooKeepers(), instance.getZooKeepersSessionTimeOut());
+ result = CuratorCaches.getInstance(instance.getZooKeepers(), instance.getZooKeepersSessionTimeOut());
zooCaches.put(instance.getZooKeepers(), result);
}
return result;
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
index 5471f43..fba6ebf 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
@@ -34,6 +34,8 @@ import org.apache.curator.framework.recipes.cache.ChildData;
public class Tables {
private static SecurityPermission TABLES_PERMISSION = new SecurityPermission("tablesPermission");
+ //TODO fix code base for removed Table.clearCache method
+
private static CuratorCaches getZooCache(Instance instance) {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
@@ -90,10 +92,6 @@ public class Tables {
return table != null;
}
- public static void clearCache(Instance instance) {
- getZooCache(instance).clear(ZooUtil.getRoot(instance) + Constants.ZTABLES);
- }
-
public static String getPrintableTableNameFromId(Map<String,String> tidToNameMap, String tableId) {
String tableName = tidToNameMap.get(tableId);
return tableName == null ? "(ID:" + tableId + ")" : tableName;
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
index 883d1a3..9e34300 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchReaderIterator.java
@@ -382,7 +382,6 @@ public class TabletServerBatchReaderIterator implements Iterator<Entry<Key,Value
e.setTableInfo(getTableInfo());
log.debug(e.getMessage(), e);
- Tables.clearCache(instance);
if (!Tables.exists(instance, table))
fatalException = new TableDeletedException(table);
else
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
index 772e0aa..1a59bba 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java
@@ -477,8 +477,7 @@ public class TabletServerBatchWriter {
HashSet<String> tableIds = new HashSet<String>();
for (KeyExtent ke : authorizationFailures.keySet())
tableIds.add(ke.getTableId().toString());
-
- Tables.clearCache(instance);
+
for (String tableId : tableIds)
if (!Tables.exists(instance, tableId))
throw new TableDeletedException(tableId);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
index 37e4579..f54a5aa 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ThriftScanner.java
@@ -68,7 +68,6 @@ import org.apache.thrift.TApplicationException;
import org.apache.thrift.TException;
import org.apache.thrift.TServiceClient;
-
public class ThriftScanner {
private static final Logger log = Logger.getLogger(ThriftScanner.class);
@@ -122,7 +121,7 @@ public class ThriftScanner {
throw new AccumuloSecurityException(e.user, e.code, e);
} catch (TException e) {
log.debug("Error getting transport to " + server + " : " + e);
- }
+ }
throw new AccumuloException("getBatchFromServer: failed");
}
@@ -214,7 +213,7 @@ public class ThriftScanner {
Span locateSpan = Trace.start("scan:locateTablet");
try {
loc = TabletLocator.getInstance(instance, scanState.tableId).locateTablet(scanState.startRow, scanState.skipStartRow, false, credentials);
-
+
if (loc == null) {
if (!Tables.exists(instance, scanState.tableId.toString()))
throw new TableDeletedException(scanState.tableId.toString());
@@ -266,7 +265,6 @@ public class ThriftScanner {
try {
results = scan(loc, scanState, conf);
} catch (AccumuloSecurityException e) {
- Tables.clearCache(instance);
if (!Tables.exists(instance, scanState.tableId.toString()))
throw new TableDeletedException(scanState.tableId.toString());
e.setTableInfo(Tables.getPrintableTableInfoFromId(instance, scanState.tableId.toString()));
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java b/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
index f6fc744..058cdeb 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapred/InputFormatBase.java
@@ -671,10 +671,7 @@ public abstract class InputFormatBase<K,V> implements InputFormat<K,V> {
String tableId = Tables.getTableId(instance, tableName);
if (Tables.getTableState(instance, tableId) != TableState.OFFLINE) {
- Tables.clearCache(instance);
- if (Tables.getTableState(instance, tableId) != TableState.OFFLINE) {
- throw new AccumuloException("Table is online " + tableName + "(" + tableId + ") cannot scan table in offline mode ");
- }
+ throw new AccumuloException("Table is online " + tableName + "(" + tableId + ") cannot scan table in offline mode ");
}
for (Range range : ranges) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
index c280b97..8341113 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java
@@ -695,10 +695,7 @@ public abstract class InputFormatBase<K,V> extends InputFormat<K,V> {
String tableId = Tables.getTableId(instance, tableName);
if (Tables.getTableState(instance, tableId) != TableState.OFFLINE) {
- Tables.clearCache(instance);
- if (Tables.getTableState(instance, tableId) != TableState.OFFLINE) {
- throw new AccumuloException("Table is online " + tableName + "(" + tableId + ") cannot scan table in offline mode ");
- }
+ throw new AccumuloException("Table is online " + tableName + "(" + tableId + ") cannot scan table in offline mode ");
}
for (Range range : ranges) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/core/src/main/java/org/apache/accumulo/core/util/shell/commands/FateCommand.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/FateCommand.java b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/FateCommand.java
index bb09e3a..efaac8f 100644
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/commands/FateCommand.java
+++ b/core/src/main/java/org/apache/accumulo/core/util/shell/commands/FateCommand.java
@@ -42,12 +42,13 @@ import org.apache.zookeeper.KeeperException;
/**
* Manage FATE transactions
- *
*/
public class FateCommand extends Command {
+ // Move to constants
+ @Deprecated
private static final String SCHEME = "digest";
-
+ @Deprecated
private static final String USER = "accumulo";
private Option secretOption;
@@ -144,7 +145,7 @@ public class FateCommand extends Command {
secret = conf.get(Property.INSTANCE_SECRET);
}
- return CuratorReaderWriter.getInstance(instance.getZooKeepers(), instance.getZooKeepersSessionTimeOut(), SCHEME,
+ return new CuratorReaderWriter(instance.getZooKeepers(), instance.getZooKeepersSessionTimeOut(), SCHEME,
(USER + ":" + secret).getBytes());
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java b/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
index 1564aa9..4a2b562 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
@@ -408,6 +408,8 @@ public class ZooStore<T> implements TStore<T> {
try {
byte[] data = curator.getData(getTXPath(tid) + "/prop_" + prop, null);
+ if (data == null)
+ return null;
if (data[0] == 'O') {
byte[] sera = new byte[data.length - 2];
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorCaches.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorCaches.java b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorCaches.java
index eac9b8f..8b42aac 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorCaches.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorCaches.java
@@ -28,8 +28,8 @@ import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.NodeCache;
import org.apache.curator.framework.recipes.cache.PathChildrenCache;
import org.apache.curator.framework.recipes.cache.PathChildrenCache.StartMode;
-import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent.Type;
import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent;
+import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent.Type;
import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener;
import org.apache.log4j.Logger;
@@ -45,11 +45,11 @@ public class CuratorCaches {
private CuratorFramework curator;
- public CuratorCaches(String zooKeepers, int sessionTimeout) {
- this(CuratorSession.getSession(zooKeepers, sessionTimeout));
+ protected CuratorCaches(String zooKeepers, int sessionTimeout, String scheme, byte[] auths) {
+ this(CuratorSession.getSession(zooKeepers, sessionTimeout, scheme, auths));
}
- public CuratorCaches(CuratorFramework curator) {
+ private CuratorCaches(CuratorFramework curator) {
this.curator = curator;
this.nodeCache = new HashMap<String,NodeCache>();
this.childrenCache = new HashMap<String,PathChildrenCache>();
@@ -67,7 +67,8 @@ public class CuratorCaches {
cache.getListenable().addListener(listener);
}
try {
- log.debug("Starting cache against " + zPath + (listener!=null? " using listener " + listener:""));
+ // TODO- spotted master listening to table configuration, possibly due to balancer?
+ log.debug("Starting cache against " + zPath + (listener != null ? " using listener " + listener : ""), new RuntimeException());
cache.start(StartMode.BUILD_INITIAL_CACHE);
// I'll do it myself!
if (listener != null)
@@ -83,6 +84,8 @@ public class CuratorCaches {
log.debug("Removing cache " + childCache.getCurrentData().getPath() + " because parent cache was added");
childCache.close();
nodeCache.remove(child.getPath());
+ } else if (childCache != null) {
+ log.debug("Not removing cache because it has a listener. This is a potential optimization point.");
}
}
} catch (Exception e) {
@@ -137,8 +140,7 @@ public class CuratorCaches {
}
private synchronized void remove(String zPath) {
- if (log.isTraceEnabled())
- log.trace("removing " + zPath + " from cache");
+ log.debug("removing " + zPath + " from cache");
NodeCache nc = nodeCache.get(zPath);
if (nc != null) {
try {
@@ -162,6 +164,7 @@ public class CuratorCaches {
}
public synchronized void clear() {
+ log.debug("Clearing cache", new RuntimeException());
for (NodeCache nc : nodeCache.values()) {
try {
nc.close();
@@ -181,6 +184,7 @@ public class CuratorCaches {
childrenCache.clear();
}
+ @Deprecated
public CuratorFramework getCurator() {
return curator;
}
@@ -205,14 +209,27 @@ public class CuratorCaches {
private static Map<String,CuratorCaches> instances = new HashMap<String,CuratorCaches>();
+ // Multiton to handle cases of multiple zookeepers
+ public static synchronized CuratorCaches getInstance(String zooKeepers, int sessionTimeout, String scheme, byte[] auths) {
+ CuratorCaches instance = instances.get(zooKeepers);
+ if (instance == null) {
+ instance = new CuratorCaches(zooKeepers, sessionTimeout, scheme, auths);
+ instances.put(zooKeepers, instance);
+ }
+ return instance;
+ }
+
public static synchronized CuratorCaches getInstance(String zooKeepers, int sessionTimeout) {
- String key = zooKeepers + ":" + sessionTimeout;
- CuratorCaches zc = instances.get(key);
- if (zc == null) {
- zc = new CuratorCaches(zooKeepers, sessionTimeout);
- instances.put(key, zc);
+ return getInstance(zooKeepers, sessionTimeout, null, null);
+ }
+
+ public static synchronized CuratorCaches getInstance(CuratorFramework curator) {
+ String zooKeepers = curator.getZookeeperClient().getCurrentConnectionString();
+ CuratorCaches instance = instances.get(zooKeepers);
+ if (instance == null) {
+ instance = new CuratorCaches(curator);
+ instances.put(zooKeepers, instance);
}
-
- return zc;
+ return instance;
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReader.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReader.java b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReader.java
index 2f9c46f..0d3897f 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReader.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReader.java
@@ -32,7 +32,7 @@ public class CuratorReader {
private CuratorFramework curator;
public CuratorReader(String zooKeepers, int sessionTimeout) {
- this(CuratorSession.getSession(zooKeepers, sessionTimeout));
+ this(CuratorSession.getSession(zooKeepers, sessionTimeout, null, null));
}
public CuratorReader(String zooKeepers, int sessionTimeout, String scheme, byte[] auth) {
@@ -52,7 +52,11 @@ public class CuratorReader {
try {
return getCurator().getData().forPath(zPath);
} catch (Exception e) {
- throw CuratorUtil.manageException(e);
+ try {
+ throw CuratorUtil.manageException(e);
+ } catch (KeeperException.NoNodeException nne) {
+ return null;
+ }
}
}
@@ -60,7 +64,11 @@ public class CuratorReader {
try {
return getCurator().getData().storingStatIn(stat).forPath(zPath);
} catch (Exception e) {
- throw CuratorUtil.manageException(e);
+ try {
+ throw CuratorUtil.manageException(e);
+ } catch (KeeperException.NoNodeException nne) {
+ return null;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReaderWriter.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReaderWriter.java b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReaderWriter.java
index c03cadb..f29c23d 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReaderWriter.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorReaderWriter.java
@@ -18,9 +18,12 @@ package org.apache.accumulo.fate.curator;
import java.security.SecurityPermission;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.utils.EnsurePath;
import org.apache.log4j.Logger;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
@@ -31,19 +34,12 @@ import org.apache.zookeeper.data.Stat;
public class CuratorReaderWriter extends CuratorReader {
private static SecurityPermission ZOOWRITER_PERMISSION = new SecurityPermission("zookeeperWriterPermission");
+ private static Logger log = Logger.getLogger(CuratorReaderWriter.class);
- protected CuratorReaderWriter(String zooKeepers, int sessionTimeout, String scheme, byte[] auth) {
+ public CuratorReaderWriter(String zooKeepers, int sessionTimeout, String scheme, byte[] auth) {
super(constructCurator(zooKeepers, sessionTimeout, scheme, auth));
}
- private static CuratorReaderWriter instance = null;
-
- public static synchronized CuratorReaderWriter getInstance(String zookeepers, int timeInMillis, String scheme, byte[] auth) {
- if (instance == null)
- instance = new CuratorReaderWriter(zookeepers, timeInMillis, scheme, auth);
- return instance;
- }
-
private static CuratorFramework constructCurator(String zooKeepers, int sessionTimeout, String scheme, byte[] auth) {
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
@@ -83,12 +79,11 @@ public class CuratorReaderWriter extends CuratorReader {
CuratorFramework curator = getCurator();
try {
boolean exists = curator.checkExists().forPath(zPath) != null;
-
-
- if (!exists || policy.equals(NodeExistsPolicy.SEQUENTIAL)) {
+ // TODO this should probably be tweaked by to a try catch based implementation
+ // Needs to be made (caseless), needs to make the sequential node (Sequential), or needs to fail (FAIL)
+ if (!exists || policy.equals(NodeExistsPolicy.SEQUENTIAL) || policy.equals(NodeExistsPolicy.FAIL)) {
return curator.create().withMode(mode).withACL(acls).forPath(zPath, data);
- }
- else if (policy.equals(NodeExistsPolicy.OVERWRITE)) {
+ } else if (policy.equals(NodeExistsPolicy.OVERWRITE)) {
curator.setData().withVersion(version).forPath(zPath, data);
return zPath;
}
@@ -107,8 +102,7 @@ public class CuratorReaderWriter extends CuratorReader {
return putPersistentData(zPath, data, -1, policy);
}
- public boolean putPersistentDataWithACL(String zPath, byte[] data, NodeExistsPolicy policy, List<ACL> acls)
- throws KeeperException, InterruptedException {
+ public boolean putPersistentDataWithACL(String zPath, byte[] data, NodeExistsPolicy policy, List<ACL> acls) throws KeeperException, InterruptedException {
return putData(zPath, data, CreateMode.PERSISTENT, -1, policy, acls) != null;
}
@@ -191,9 +185,9 @@ public class CuratorReaderWriter extends CuratorReader {
if (data == null)
return data;
if (privateACL)
- putPrivatePersistentData(zPath, createValue, NodeExistsPolicy.OVERWRITE);
+ putPrivatePersistentData(zPath, data, NodeExistsPolicy.OVERWRITE);
else
- putPersistentData(zPath, createValue, NodeExistsPolicy.OVERWRITE);
+ putPersistentData(zPath, data, NodeExistsPolicy.OVERWRITE);
return data;
}
@@ -205,6 +199,23 @@ public class CuratorReaderWriter extends CuratorReader {
}
}
+ Map<String,EnsurePath> ensurePaths = new HashMap<String,EnsurePath>();
+
+ public void ensurePath(String path) throws KeeperException, InterruptedException {
+ EnsurePath ep = ensurePaths.get(path);
+ if (ep == null) {
+ ep = getCurator().newNamespaceAwareEnsurePath(path);
+ ensurePaths.put(path, ep);
+ }
+ try {
+ ep.ensure(getCurator().getZookeeperClient());
+ } catch (Exception e) {
+ throw CuratorUtil.manageException(e);
+ }
+ }
+
+ // Should probably be using ensurePath
+ @Deprecated
public void mkdirs(String path) throws KeeperException, InterruptedException {
try {
getCurator().create().creatingParentsIfNeeded().forPath(path);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorSession.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorSession.java b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorSession.java
index 51b3476..b040020 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorSession.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorSession.java
@@ -39,22 +39,18 @@ class CuratorSession {
}
private static CuratorFramework constructCurator(String zookeeperConnectString, int sessionTimeoutMs, String namespace, String scheme, byte[] bytes) {
- CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder().canBeReadOnly(true).sessionTimeoutMs(sessionTimeoutMs).retryPolicy(retry)
+ CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder().sessionTimeoutMs(sessionTimeoutMs).retryPolicy(retry)
.connectString(zookeeperConnectString);
if (scheme != null && bytes != null)
builder = builder.authorization(scheme, bytes);
if (namespace != null)
builder = builder.namespace(namespace);
- CuratorFramework toRet = builder.build();
+ final CuratorFramework toRet = builder.build();
toRet.start();
return toRet;
}
- public static synchronized CuratorFramework getSession(String zooKeepers, int timeout) {
- return getSession(zooKeepers, timeout, null, null);
- }
-
public static synchronized CuratorFramework getSession(String zooKeepers, int timeout, String scheme, byte[] auth) {
String sessionKey = sessionKey(zooKeepers, timeout, scheme, auth);
@@ -75,7 +71,8 @@ class CuratorSession {
sessions.put(sessionKey, curator);
if (auth != null && !sessions.containsKey(readOnlySessionKey))
sessions.put(readOnlySessionKey, curator);
- }
+ }
+
return curator;
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorUtil.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorUtil.java b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorUtil.java
index fee9712..008cd24 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorUtil.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/curator/CuratorUtil.java
@@ -16,7 +16,6 @@
*/
package org.apache.accumulo.fate.curator;
-import java.io.File;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
@@ -27,7 +26,9 @@ import java.util.List;
import org.apache.accumulo.fate.util.UtilWaitThread;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.ChildData;
+import org.apache.curator.utils.ZKPaths;
import org.apache.zookeeper.KeeperException;
+import org.apache.zookeeper.KeeperException.Code;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.common.PathUtils;
import org.apache.zookeeper.data.Stat;
@@ -37,20 +38,24 @@ public class CuratorUtil {
SKIP, CREATE, FAIL
}
+ @Deprecated
public static String getNodeName(ChildData node) {
return getNodeName(node.getPath());
}
+ @Deprecated
public static String getNodeName(String nodePath) {
- return new File(nodePath).getName();
+ return ZKPaths.getNodeFromPath(nodePath);
}
+ @Deprecated
public static String getNodeParent(ChildData node) {
return getNodeParent(node.getPath());
}
+ @Deprecated
public static String getNodeParent(String nodePath) {
- return new File(nodePath).getParent();
+ return ZKPaths.getPathAndNode(nodePath).getPath();
}
public static void recursiveDelete(CuratorFramework curator, final String pathRoot, int version) throws KeeperException, InterruptedException {
@@ -62,6 +67,11 @@ public class CuratorUtil {
try {
curator.delete().withVersion(version).forPath(tree.get(i));
} catch (Exception e) {
+ if (e instanceof KeeperException) {
+ KeeperException ke = (KeeperException) e;
+ if (ke.code().equals(Code.NONODE))
+ continue;
+ }
throw CuratorUtil.manageException(e);
} // Delete all versions of the node
}
@@ -81,6 +91,11 @@ public class CuratorUtil {
try {
children = curator.getChildren().forPath(node);
} catch (Exception e) {
+ if (e instanceof KeeperException) {
+ KeeperException ke = (KeeperException) e;
+ if (ke.code().equals(Code.NONODE))
+ continue;
+ }
throw CuratorUtil.manageException(e);
}
for (final String child : children) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java b/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java
index 345889d..508d446 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java
@@ -74,7 +74,7 @@ public class ZooLock implements Watcher {
}
public ZooLock(String zookeepers, int timeInMillis, String scheme, byte[] auth, String path) {
- this(new CuratorCaches(zookeepers, timeInMillis), CuratorReaderWriter.getInstance(zookeepers, timeInMillis, scheme, auth), path);
+ this(CuratorCaches.getInstance(zookeepers, timeInMillis), new CuratorReaderWriter(zookeepers, timeInMillis, scheme, auth), path);
}
protected ZooLock(CuratorCaches zc, CuratorReaderWriter zrw, String path) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooQueueLock.java
----------------------------------------------------------------------
diff --git a/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooQueueLock.java b/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooQueueLock.java
index bea7ad6..b11c0fb 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooQueueLock.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/zookeeper/ZooQueueLock.java
@@ -40,7 +40,7 @@ public class ZooQueueLock implements QueueLock {
public ZooQueueLock(String zookeepers, int timeInMillis, String scheme, byte[] auth, String path, boolean ephemeral) throws KeeperException,
InterruptedException {
- this(CuratorReaderWriter.getInstance(zookeepers, timeInMillis, scheme, auth), path, ephemeral);
+ this(new CuratorReaderWriter(zookeepers, timeInMillis, scheme, auth), path, ephemeral);
}
protected ZooQueueLock(CuratorReaderWriter zrw, String path, boolean ephemeral) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java b/server/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
index 6c3f110..c4b0058 100644
--- a/server/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
+++ b/server/src/main/java/org/apache/accumulo/server/client/ClientServiceHandler.java
@@ -78,7 +78,6 @@ public class ClientServiceHandler implements ClientService.Iface {
String tableId = Tables.getNameToIdMap(instance).get(tableName);
if (tableId == null) {
// maybe the table exist, but the cache was not updated yet... so try to clear the cache and check again
- Tables.clearCache(instance);
tableId = Tables.getNameToIdMap(instance).get(tableName);
if (tableId == null)
throw new ThriftTableOperationException(null, tableName, operation, TableOperationExceptionType.NOTFOUND, null);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java b/server/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
index 6495e55..14e8c81 100644
--- a/server/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
+++ b/server/src/main/java/org/apache/accumulo/server/client/HdfsZooInstance.java
@@ -65,7 +65,7 @@ public class HdfsZooInstance implements Instance {
private HdfsZooInstance() {
AccumuloConfiguration acuConf = ServerConfiguration.getSiteConfiguration();
- zooCache = new CuratorCaches(acuConf.get(Property.INSTANCE_ZK_HOST), (int) acuConf.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT));
+ zooCache = CuratorCaches.getInstance(acuConf.get(Property.INSTANCE_ZK_HOST), (int) acuConf.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT));
}
private static HdfsZooInstance cachedHdfsZooInstance = null;
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java b/server/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java
index 70b8676..cdca810 100644
--- a/server/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java
+++ b/server/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java
@@ -31,15 +31,14 @@ import org.apache.accumulo.core.conf.ConfigurationObserver;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.zookeeper.ZooUtil;
import org.apache.accumulo.fate.curator.CuratorUtil;
-import org.apache.accumulo.server.client.HdfsZooInstance;
-import org.apache.accumulo.server.zookeeper.ZooCache;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.log4j.Logger;
public class TableConfiguration extends AccumuloConfiguration {
private static final Logger log = Logger.getLogger(TableConfiguration.class);
- private static ZooCache tablePropCache = null;
+ private static CuratorCaches tablePropCache = null;
private final String instanceId;
private final AccumuloConfiguration parent;
@@ -55,7 +54,7 @@ public class TableConfiguration extends AccumuloConfiguration {
if (tablePropCache == null)
synchronized (TableConfiguration.class) {
if (tablePropCache == null)
- tablePropCache = new ZooCache(HdfsZooInstance.getInstance().getConfiguration());
+ tablePropCache = CuratorCaches.getInstance();
}
String confPath = ZooUtil.getRoot(instanceId) + Constants.ZTABLES + '/' + table + Constants.ZTABLE_CONF;
tablePropCache.getChildren(confPath, new TableConfWatcher(this));
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java b/server/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java
index 3a9b73b..98fd63b 100644
--- a/server/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java
+++ b/server/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java
@@ -52,7 +52,7 @@ public class ZooConfiguration extends AccumuloConfiguration {
synchronized public static ZooConfiguration getInstance(Instance inst, AccumuloConfiguration parent) {
if (instance == null) {
- propCache = new CuratorCaches(inst.getZooKeepers(), inst.getZooKeepersSessionTimeOut());
+ propCache = CuratorCaches.getInstance(inst.getZooKeepers(), inst.getZooKeepersSessionTimeOut());
instance = new ZooConfiguration(parent);
instanceId = inst.getInstanceID();
// Sets up a child cache listener for all properties
@@ -63,7 +63,7 @@ public class ZooConfiguration extends AccumuloConfiguration {
synchronized public static ZooConfiguration getInstance(AccumuloConfiguration parent) {
if (instance == null) {
- propCache = new CuratorCaches(parent.get(Property.INSTANCE_ZK_HOST), (int) parent.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT));
+ propCache = CuratorCaches.getInstance(parent.get(Property.INSTANCE_ZK_HOST), (int) parent.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT));
instance = new ZooConfiguration(parent);
@SuppressWarnings("deprecation")
String deprecatedInstanceIdFromHdfs = ZooKeeperInstance.getInstanceIDFromHdfs(ServerConstants.getInstanceIdLocation());
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java b/server/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
index 4673357..c03d27f 100644
--- a/server/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
+++ b/server/src/main/java/org/apache/accumulo/server/constraints/MetadataConstraints.java
@@ -35,15 +35,15 @@ import org.apache.accumulo.core.zookeeper.ZooUtil;
import org.apache.accumulo.fate.curator.CuratorUtil;
import org.apache.accumulo.fate.zookeeper.TransactionWatcher.Arbitrator;
import org.apache.accumulo.server.client.HdfsZooInstance;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.accumulo.server.zookeeper.TransactionWatcher.ZooArbitrator;
-import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.accumulo.server.zookeeper.ZooLock;
import org.apache.hadoop.io.Text;
import org.apache.log4j.Logger;
public class MetadataConstraints implements Constraint {
- private ZooCache zooCache = null;
+ private CuratorCaches zooCache = null;
private String zooRoot = null;
private static final Logger log = Logger.getLogger(MetadataConstraints.class);
@@ -237,7 +237,7 @@ public class MetadataConstraints implements Constraint {
}
} else if (new ColumnFQ(columnUpdate).equals(MetadataTable.LOCK_COLUMN)) {
if (zooCache == null) {
- zooCache = new ZooCache();
+ zooCache = CuratorCaches.getInstance();
}
if (zooRoot == null) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/curator/CuratorCaches.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/curator/CuratorCaches.java b/server/src/main/java/org/apache/accumulo/server/curator/CuratorCaches.java
new file mode 100644
index 0000000..173f999
--- /dev/null
+++ b/server/src/main/java/org/apache/accumulo/server/curator/CuratorCaches.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.accumulo.server.curator;
+
+import org.apache.accumulo.core.conf.AccumuloConfiguration;
+import org.apache.accumulo.core.conf.Property;
+import org.apache.accumulo.server.conf.ServerConfiguration;
+
+public class CuratorCaches extends org.apache.accumulo.fate.curator.CuratorCaches {
+ private static CuratorCaches instance = null;
+
+ private CuratorCaches(String string, int timeInMillis, String secret) {
+ super(string, timeInMillis, CuratorReaderWriter.SCHEME, (CuratorReaderWriter.USER + ":" + secret).getBytes());
+ }
+
+ public static CuratorCaches getInstance() {
+ AccumuloConfiguration conf = ServerConfiguration.getSiteConfiguration();
+ return getInstance(conf.get(Property.INSTANCE_ZK_HOST), (int) conf.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT), conf.get(Property.INSTANCE_SECRET));
+ }
+
+ public static CuratorCaches getInstance(String secret) {
+ AccumuloConfiguration conf = ServerConfiguration.getSiteConfiguration();
+ return getInstance(conf.get(Property.INSTANCE_ZK_HOST), (int) conf.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT), secret);
+ }
+
+ // This should be a singleton since the caches are here.
+ public static synchronized CuratorCaches getInstance(String zkHosts, int timeout, String secret) {
+ if (instance == null) {
+ instance = new CuratorCaches(zkHosts, timeout, secret);
+ }
+
+ return instance;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/curator/CuratorReaderWriter.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/curator/CuratorReaderWriter.java b/server/src/main/java/org/apache/accumulo/server/curator/CuratorReaderWriter.java
index 0fd1bcb..3a0ba5a 100644
--- a/server/src/main/java/org/apache/accumulo/server/curator/CuratorReaderWriter.java
+++ b/server/src/main/java/org/apache/accumulo/server/curator/CuratorReaderWriter.java
@@ -19,10 +19,11 @@ package org.apache.accumulo.server.curator;
import org.apache.accumulo.core.conf.AccumuloConfiguration;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.server.conf.ServerConfiguration;
+import org.apache.log4j.Logger;
public class CuratorReaderWriter extends org.apache.accumulo.fate.curator.CuratorReaderWriter {
- private static final String SCHEME = "digest";
- private static final String USER = "accumulo";
+ protected static final String SCHEME = "digest";
+ protected static final String USER = "accumulo";
private static CuratorReaderWriter instance = null;
private CuratorReaderWriter(String string, int timeInMillis, String secret) {
@@ -39,9 +40,12 @@ public class CuratorReaderWriter extends org.apache.accumulo.fate.curator.Curato
return getInstance(conf.get(Property.INSTANCE_ZK_HOST), (int) conf.getTimeInMillis(Property.INSTANCE_ZK_TIMEOUT), secret);
}
+ // This probably doesn't need to be singletons since the CuratorFrameworks are already treated as such. CuratorReaderWriter is pretty lightweight.
public static synchronized CuratorReaderWriter getInstance(String zkHosts, int timeout, String secret) {
if (instance == null) {
instance = new CuratorReaderWriter(zkHosts, timeout, secret);
+ } else {
+ Logger.getLogger(CuratorReaderWriter.class).error("Returning caches curator against " + instance.getCurator().getZookeeperClient().getCurrentConnectionString(), new RuntimeException());
}
return instance;
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/gc/SimpleGarbageCollector.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/gc/SimpleGarbageCollector.java b/server/src/main/java/org/apache/accumulo/server/gc/SimpleGarbageCollector.java
index 293c54d..2a7021b 100644
--- a/server/src/main/java/org/apache/accumulo/server/gc/SimpleGarbageCollector.java
+++ b/server/src/main/java/org/apache/accumulo/server/gc/SimpleGarbageCollector.java
@@ -77,6 +77,7 @@ import org.apache.accumulo.server.Accumulo;
import org.apache.accumulo.server.ServerConstants;
import org.apache.accumulo.server.client.HdfsZooInstance;
import org.apache.accumulo.server.conf.ServerConfiguration;
+import org.apache.accumulo.server.curator.CuratorReaderWriter;
import org.apache.accumulo.server.fs.VolumeManager;
import org.apache.accumulo.server.fs.VolumeManagerImpl;
import org.apache.accumulo.server.master.state.tables.TableManager;
@@ -160,6 +161,8 @@ public class SimpleGarbageCollector implements Iface {
gc.init(fs, instance, SecurityConstants.getSystemCredentials(), serverConf.getConfiguration().getBoolean(Property.GC_TRASH_IGNORE));
Accumulo.enableTracing(address, "gc");
gc.run();
+
+ CuratorReaderWriter.getInstance().getCurator().close();
}
public SimpleGarbageCollector() {}
@@ -349,7 +352,6 @@ public class SimpleGarbageCollector implements Iface {
}
}
- Tables.clearCache(instance);
Set<String> tableIdsInZookeeper = Tables.getIdToNameMap(instance).keySet();
tableIdsWithDeletes.removeAll(tableIdsInZookeeper);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java b/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
index 16a5b07..70dc21c 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/LiveTServerSet.java
@@ -41,13 +41,13 @@ import org.apache.accumulo.core.util.ServerServices;
import org.apache.accumulo.core.util.ThriftUtil;
import org.apache.accumulo.core.zookeeper.ZooUtil;
import org.apache.accumulo.fate.curator.CuratorUtil;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.accumulo.server.curator.CuratorReaderWriter;
import org.apache.accumulo.server.master.state.TServerInstance;
import org.apache.accumulo.server.security.SecurityConstants;
import org.apache.accumulo.server.util.AddressUtil;
import org.apache.accumulo.server.util.Halt;
import org.apache.accumulo.server.util.time.SimpleTimer;
-import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.accumulo.server.zookeeper.ZooLock;
import org.apache.accumulo.trace.instrument.Tracer;
import org.apache.curator.framework.CuratorFramework;
@@ -72,7 +72,7 @@ public class LiveTServerSet {
private final Listener cback;
private final Instance instance;
private final AccumuloConfiguration conf;
- private ZooCache zooCache;
+ private CuratorCaches zooCache;
public class TServerConnection {
private final InetSocketAddress address;
@@ -217,9 +217,9 @@ public class LiveTServerSet {
}
- public synchronized ZooCache getZooCache() {
+ public synchronized CuratorCaches getZooCache() {
if (zooCache == null)
- zooCache = new ZooCache();
+ zooCache = CuratorCaches.getInstance();
return zooCache;
}
@@ -243,7 +243,6 @@ public class LiveTServerSet {
}, 0, 5000);
Collection<ChildData> result = getZooCache().getChildren(ZooUtil.getRoot(instance) + Constants.ZTSERVERS, serversListener);
- log.debug("Attaching SERVERSLISTENER to " + (ZooUtil.getRoot(instance) + Constants.ZTSERVERS) + " - received " + result);
}
private void deleteServerNode(String server) {
@@ -272,7 +271,6 @@ public class LiveTServerSet {
@Override
public void childEvent(CuratorFramework curator, PathChildrenCacheEvent event) throws Exception {
final Set<TServerInstance> doomed = new HashSet<TServerInstance>();
- log.debug("SERVERSLISTENER - Received event " + event.getType() + " for node " + event.getData().getPath());
String server = CuratorUtil.getNodeName(event.getData());
TServerInfo info = current.get(server);
@@ -309,8 +307,7 @@ public class LiveTServerSet {
public void childEvent(CuratorFramework curator, PathChildrenCacheEvent event) throws Exception {
final Set<TServerInstance> updates = new HashSet<TServerInstance>();
final Set<TServerInstance> doomed = new HashSet<TServerInstance>();
- log.debug("LOCKLISTENER - Received event " + event.getType() + " for node " + event.getData().getPath());
-
+
String server = CuratorUtil.getNodeName(CuratorUtil.getNodeParent(event.getData()));
TServerInfo info = current.get(server);
@@ -368,7 +365,6 @@ public class LiveTServerSet {
for (TServerInfo c : current.values()) {
result.add(c.instance);
}
- log.debug("Returning " + result + " for current tservers");
return result;
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/Master.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/Master.java b/server/src/main/java/org/apache/accumulo/server/master/Master.java
index f5b5530..5aaf401 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/Master.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/Master.java
@@ -398,7 +398,6 @@ public class Master implements LiveTServerSet.Listener, TableObserver, CurrentSt
}
public void mustBeOnline(final String tableId) throws ThriftTableOperationException {
- Tables.clearCache(instance);
if (!Tables.getTableState(instance, tableId).equals(TableState.ONLINE))
throw new ThriftTableOperationException(tableId, null, TableOperation.MERGE, TableOperationExceptionType.OFFLINE, "table is not online");
}
@@ -480,7 +479,7 @@ public class Master implements LiveTServerSet.Listener, TableObserver, CurrentSt
public byte[] mutate(byte[] currentValue) throws Exception {
long flushID = Long.parseLong(new String(currentValue));
flushID++;
- return ("" + flushID).getBytes();
+ return (Long.toString(flushID)).getBytes();
}
});
} catch (NoNodeException nne) {
@@ -1529,6 +1528,7 @@ public class Master implements LiveTServerSet.Listener, TableObserver, CurrentSt
for (TabletGroupWatcher watcher : watchers) {
watcher.join(remaining(deadline));
}
+
log.info("exiting");
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/TabletGroupWatcher.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/TabletGroupWatcher.java b/server/src/main/java/org/apache/accumulo/server/master/TabletGroupWatcher.java
index a7fb4c9..d937e3e 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/TabletGroupWatcher.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/TabletGroupWatcher.java
@@ -73,7 +73,6 @@ import org.apache.hadoop.io.Text;
import org.apache.thrift.TException;
class TabletGroupWatcher extends Daemon {
-
private final Master master;
final TabletStateStore store;
final TabletGroupWatcher dependentWatcher;
@@ -135,6 +134,7 @@ class TabletGroupWatcher extends Daemon {
if (tls == null) {
continue;
}
+
// ignore entries for tables that do not exist in zookeeper
if (TableManager.getInstance().getTableState(tls.extent.getTableId().toString()) == null)
continue;
@@ -645,4 +645,4 @@ class TabletGroupWatcher extends Daemon {
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/recovery/RecoveryManager.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/recovery/RecoveryManager.java b/server/src/main/java/org/apache/accumulo/server/master/recovery/RecoveryManager.java
index fb3cc8f..89bd3dd 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/recovery/RecoveryManager.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/recovery/RecoveryManager.java
@@ -35,9 +35,9 @@ import org.apache.accumulo.core.data.KeyExtent;
import org.apache.accumulo.core.util.NamingThreadFactory;
import org.apache.accumulo.core.zookeeper.ZooUtil;
import org.apache.accumulo.server.ServerConstants;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.accumulo.server.master.Master;
import org.apache.accumulo.server.zookeeper.DistributedWorkQueue;
-import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.hadoop.fs.Path;
import org.apache.log4j.Logger;
import org.apache.zookeeper.KeeperException;
@@ -51,12 +51,12 @@ public class RecoveryManager {
private Set<String> sortsQueued = new HashSet<String>();
private ScheduledExecutorService executor;
private Master master;
- private ZooCache zooCache;
+ private CuratorCaches zooCache;
public RecoveryManager(Master master) {
this.master = master;
executor = Executors.newScheduledThreadPool(4, new NamingThreadFactory("Walog sort starter "));
- zooCache = new ZooCache();
+ zooCache = CuratorCaches.getInstance();
try {
List<String> workIDs = new DistributedWorkQueue(ZooUtil.getRoot(master.getInstance()) + Constants.ZRECOVERY).getWorkQueued();
sortsQueued.addAll(workIDs);
@@ -107,7 +107,7 @@ public class RecoveryManager {
}
private void initiateSort(String sortId, String source, final String destination) throws KeeperException, InterruptedException, IOException {
- String work = source + "|" + destination;
+ String work = source + "|" + destination;
new DistributedWorkQueue(ZooUtil.getRoot(master.getInstance()) + Constants.ZRECOVERY).addWork(sortId, work.getBytes());
synchronized (this) {
@@ -141,7 +141,7 @@ public class RecoveryManager {
sortsQueued.remove(sortId);
}
}
-
+
if (master.getFileSystem().exists(new Path(dest, "finished"))) {
synchronized (this) {
closeTasksQueued.remove(sortId);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java b/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java
index e39664c..17d5ede 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/DeadServerList.java
@@ -33,7 +33,7 @@ public class DeadServerList {
this.path = path;
CuratorReaderWriter zoo = CuratorReaderWriter.getInstance();
try {
- zoo.mkdirs(path);
+ zoo.ensurePath(path);
} catch (Exception ex) {
log.error("Unable to make parent directories of " + path, ex);
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataStateStore.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataStateStore.java b/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataStateStore.java
index ec25f85..2f2e07b 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataStateStore.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataStateStore.java
@@ -33,9 +33,10 @@ import org.apache.accumulo.core.util.RootTable;
import org.apache.accumulo.server.client.HdfsZooInstance;
import org.apache.accumulo.server.security.SecurityConstants;
import org.apache.hadoop.io.Text;
+import org.apache.log4j.Logger;
public class MetaDataStateStore extends TabletStateStore {
- // private static final Logger log = Logger.getLogger(MetaDataStateStore.class);
+ private static final Logger log = Logger.getLogger(MetaDataStateStore.class);
private static final int THREADS = 4;
private static final int LATENCY = 1000;
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java b/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
index 9a20b2e..fbe3d97 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/MetaDataTableScanner.java
@@ -120,7 +120,8 @@ public class MetaDataTableScanner implements Iterator<TabletLocationState> {
@Override
public TabletLocationState next() {
try {
- return fetch();
+ TabletLocationState toRet = fetch();
+ return toRet;
} catch (RuntimeException ex) {
// something is wrong with the records in the !METADATA table, just skip over it
log.error(ex, ex);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java b/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
index 67ba62a..2aca575 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
@@ -46,7 +46,7 @@ public class TabletStateChangeIterator extends SkippingIterator {
private static final String SERVERS_OPTION = "servers";
private static final String TABLES_OPTION = "tables";
private static final String MERGES_OPTION = "merges";
- // private static final Logger log = Logger.getLogger(TabletStateChangeIterator.class);
+// private static final Logger log = Logger.getLogger(TabletStateChangeIterator.class);
Set<TServerInstance> current;
Set<String> onlineTables;
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java b/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java
index 95b0771..38db162 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/ZooStore.java
@@ -22,8 +22,8 @@ import java.util.List;
import org.apache.accumulo.core.zookeeper.ZooUtil;
import org.apache.accumulo.fate.curator.CuratorReaderWriter.NodeExistsPolicy;
import org.apache.accumulo.server.client.HdfsZooInstance;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.accumulo.server.curator.CuratorReaderWriter;
-import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.log4j.Logger;
@@ -33,8 +33,9 @@ public class ZooStore implements DistributedStore {
String basePath;
- ZooCache cache = new ZooCache();
+ CuratorCaches cache = CuratorCaches.getInstance();
+ // TODO I think this needs attention
public ZooStore(String basePath) throws IOException {
if (basePath.endsWith("/"))
basePath = basePath.substring(0, basePath.length() - 1);
@@ -75,7 +76,6 @@ public class ZooStore implements DistributedStore {
try {
path = relative(path);
CuratorReaderWriter.getInstance().putPersistentData(path, bs, NodeExistsPolicy.OVERWRITE);
- cache.clear();
log.debug("Wrote " + new String(bs) + " to " + path);
} catch (Exception ex) {
throw new DistributedStoreException(ex);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java b/server/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
index bcc342c..fb09ccf 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/ZooTabletStateStore.java
@@ -89,7 +89,6 @@ public class ZooTabletStateStore extends TabletStateStore {
}
}
TabletLocationState result = new TabletLocationState(RootTable.EXTENT, futureSession, currentSession, lastSession, logs, false);
- log.debug("Returning root tablet state: " + result);
return result;
} catch (Exception ex) {
throw new RuntimeException(ex);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java b/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java
index 296ffb3..1e37718 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/tables/TableManager.java
@@ -32,13 +32,12 @@ import org.apache.accumulo.fate.curator.CuratorReaderWriter.Mutator;
import org.apache.accumulo.fate.curator.CuratorReaderWriter.NodeExistsPolicy;
import org.apache.accumulo.fate.curator.CuratorUtil;
import org.apache.accumulo.server.client.HdfsZooInstance;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.accumulo.server.curator.CuratorReaderWriter;
import org.apache.accumulo.server.util.TablePropUtil;
-import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent;
-import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent.Type;
import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener;
import org.apache.log4j.Logger;
import org.apache.zookeeper.KeeperException;
@@ -53,7 +52,7 @@ public class TableManager {
private static TableManager tableManager = null;
private final Instance instance;
- private ZooCache zooStateCache;
+ private CuratorCaches zooStateCache;
public static void prepareNewTableState(String instanceId, String tableId, String tableName, TableState state, NodeExistsPolicy existsPolicy)
throws KeeperException, InterruptedException {
@@ -81,7 +80,7 @@ public class TableManager {
private TableManager() {
instance = HdfsZooInstance.getInstance();
- zooStateCache = new ZooCache();
+ zooStateCache = CuratorCaches.getInstance();
setupListeners();
updateTableStateCache();
}
@@ -168,7 +167,6 @@ public class TableManager {
String sState = new String(data);
try {
tState = TableState.valueOf(sState);
- log.debug("updateTableStateCache reporting " + tableId + " with state " + tState + " based on " + new String(data));
} catch (IllegalArgumentException e) {
log.error("Unrecognized state for table with tableId=" + tableId + ": " + sState);
}
@@ -234,10 +232,15 @@ public class TableManager {
private class AllTablesListener implements PathChildrenCacheListener {
@Override
public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
- if (event.getType().equals(Type.CHILD_ADDED)) {
- zooStateCache.getChildren(event.getData().getPath(), new TableListener());
- } else if (event.getType().equals(Type.CHILD_REMOVED)) {
- zooStateCache.clear(event.getData().getPath());
+ switch (event.getType()) {
+ case CHILD_ADDED:
+ case INITIALIZED:
+ zooStateCache.getChildren(event.getData().getPath(), new TableListener());
+ break;
+ case CHILD_REMOVED:
+ zooStateCache.clear(event.getData().getPath());
+ default:
+ break;
}
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/BulkImport.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/BulkImport.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/BulkImport.java
index e8146f9..a08fa3c 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/BulkImport.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/BulkImport.java
@@ -127,7 +127,6 @@ public class BulkImport extends MasterRepo {
return 100;
Instance instance = HdfsZooInstance.getInstance();
- Tables.clearCache(instance);
if (Tables.getTableState(instance, tableId) == TableState.ONLINE) {
long reserve1, reserve2;
reserve1 = reserve2 = Utils.reserveHdfsDirectory(sourceDir, tid);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/CloneTable.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/CloneTable.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/CloneTable.java
index b57b003..4334b36 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/CloneTable.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/CloneTable.java
@@ -21,7 +21,6 @@ import java.util.Map;
import java.util.Set;
import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.impl.Tables;
import org.apache.accumulo.core.client.impl.thrift.TableOperation;
import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.master.state.tables.TableState;
@@ -146,7 +145,6 @@ class CloneZookeeper extends MasterRepo {
TableManager.getInstance().cloneTable(cloneInfo.srcTableId, cloneInfo.tableId, cloneInfo.tableName, cloneInfo.propertiesToSet,
cloneInfo.propertiesToExclude, NodeExistsPolicy.OVERWRITE);
- Tables.clearCache(instance);
return new CloneMetadata(cloneInfo);
} finally {
Utils.tableNameLock.unlock();
@@ -155,10 +153,8 @@ class CloneZookeeper extends MasterRepo {
@Override
public void undo(long tid, Master environment) throws Exception {
- Instance instance = HdfsZooInstance.getInstance();
TableManager.getInstance().removeTable(cloneInfo.tableId);
Utils.unreserveTable(cloneInfo.tableId, tid, true);
- Tables.clearCache(instance);
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java
index 5d98ed4..7b8f064 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/CompactRange.java
@@ -144,7 +144,6 @@ class CompactionDriver extends MasterRepo {
long scanTime = System.currentTimeMillis() - t1;
Instance instance = master.getInstance();
- Tables.clearCache(instance);
if (tabletCount == 0 && !Tables.exists(instance, tableId))
throw new ThriftTableOperationException(tableId, null, TableOperation.COMPACT, TableOperationExceptionType.NOTFOUND, null);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/CreateTable.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/CreateTable.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/CreateTable.java
index abce1a9..e130597 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/CreateTable.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/CreateTable.java
@@ -23,7 +23,6 @@ import java.util.Map.Entry;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.admin.TimeType;
-import org.apache.accumulo.core.client.impl.Tables;
import org.apache.accumulo.core.client.impl.thrift.TableOperation;
import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.data.KeyExtent;
@@ -153,7 +152,7 @@ class CreateDir extends MasterRepo {
@Override
public void undo(long tid, Master master) throws Exception {
VolumeManager fs = master.getFileSystem();
- for(String dir : ServerConstants.getTablesDirs()) {
+ for (String dir : ServerConstants.getTablesDirs()) {
fs.deleteRecursively(new Path(dir + "/" + tableInfo.tableId));
}
@@ -191,7 +190,6 @@ class PopulateZookeeper extends MasterRepo {
for (Entry<String,String> entry : tableInfo.props.entrySet())
TablePropUtil.setTableProperty(tableInfo.tableId, entry.getKey(), entry.getValue());
- Tables.clearCache(instance);
return new CreateDir(tableInfo);
} finally {
Utils.tableNameLock.unlock();
@@ -201,10 +199,8 @@ class PopulateZookeeper extends MasterRepo {
@Override
public void undo(long tid, Master master) throws Exception {
- Instance instance = master.getInstance();
TableManager.getInstance().removeTable(tableInfo.tableId);
Utils.unreserveTable(tableInfo.tableId, tid, true);
- Tables.clearCache(instance);
}
}
@@ -232,9 +228,7 @@ class SetupPermissions extends MasterRepo {
}
}
- // setup permissions in zookeeper before table info in zookeeper
- // this way concurrent users will not get a spurious permission denied
- // error
+ // setup permissions in zookeeper before table info in zookeeper this way concurrent users will not get a spurious permission denied error
return new PopulateZookeeper(tableInfo);
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java
index 7b4c69b..1d746ef 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/DeleteTable.java
@@ -24,7 +24,6 @@ import org.apache.accumulo.core.client.BatchScanner;
import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.IteratorSetting;
import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.client.impl.Tables;
import org.apache.accumulo.core.client.impl.thrift.TableOperation;
import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
import org.apache.accumulo.core.data.Key;
@@ -179,7 +178,6 @@ class CleanUp extends MasterRepo {
// remove table from zookeeper
try {
TableManager.getInstance().removeTable(tableId);
- Tables.clearCache(master.getInstance());
} catch (Exception e) {
log.error("Failed to find table id in zookeeper", e);
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java
index 5ec1eb9..a3fc269 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java
@@ -77,7 +77,6 @@ class WriteExportFiles extends MasterRepo {
private void checkOffline(Connector conn) throws Exception {
if (Tables.getTableState(conn.getInstance(), tableInfo.tableID) != TableState.OFFLINE) {
- Tables.clearCache(conn.getInstance());
if (Tables.getTableState(conn.getInstance(), tableInfo.tableID) != TableState.OFFLINE) {
throw new ThriftTableOperationException(tableInfo.tableID, tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER,
"Table is not offline");
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/ImportTable.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/ImportTable.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/ImportTable.java
index 349e6e0..bb01bf1 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/ImportTable.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/ImportTable.java
@@ -35,7 +35,6 @@ import org.apache.accumulo.core.client.BatchWriter;
import org.apache.accumulo.core.client.BatchWriterConfig;
import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.admin.TableOperationsImpl;
-import org.apache.accumulo.core.client.impl.Tables;
import org.apache.accumulo.core.client.impl.thrift.TableOperation;
import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
import org.apache.accumulo.core.client.impl.thrift.ThriftSecurityException;
@@ -315,7 +314,7 @@ class MapImportFileNames extends MasterRepo {
VolumeManager fs = environment.getFileSystem();
fs.mkdirs(new Path(tableInfo.importDir));
-
+
FileStatus[] files = fs.listStatus(new Path(tableInfo.exportDir));
UniqueNameAllocator namer = UniqueNameAllocator.getInstance();
@@ -436,8 +435,6 @@ class ImportPopulateZookeeper extends MasterRepo {
Utils.checkTableDoesNotExist(instance, tableInfo.tableName, tableInfo.tableId, TableOperation.CREATE);
TableManager.getInstance().addTable(tableInfo.tableId, tableInfo.tableName, NodeExistsPolicy.OVERWRITE);
-
- Tables.clearCache(instance);
} finally {
Utils.tableNameLock.unlock();
}
@@ -453,10 +450,8 @@ class ImportPopulateZookeeper extends MasterRepo {
@Override
public void undo(long tid, Master env) throws Exception {
- Instance instance = HdfsZooInstance.getInstance();
TableManager.getInstance().removeTable(tableInfo.tableId);
Utils.unreserveTable(tableInfo.tableId, tid, true);
- Tables.clearCache(instance);
}
}
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java b/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java
index 22103e2..18c3a34 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/tableOps/RenameTable.java
@@ -18,7 +18,6 @@ package org.apache.accumulo.server.master.tableOps;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.impl.Tables;
import org.apache.accumulo.core.client.impl.thrift.TableOperation;
import org.apache.accumulo.core.client.impl.thrift.TableOperationExceptionType;
import org.apache.accumulo.core.client.impl.thrift.ThriftTableOperationException;
@@ -71,7 +70,6 @@ public class RenameTable extends MasterRepo {
return newTableName.getBytes();
}
});
- Tables.clearCache(instance);
} finally {
Utils.tableNameLock.unlock();
Utils.unreserveTable(tableId, tid, true);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java b/server/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
index 03f2fb6..77b8c89 100644
--- a/server/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
+++ b/server/src/main/java/org/apache/accumulo/server/security/SecurityOperation.java
@@ -43,6 +43,7 @@ import org.apache.accumulo.core.util.MetadataTable;
import org.apache.accumulo.core.util.RootTable;
import org.apache.accumulo.server.client.HdfsZooInstance;
import org.apache.accumulo.server.conf.ServerConfiguration;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.accumulo.server.master.Master;
import org.apache.accumulo.server.security.handler.Authenticator;
import org.apache.accumulo.server.security.handler.Authorizor;
@@ -50,7 +51,6 @@ import org.apache.accumulo.server.security.handler.PermissionHandler;
import org.apache.accumulo.server.security.handler.ZKAuthenticator;
import org.apache.accumulo.server.security.handler.ZKAuthorizor;
import org.apache.accumulo.server.security.handler.ZKPermHandler;
-import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.hadoop.io.Text;
import org.apache.log4j.Logger;
@@ -64,7 +64,7 @@ public class SecurityOperation {
protected Authenticator authenticator;
protected PermissionHandler permHandle;
private static String rootUserName = null;
- private final ZooCache zooCache;
+ private final CuratorCaches zooCache;
private final String ZKUserPath;
protected static SecurityOperation instance;
@@ -110,7 +110,7 @@ public class SecurityOperation {
@Deprecated
public SecurityOperation(String instanceId) {
ZKUserPath = Constants.ZROOT + "/" + instanceId + "/users";
- zooCache = new ZooCache();
+ zooCache = CuratorCaches.getInstance();
}
public SecurityOperation(Authorizor author, Authenticator authent, PermissionHandler pm, String instanceId) {
http://git-wip-us.apache.org/repos/asf/accumulo/blob/a951e789/server/src/main/java/org/apache/accumulo/server/security/handler/ZKAuthenticator.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/security/handler/ZKAuthenticator.java b/server/src/main/java/org/apache/accumulo/server/security/handler/ZKAuthenticator.java
index 74d6730..2920859 100644
--- a/server/src/main/java/org/apache/accumulo/server/security/handler/ZKAuthenticator.java
+++ b/server/src/main/java/org/apache/accumulo/server/security/handler/ZKAuthenticator.java
@@ -28,8 +28,8 @@ import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
import org.apache.accumulo.core.client.security.tokens.PasswordToken;
import org.apache.accumulo.core.security.thrift.TCredentials;
import org.apache.accumulo.fate.curator.CuratorReaderWriter.NodeExistsPolicy;
+import org.apache.accumulo.server.curator.CuratorCaches;
import org.apache.accumulo.server.curator.CuratorReaderWriter;
-import org.apache.accumulo.server.zookeeper.ZooCache;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.log4j.Logger;
import org.apache.zookeeper.KeeperException;
@@ -40,7 +40,7 @@ public final class ZKAuthenticator implements Authenticator {
private static Authenticator zkAuthenticatorInstance = null;
private String ZKUserPath;
- private final ZooCache zooCache;
+ private final CuratorCaches zooCache;
public static synchronized Authenticator getInstance() {
if (zkAuthenticatorInstance == null)
@@ -49,7 +49,7 @@ public final class ZKAuthenticator implements Authenticator {
}
public ZKAuthenticator() {
- zooCache = new ZooCache();
+ zooCache = CuratorCaches.getInstance();
}
public void initialize(String instanceId, boolean initialize) {
@@ -150,7 +150,6 @@ public final class ZKAuthenticator implements Authenticator {
if (userExists(principal)) {
try {
synchronized (zooCache) {
- zooCache.clear(ZKUserPath + "/" + principal);
CuratorReaderWriter.getInstance().putPrivatePersistentData(ZKUserPath + "/" + principal, ZKSecurityTool.createPass(pt.getPassword()),
NodeExistsPolicy.OVERWRITE);
}