private VisibilityLabelsCache(ZKWatcher watcher, Configuration conf) throws IOException { zkVisibilityWatcher = new ZKVisibilityLabelWatcher(watcher, this, conf); try { zkVisibilityWatcher.start(); } catch (KeeperException ke) { LOG.error("ZooKeeper initialization failed", ke); throw new IOException(ke); } }
/** * Creates the singleton instance, if not yet present, and returns the same. * @param watcher * @param conf * @return Singleton instance of VisibilityLabelsCache * @throws IOException */ public synchronized static VisibilityLabelsCache createAndGet(ZKWatcher watcher, Configuration conf) throws IOException { // VisibilityLabelService#init() for different regions (in same RS) passes same instance of // watcher as all get the instance from RS. // watcher != instance.zkVisibilityWatcher.getWatcher() - This check is needed only in UTs with // RS restart. It will be same JVM in which RS restarts and instance will be not null. But the // watcher associated with existing instance will be stale as the restarted RS will have new // watcher with it. if (instance == null || watcher != instance.zkVisibilityWatcher.getWatcher()) { instance = new VisibilityLabelsCache(watcher, conf); } return instance; }
@Override public void nodeDataChanged(String path) { if (path.equals(labelZnode) || path.equals(userAuthsZnode)) { try { watcher.sync(path); byte[] data = ZKUtil.getDataAndWatch(watcher, path); if (path.equals(labelZnode)) { refreshVisibilityLabelsCache(data); } else { refreshUserAuthsCache(data); } } catch (KeeperException ke) { LOG.error("Error reading data from zookeeper for node " + path, ke); // only option is to abort watcher.abort("ZooKeeper error getting data for node " + path, ke); } } }
public void writeToZookeeper(byte[] data, boolean labelsOrUserAuths) throws IOException { // Update local state, then send it to zookeeper if (labelsOrUserAuths) { // True for labels this.refreshLabelsCache(data); } else { // False for user auths this.refreshUserAuthsCache(data); } this.zkVisibilityWatcher.writeToZookeeper(data, labelsOrUserAuths); } }
public void writeToZookeeper(byte[] data, boolean labelsOrUserAuths) throws IOException { // Update local state, then send it to zookeeper if (labelsOrUserAuths) { // True for labels this.refreshLabelsCache(data); } else { // False for user auths this.refreshUserAuthsCache(data); } this.zkVisibilityWatcher.writeToZookeeper(data, labelsOrUserAuths); } }
public void start() throws KeeperException { watcher.registerListener(this); ZKUtil.createWithParents(watcher, labelZnode); ZKUtil.createWithParents(watcher, userAuthsZnode); byte[] data = ZKUtil.getDataAndWatch(watcher, labelZnode); if (data != null && data.length > 0) { refreshVisibilityLabelsCache(data); } data = ZKUtil.getDataAndWatch(watcher, userAuthsZnode); if (data != null && data.length > 0) { refreshUserAuthsCache(data); } }
private VisibilityLabelsCache(ZooKeeperWatcher watcher, Configuration conf) throws IOException { zkVisibilityWatcher = new ZKVisibilityLabelWatcher(watcher, this, conf); try { zkVisibilityWatcher.start(); } catch (KeeperException ke) { LOG.error("ZooKeeper initialization failed", ke); throw new IOException(ke); } }
/** * Creates the singleton instance, if not yet present, and returns the same. * @param watcher * @param conf * @return Singleton instance of VisibilityLabelsCache * @throws IOException */ public synchronized static VisibilityLabelsCache createAndGet(ZooKeeperWatcher watcher, Configuration conf) throws IOException { // VisibilityLabelService#init() for different regions (in same RS) passes same instance of // watcher as all get the instance from RS. // watcher != instance.zkVisibilityWatcher.getWatcher() - This check is needed only in UTs with // RS restart. It will be same JVM in which RS restarts and instance will be not null. But the // watcher associated with existing instance will be stale as the restarted RS will have new // watcher with it. if (instance == null || watcher != instance.zkVisibilityWatcher.getWatcher()) { instance = new VisibilityLabelsCache(watcher, conf); } return instance; }
@Override public void nodeDataChanged(String path) { if (path.equals(labelZnode) || path.equals(userAuthsZnode)) { try { watcher.sync(path); byte[] data = ZKUtil.getDataAndWatch(watcher, path); if (path.equals(labelZnode)) { refreshVisibilityLabelsCache(data); } else { refreshUserAuthsCache(data); } } catch (KeeperException ke) { LOG.error("Error reading data from zookeeper for node " + path, ke); // only option is to abort watcher.abort("Zookeeper error getting data for node " + path, ke); } } }
public void start() throws KeeperException { watcher.registerListener(this); ZKUtil.createWithParents(watcher, labelZnode); ZKUtil.createWithParents(watcher, userAuthsZnode); byte[] data = ZKUtil.getDataAndWatch(watcher, labelZnode); if (data != null && data.length > 0) { refreshVisibilityLabelsCache(data); } data = ZKUtil.getDataAndWatch(watcher, userAuthsZnode); if (data != null && data.length > 0) { refreshUserAuthsCache(data); } }