" transition openSeqNum=" + openSeqNum + ", " + regionNode + ", proc=" + this); if (openSeqNum < regionNode.getOpenSeqNum()) { " is less than the current one {}, should be a retry, ignore", TransitionCode.OPENED, serverName, regionNode, getProcId(), openSeqNum, regionNode.getOpenSeqNum()); return;
@Override protected RegionOpeningState execOpenRegion(ServerName server, RegionOpenInfo openReq) throws IOException { RegionInfo hri = ProtobufUtil.toRegionInfo(openReq.getRegion()); long previousOpenSeqNum = am.getRegionStates().getOrCreateRegionStateNode(hri).getOpenSeqNum(); sendTransitionReport(server, openReq.getRegion(), TransitionCode.OPENED, previousOpenSeqNum + 2); // Concurrency? // Now update the state of our cluster in regionsToRegionServers. SortedSet<byte[]> regions = regionsToRegionServers.get(server); if (regions == null) { regions = new ConcurrentSkipListSet<byte[]>(Bytes.BYTES_COMPARATOR); regionsToRegionServers.put(server, regions); } if (regions.contains(hri.getRegionName())) { throw new UnsupportedOperationException(hri.getRegionNameAsString()); } regions.add(hri.getRegionName()); return RegionOpeningState.OPENED; }
RegionInfo hri = ProtobufUtil.toRegionInfo(openReq.getRegion()); long previousOpenSeqNum = am.getRegionStates().getOrCreateRegionStateNode(hri).getOpenSeqNum(); switch (rand.nextInt(3)) { case 0:
if (node.getOpenSeqNum() > oldLoc.getSeqNum()) { node.getOpenSeqNum()); long openSeqNum = node.isInState(State.OPEN) ? node.getOpenSeqNum() : -1; return new HRegionLocation(node.getRegionInfo(), node.getRegionLocation(), openSeqNum);
private HRegionLocation createRegionForReopen(RegionStateNode node) { node.lock(); try { if (!include(node, false)) { return null; } if (node.isInState(State.OPEN)) { return new HRegionLocation(node.getRegionInfo(), node.getRegionLocation(), node.getOpenSeqNum()); } else if (node.isInState(State.OPENING)) { return new HRegionLocation(node.getRegionInfo(), node.getRegionLocation(), -1); } else { return null; } } finally { node.unlock(); } }
public void updateRegionLocation(RegionStateNode regionStateNode) throws IOException { if (regionStateNode.getRegionInfo().isMetaRegion()) { updateMetaLocation(regionStateNode.getRegionInfo(), regionStateNode.getRegionLocation(), regionStateNode.getState()); } else { long openSeqNum = regionStateNode.getState() == State.OPEN ? regionStateNode.getOpenSeqNum() : HConstants.NO_SEQNUM; updateUserRegionLocation(regionStateNode.getRegionInfo(), regionStateNode.getState(), regionStateNode.getRegionLocation(), openSeqNum, // The regionStateNode may have no procedure in a test scenario; allow for this. regionStateNode.getProcedure() != null ? regionStateNode.getProcedure().getProcId() : Procedure.NO_PROC_ID); } }
regionNode.lock(); try { openSeqNum = regionNode.getOpenSeqNum(); assertTrue(regionNode.getOpenSeqNum() > openSeqNum);