org.apache.hadoop.hbase.zookeeper.ZKUtil#createEphemeralNodeAndWatch ( )源码实例Demo

下面列出了org.apache.hadoop.hbase.zookeeper.ZKUtil#createEphemeralNodeAndWatch ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: phoenix   文件: IndexSplitTransaction.java
/**
 * Creates a new ephemeral node in the PENDING_SPLIT state for the specified region.
 * Create it ephemeral in case regionserver dies mid-split.
 *
 * <p>Does not transition nodes from other states.  If a node already exists
 * for this region, a {@link NodeExistsException} will be thrown.
 *
 * @param zkw zk reference
 * @param region region to be created as offline
 * @param serverName server event originates from
 * @throws KeeperException
 * @throws IOException
 */
public static void createNodeSplitting(final ZooKeeperWatcher zkw, final HRegionInfo region,
    final ServerName serverName, final HRegionInfo a,
    final HRegionInfo b) throws KeeperException, IOException {
  LOG.debug(zkw.prefix("Creating ephemeral node for " +
    region.getEncodedName() + " in PENDING_SPLIT state"));
  byte [] payload = HRegionInfo.toDelimitedByteArray(a, b);
  RegionTransition rt = RegionTransition.createRegionTransition(
    RS_ZK_REQUEST_REGION_SPLIT, region.getRegionName(), serverName, payload);
  String node = ZKAssign.getNodeName(zkw, region.getEncodedName());
  if (!ZKUtil.createEphemeralNodeAndWatch(zkw, node, rt.toByteArray())) {
    throw new IOException("Failed create of ephemeral " + node);
  }
}
 
源代码2 项目: hbase   文件: HBaseFsck.java
/**
 * This method maintains an ephemeral znode. If the creation fails we return false or throw
 * exception
 *
 * @return true if creating znode succeeds; false otherwise
 * @throws IOException if IO failure occurs
 */
private boolean setMasterInMaintenanceMode() throws IOException {
  RetryCounter retryCounter = createZNodeRetryCounterFactory.create();
  hbckEphemeralNodePath = ZNodePaths.joinZNode(
    zkw.getZNodePaths().masterMaintZNode,
    "hbck-" + Long.toString(EnvironmentEdgeManager.currentTime()));
  do {
    try {
      hbckZodeCreated = ZKUtil.createEphemeralNodeAndWatch(zkw, hbckEphemeralNodePath, null);
      if (hbckZodeCreated) {
        break;
      }
    } catch (KeeperException e) {
      if (retryCounter.getAttemptTimes() >= retryCounter.getMaxAttempts()) {
         throw new IOException("Can't create znode " + hbckEphemeralNodePath, e);
      }
      // fall through and retry
    }

    LOG.warn("Fail to create znode " + hbckEphemeralNodePath + ", try=" +
        (retryCounter.getAttemptTimes() + 1) + " of " + retryCounter.getMaxAttempts());

    try {
      retryCounter.sleepUntilNextRetry();
    } catch (InterruptedException ie) {
      throw (InterruptedIOException) new InterruptedIOException(
            "Can't create znode " + hbckEphemeralNodePath).initCause(ie);
    }
  } while (retryCounter.shouldRetry());
  return hbckZodeCreated;
}
 
源代码3 项目: hbase   文件: HRegionServer.java
private void createMyEphemeralNode() throws KeeperException {
  RegionServerInfo.Builder rsInfo = RegionServerInfo.newBuilder();
  rsInfo.setInfoPort(infoServer != null ? infoServer.getPort() : -1);
  rsInfo.setVersionInfo(ProtobufUtil.getVersionInfo());
  byte[] data = ProtobufUtil.prependPBMagic(rsInfo.build().toByteArray());
  ZKUtil.createEphemeralNodeAndWatch(this.zooKeeper, getMyEphemeralNodePath(), data);
}