return; if (dataInZNode.getEventType() == EventType.RS_ZK_REGION_OPENED) { LOG.debug("Region has transitioned to OPENED, allowing " + "watched event handlers to process"); return; } else if (dataInZNode.getEventType() != EventType.RS_ZK_REGION_OPENING && dataInZNode.getEventType() != EventType.RS_ZK_REGION_FAILED_OPEN ) { LOG.warn("While timing out a region in state OPENING, " + "found ZK node in unexpected state: " + dataInZNode.getEventType()); return;
/** * @param path * @return True if znode is in SPLIT or SPLITTING state. * @throws KeeperException Can happen if the znode went away in meantime. */ private boolean isSplitOrSplitting(final String path) throws KeeperException { boolean result = false; // This may fail if the SPLIT or SPLITTING znode gets cleaned up before we // can get data from it. RegionTransitionData data = ZKAssign.getData(master.getZooKeeper(), path); EventType evt = data.getEventType(); switch (evt) { case RS_ZK_REGION_SPLIT: case RS_ZK_REGION_SPLITTING: result = true; break; default: break; } return result; }
/** * Put the region <code>hri</code> into an offline state up in zk. * @param hri * @param oldData * @throws KeeperException */ private void forceOffline(final HRegionInfo hri, final RegionTransitionData oldData) throws KeeperException { // If was on dead server, its closed now. Force to OFFLINE and then // handle it like a close; this will get it reassigned if appropriate LOG.debug("RIT " + hri.getEncodedName() + " in state=" + oldData.getEventType() + " was on deadserver; forcing offline"); ZKAssign.createOrForceNodeOffline(this.watcher, hri, this.master.getServerName()); addToRITandCallClose(hri, RegionState.State.OFFLINE, oldData); }
LOG.info("Handling HBCK triggered transition=" + data.getEventType() + ", server=" + data.getOrigin() + ", region=" + HRegionInfo.prettyPrint(encodedName)); RegionState regionState = regionsInTransition.get(encodedName); switch (data.getEventType()) { case M_ZK_REGION_OFFLINE: HRegionInfo regionInfo = null; data.getEventType() + ")"); break;
if (!data.getEventType().equals(expectedState)) { LOG.warn(zkw.prefix("Attempting to delete unassigned " + "node " + regionName + " in " + expectedState + " state but node is in " + data.getEventType() + " state")); return false;
ZKUtil.joinZNode(watcher.assignmentZNode, child), stat); if (stat.getVersion() > 0 && data.getEventType() == EventType.RS_ZK_REGION_SPLITTING) { handleRegion(data, stat.getVersion());
RegionTransitionData existingData = RegionTransitionData.fromBytes(existingBytes); if (existingData.getEventType() == expectedState){ return true;
EventType eventType = curDataInZNode.getEventType(); if (eventType.equals(EventType.M_ZK_REGION_CLOSING) || eventType.equals(EventType.RS_ZK_REGION_CLOSED) if (curData.getEventType() != data.getEventType()) {
if(!existingData.getEventType().equals(beginState)) { LOG.warn(zkw.prefix("Attempt to transition the " + "unassigned node for " + encoded + " from " + beginState + " to " + endState + " failed, " + "the node existed but was in the state " + existingData.getEventType() + " set by the server " + serverName)); return -1;
String encodedRegionName = regionInfo.getEncodedName(); LOG.info("Processing region " + regionInfo.getRegionNameAsString() + " in state " + data.getEventType()); List<HRegionInfo> hris = this.enablingTables.get(regionInfo.getTableNameAsString()); if (hris != null && !hris.isEmpty()) { switch (data.getEventType()) { case M_ZK_REGION_CLOSING:
&& !ignoreStatesRSOffline.contains(data.getEventType())) { LOG.warn("Attempted to handle region transition for server but " + "server is not online: " + prettyPrintedRegionName); LOG.debug("Handling transition=" + data.getEventType() + ", server=" + data.getOrigin() + ", region=" + (prettyPrintedRegionName == null? "null": prettyPrintedRegionName) + (lateEvent? ", which is more than 15 seconds late" : "")); RegionState regionState = regionsInTransition.get(encodedName); switch (data.getEventType()) { case M_ZK_REGION_OFFLINE: