@Override public void action(List<String> clusters) { for (String cluster : clusters) { if (!tableWatchers.containsKey(cluster)) { WatchChildren clusterWatcher = new WatchChildren(_zk, ZookeeperPathConstants.getTablesPath(cluster)) .watch(new Tables(cluster)); tableWatchers.put(cluster, clusterWatcher); WatchNodeExistance watchNodeExistance = new WatchNodeExistance(_zk, ZookeeperPathConstants.getSafemodePath(cluster)) .watch(new SafeExistance(cluster)); safeModeWatchers.put(cluster, watchNodeExistance); } } List<String> clustersToCloseAndRemove = new ArrayList<String>(clusters); clustersToCloseAndRemove.removeAll(tableWatchers.keySet()); for (String cluster : clustersToCloseAndRemove) { WatchChildren watcher = tableWatchers.remove(cluster); if (watcher == null) { LOG.error("Error watcher is null [" + cluster + "] "); } else { watcher.close(); } } }
@Override public List<String> getTableList(String cluster) { LOG.debug("trace getTableList"); try { return _zk.getChildren(ZookeeperPathConstants.getTablesPath(cluster), false); } catch (KeeperException e) { throw new RuntimeException(e); } catch (InterruptedException e) { throw new RuntimeException(e); } }