com.alibaba.wasp.zookeeper.ZKAssign.transitionNode()方法的使用及代码示例

x33g5p2x  于2022-02-05 转载在 其他  
字(7.5k)|赞(0)|评价(0)|浏览(97)

本文整理了Java中com.alibaba.wasp.zookeeper.ZKAssign.transitionNode()方法的一些代码示例,展示了ZKAssign.transitionNode()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZKAssign.transitionNode()方法的具体详情如下:
包路径:com.alibaba.wasp.zookeeper.ZKAssign
类名称:ZKAssign
方法名:transitionNode

ZKAssign.transitionNode介绍

[英]Method that actually performs unassigned node transitions.

Attempts to transition the unassigned node for the specified entityGroup from the expected state to the state in the specified transition data.

Method first reads existing data and verifies it is in the expected state. If the node does not exist or the node is not in the expected state, the method returns -1. If the transition is successful, the version number of the node following the transition is returned.

If the read state is what is expected, it attempts to write the new state and data into the node. When doing this, it includes the expected version (determined when the existing state was verified) to ensure that only one transition is successful. If there is a version mismatch, the method returns -1.

If the write is successful, no watch is set and the method returns true.
[中]方法,实际执行未分配的节点转换。
尝试将指定entityGroup的未分配节点从预期状态转换为指定转换数据中的状态。
方法首先读取现有数据并验证其是否处于预期状态。如果节点不存在或节点未处于预期状态,则该方法返回-1。如果转换成功,则返回转换后节点的版本号。
如果读取状态是预期的,它会尝试将新状态和数据写入节点。执行此操作时,它包括预期版本(在验证现有状态时确定),以确保只有一个转换成功。如果存在版本不匹配,则该方法返回-1。
如果写入成功,则不设置监视,该方法返回true。

代码示例

代码示例来源:origin: alibaba/wasp

public static int transitionNodeOpening(ZooKeeperWatcher zkw,
  EntityGroupInfo entityGroup, ServerName serverName, final EventType beginState)
  throws KeeperException {
 return transitionNode(zkw, entityGroup, serverName, beginState,
   EventType.FSERVER_ZK_ENTITYGROUP_OPENING, -1);
}

代码示例来源:origin: alibaba/wasp

/**
 * Fakes the regionserver-side zk transitions of a region open.
 * @param w ZooKeeperWatcher to use.
 * @param sn Name of the regionserver doing the 'opening'
 * @param egInfo EntityGroup we're 'opening'.
 * @throws org.apache.zookeeper.KeeperException
 * @throws com.alibaba.wasp.DeserializationException
 */
static void fakeEntityGroupServerEntityGroupOpenInZK(FMaster master,  final ZooKeeperWatcher w,
  final ServerName sn, final EntityGroupInfo egInfo)
 throws KeeperException, DeserializationException, InterruptedException {
 // Wait till the we region is ready to be open in RIT.
 waitForEntityGroupPendingOpenInRIT(master.getAssignmentManager(), egInfo.getEncodedName());
 // Get current versionid else will fail on transition from OFFLINE to OPENING below
 int versionid = ZKAssign.getVersion(w, egInfo);
 assertNotSame(-1, versionid);
 // This uglyness below is what the openregionhandler on FSERVER side does.  I
 // looked at exposing the method over in openregionhandler but its just a
 // one liner and its deep over in another package so just repeat it below.
 versionid = ZKAssign.transitionNode(w, egInfo, sn,
   EventType.M_ZK_ENTITYGROUP_OFFLINE, EventType.FSERVER_ZK_ENTITYGROUP_OPENING, versionid);
 assertNotSame(-1, versionid);
 // Move znode from OPENING to OPENED as FSERVER does on successful open.
 versionid = ZKAssign.transitionNodeOpened(w, egInfo, sn, versionid);
 assertNotSame(-1, versionid);
 // We should be done now.  The master open handler will notice the
 // transition and remove this regions znode.
}

代码示例来源:origin: alibaba/wasp

versionid = ZKAssign.transitionNode(server.getZooKeeper(),
  ENTITYGROUPINFO, SERVERNAME_A, EventHandler.EventType.M_ZK_ENTITYGROUP_OFFLINE,
  EventHandler.EventType.FSERVER_ZK_ENTITYGROUP_OPENING, versionid);

代码示例来源:origin: alibaba/wasp

/**
 *
 * @param zkw
 *          zk reference
 * @param parent
 *          entityGroup to be transitioned to splitting
 * @param serverName
 *          server event originates from
 * @param version
 *          znode version
 * @return version of node after transition, -1 if unsuccessful transition
 * @throws org.apache.zookeeper.KeeperException
 * @throws java.io.IOException
 */
int transitionNodeSplitting(final ZooKeeperWatcher zkw,
  final EntityGroupInfo parent, final ServerName serverName,
  final int version) throws KeeperException, IOException {
 return ZKAssign.transitionNode(zkw, parent, serverName,
   EventHandler.EventType.FSERVER_ZK_ENTITYGROUP_SPLITTING,
   EventHandler.EventType.FSERVER_ZK_ENTITYGROUP_SPLITTING, version);
}

代码示例来源:origin: alibaba/wasp

EntityGroupInfo entityGroup, ServerName serverName, int expectedVersion)
 throws KeeperException {
return transitionNode(zkw, entityGroup, serverName,
  EventType.M_ZK_ENTITYGROUP_CLOSING, EventType.FSERVER_ZK_ENTITYGROUP_CLOSED,
  expectedVersion);

代码示例来源:origin: alibaba/wasp

EntityGroupInfo entityGroup, ServerName serverName, int expectedVersion)
 throws KeeperException {
return transitionNode(zkw, entityGroup, serverName,
  EventType.FSERVER_ZK_ENTITYGROUP_OPENING, EventType.FSERVER_ZK_ENTITYGROUP_OPENED,
  expectedVersion);

代码示例来源:origin: alibaba/wasp

ServerName serverName, EventType beginState, EventType endState,
 int expectedVersion) throws KeeperException {
return transitionNode(zkw, entityGroup, serverName, beginState, endState,
  expectedVersion, null);

代码示例来源:origin: alibaba/wasp

EntityGroupInfo entityGroup, ServerName serverName, int expectedVersion)
 throws KeeperException {
return transitionNode(zkw, entityGroup, serverName,
  EventType.FSERVER_ZK_ENTITYGROUP_OPENING, EventType.FSERVER_ZK_ENTITYGROUP_OPENING,
  expectedVersion);

代码示例来源:origin: alibaba/wasp

private static int tickleNodeSplit(ZooKeeperWatcher zkw,
   EntityGroupInfo parent, EntityGroupInfo a, EntityGroupInfo b,
   ServerName serverName, final int znodeVersion) throws KeeperException,
   IOException {
  byte[] payload = EntityGroupInfo.toDelimitedByteArray(a, b);
  return ZKAssign.transitionNode(zkw, parent, serverName,
    EventHandler.EventType.FSERVER_ZK_ENTITYGROUP_SPLIT,
    EventHandler.EventType.FSERVER_ZK_ENTITYGROUP_SPLIT, znodeVersion,
    payload);
 }
}

代码示例来源:origin: alibaba/wasp

IOException {
byte[] payload = EntityGroupInfo.toDelimitedByteArray(a, b);
return ZKAssign.transitionNode(zkw, parent, serverName,
  EventHandler.EventType.FSERVER_ZK_ENTITYGROUP_SPLITTING,
  EventHandler.EventType.FSERVER_ZK_ENTITYGROUP_SPLIT, znodeVersion,

代码示例来源:origin: alibaba/wasp

/**
 * @param egi
 *          we're working on. This is not guaranteed to succeed, we just do
 *          our best.
 * @return whether znode is successfully transitioned to FAILED_OPEN state.
 */
private boolean tryTransitionToFailedOpen(final EntityGroupInfo egi) {
 boolean result = false;
 final String name = egi.getEntityGroupNameAsString();
 try {
  LOG.info("Opening of entityGroup " + egi
    + " failed, marking as FAILED_OPEN in ZK");
  if (ZKAssign.transitionNode(this.server.getZooKeeper(), egi,
    this.server.getServerName(),
    EventType.FSERVER_ZK_ENTITYGROUP_OPENING,
    EventType.FSERVER_ZK_ENTITYGROUP_FAILED_OPEN, this.version) == -1) {
   LOG.warn("Unable to mark entityGroup " + egi + " as FAILED_OPEN. "
     + "It's likely that the master already timed out this open "
     + "attempt, and thus another RS already has the entityGroup.");
  } else {
   result = true;
  }
 } catch (KeeperException e) {
  LOG.error("Failed transitioning node " + name
    + " from OPENING to FAILED_OPEN", e);
 }
 return result;
}

代码示例来源:origin: alibaba/wasp

/**
 * Transition ZK node from OFFLINE to OPENING.
 * 
 * @param encodedName
 *          Name of the znode file (EntityGroup encodedName is the znode
 *          name).
 * @param versionOfOfflineNode
 *          - version Of OfflineNode that needs to be compared before changing
 *          the node's state from OFFLINE
 * @return True if successful transition.
 */
boolean transitionZookeeperOfflineToOpening(final String encodedName,
  int versionOfOfflineNode) {
 try {
  // Initialize the znode version.
  this.version = ZKAssign.transitionNode(server.getZooKeeper(),
    entityGroupInfo, server.getServerName(),
    EventType.M_ZK_ENTITYGROUP_OFFLINE,
    EventType.FSERVER_ZK_ENTITYGROUP_OPENING, versionOfOfflineNode);
 } catch (KeeperException e) {
  LOG.error("Error transition from OFFLINE to OPENING for entityGroup="
    + encodedName, e);
 }
 boolean b = isGoodVersion();
 if (!b) {
  LOG.warn("Failed transition from OFFLINE to OPENING for entityGroup="
    + encodedName);
 }
 return b;
}

代码示例来源:origin: alibaba/wasp

stat.getVersion());
ZKAssign.transitionNode(zkw, entityGroup.getEntityGroupInfo(),
  server.getServerName(), EventType.FSERVER_ZK_ENTITYGROUP_OPENED,
  EventType.FSERVER_ZK_ENTITYGROUP_OPENED, stat.getVersion());

相关文章