Java Code Examples for org.apache.hadoop.hbase.zookeeper.ZKUtil#watchAndCheckExists()
The following examples show how to use
org.apache.hadoop.hbase.zookeeper.ZKUtil#watchAndCheckExists() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ClientZKSyncer.java From hbase with Apache License 2.0 | 6 votes |
private void watchAndCheckExists(String node) { try { if (ZKUtil.watchAndCheckExists(watcher, node)) { byte[] data = ZKUtil.getDataAndWatch(watcher, node); if (data != null) { // put the data into queue upsertQueue(node, data); } else { // It existed but now does not, should has been tracked by our watcher, ignore LOG.debug("Found no data from " + node); watchAndCheckExists(node); } } else { // cleanup stale ZNodes on client ZK to avoid invalid requests to server ZKUtil.deleteNodeFailSilent(clientZkWatcher, node); } } catch (KeeperException e) { server.abort("Unexpected exception during initialization, aborting", e); } }
Example 2
Source File: ActiveMasterManager.java From hbase with Apache License 2.0 | 6 votes |
/** * Handle a change in the master node. Doesn't matter whether this was called * from a nodeCreated or nodeDeleted event because there are no guarantees * that the current state of the master node matches the event at the time of * our next ZK request. * * <p>Uses the watchAndCheckExists method which watches the master address node * regardless of whether it exists or not. If it does exist (there is an * active master), it returns true. Otherwise it returns false. * * <p>A watcher is set which guarantees that this method will get called again if * there is another change in the master node. */ private void handleMasterNodeChange() { // Watch the node and check if it exists. try { synchronized(clusterHasActiveMaster) { if (ZKUtil.watchAndCheckExists(watcher, watcher.getZNodePaths().masterAddressZNode)) { // A master node exists, there is an active master LOG.trace("A master is now available"); clusterHasActiveMaster.set(true); } else { // Node is no longer there, cluster does not have an active master LOG.debug("No master available. Notifying waiting threads"); clusterHasActiveMaster.set(false); // Notify any thread waiting to become the active master clusterHasActiveMaster.notifyAll(); } // Reset the active master sn. Will be re-fetched later if needed. // We don't want to make a synchronous RPC under a monitor. activeMasterServerName = null; } } catch (KeeperException ke) { master.abort("Received an unexpected KeeperException, aborting", ke); } }
Example 3
Source File: TableHFileArchiveTracker.java From hbase with Apache License 2.0 | 6 votes |
/** * Sets the watch on the top-level archive znode, and then updates the monitor with the current * tables that should be archived (and ensures that those nodes are watched as well). */ private void checkEnabledAndUpdate() { try { if (ZKUtil.watchAndCheckExists(watcher, archiveHFileZNode)) { LOG.debug(archiveHFileZNode + " znode does exist, checking for tables to archive"); // update the tables we should backup, to get the most recent state. // This is safer than also watching for children and then hoping we get // all the updates as it makes sure we get and watch all the children updateWatchedTables(); } else { LOG.debug("Archiving not currently enabled, waiting"); } } catch (KeeperException e) { LOG.warn("Failed to watch for archiving znode", e); } }
Example 4
Source File: ZKProcedureMemberRpcs.java From hbase with Apache License 2.0 | 6 votes |
/** * This attempts to create an acquired state znode for the procedure (snapshot name). * * It then looks for the reached znode to trigger in-barrier execution. If not present we * have a watcher, if present then trigger the in-barrier action. */ @Override public void sendMemberAcquired(Subprocedure sub) throws IOException { String procName = sub.getName(); try { LOG.debug("Member: '" + memberName + "' joining acquired barrier for procedure (" + procName + ") in zk"); String acquiredZNode = ZNodePaths.joinZNode(ZKProcedureUtil.getAcquireBarrierNode( zkController, procName), memberName); ZKUtil.createAndFailSilent(zkController.getWatcher(), acquiredZNode); // watch for the complete node for this snapshot String reachedBarrier = zkController.getReachedBarrierNode(procName); LOG.debug("Watch for global barrier reached:" + reachedBarrier); if (ZKUtil.watchAndCheckExists(zkController.getWatcher(), reachedBarrier)) { receivedReachedGlobalBarrier(reachedBarrier); } } catch (KeeperException e) { member.controllerConnectionFailure("Failed to acquire barrier for procedure: " + procName + " and member: " + memberName, e, procName); } }
Example 5
Source File: TestSplitLogManager.java From hbase with Apache License 2.0 | 6 votes |
private String submitTaskAndWait(TaskBatch batch, String name) throws KeeperException, InterruptedException { String tasknode = ZKSplitLog.getEncodedNodeName(zkw, name); NodeCreationListener listener = new NodeCreationListener(zkw, tasknode); zkw.registerListener(listener); ZKUtil.watchAndCheckExists(zkw, tasknode); slm.enqueueSplitTask(name, batch); assertEquals(1, batch.installed); assertTrue(findOrCreateOrphanTask(tasknode).batch == batch); assertEquals(1L, tot_mgr_node_create_queued.sum()); LOG.debug("waiting for task node creation"); listener.waitForCreation(); LOG.debug("task created"); return tasknode; }
Example 6
Source File: ZKVisibilityLabelWatcher.java From hbase with Apache License 2.0 | 5 votes |
@Override public void nodeCreated(String path) { if (path.equals(labelZnode) || path.equals(userAuthsZnode)) { try { ZKUtil.watchAndCheckExists(watcher, path); } catch (KeeperException ke) { LOG.error("Error setting watcher on node " + path, ke); // only option is to abort watcher.abort("ZooKeeper error obtaining label node children", ke); } } }
Example 7
Source File: ZKSecretWatcher.java From hbase with Apache License 2.0 | 5 votes |
public void start() throws KeeperException { watcher.registerListener(this); // make sure the base node exists ZKUtil.createWithParents(watcher, keysParentZNode); if (ZKUtil.watchAndCheckExists(watcher, keysParentZNode)) { List<ZKUtil.NodeAndData> nodes = ZKUtil.getChildDataAndWatchForNewChildren(watcher, keysParentZNode); refreshNodes(nodes); } }
Example 8
Source File: ClientZKSyncer.java From hbase with Apache License 2.0 | 5 votes |
@Override public synchronized void nodeDeleted(String path) { if (validate(path)) { try { if (ZKUtil.watchAndCheckExists(watcher, path)) { nodeCreated(path); } } catch (KeeperException e) { LOG.warn("Unexpected exception handling nodeDeleted event for path: " + path, e); } } }
Example 9
Source File: MetaRegionLocationCache.java From hbase with Apache License 2.0 | 5 votes |
private void updateMetaLocation(String path, ZNodeOpType opType) { if (!isValidMetaZNode(path)) { return; } LOG.debug("Updating meta znode for path {}: {}", path, opType.name()); int replicaId = watcher.getZNodePaths().getMetaReplicaIdFromPath(path); RetryCounter retryCounter = retryCounterFactory.create(); HRegionLocation location = null; while (retryCounter.shouldRetry()) { try { if (opType == ZNodeOpType.DELETED) { if (!ZKUtil.watchAndCheckExists(watcher, path)) { // The path does not exist, we've set the watcher and we can break for now. break; } // If it is a transient error and the node appears right away, we fetch the // latest meta state. } location = getMetaRegionLocation(replicaId); break; } catch (KeeperException e) { LOG.debug("Error getting meta location for path {}", path, e); if (!retryCounter.shouldRetry()) { LOG.warn("Error getting meta location for path {}. Retries exhausted.", path, e); break; } try { retryCounter.sleepUntilNextRetry(); } catch (InterruptedException ie) { Thread.currentThread().interrupt(); return; } } } if (location == null) { cachedMetaLocations.remove(replicaId); return; } cachedMetaLocations.put(replicaId, location); }
Example 10
Source File: TableHFileArchiveTracker.java From hbase with Apache License 2.0 | 5 votes |
/** * Add this table to the tracker and then read a watch on that node. * <p> * Handles situation where table is deleted in the time between the update and resetting the watch * by deleting the table via {@link #safeStopTrackingTable(String)} * @param tableZnode full zookeeper path to the table to be added * @throws KeeperException if an unexpected zk exception occurs */ private void addAndReWatchTable(String tableZnode) throws KeeperException { getMonitor().addTable(ZKUtil.getNodeName(tableZnode)); // re-add a watch to the table created // and check to make sure it wasn't deleted if (!ZKUtil.watchAndCheckExists(watcher, tableZnode)) { safeStopTrackingTable(tableZnode); } }