wchevreuil commented on a change in pull request #403: HBASE-22707 [HBCK2] 
MasterRpcServices assigns method should try to reload regions from meta if the 
passed regions isn't found under AssignmentManager RegionsStateStore
URL: https://github.com/apache/hbase/pull/403#discussion_r307968065
 
 

 ##########
 File path: 
hbase-server/src/main/java/org/apache/hadoop/hbase/master/assignment/AssignmentManager.java
 ##########
 @@ -1383,51 +1383,76 @@ public void processOfflineRegions() {
     }
   }
 
-  private void loadMeta() throws IOException {
-    // TODO: use a thread pool
-    regionStateStore.visitMeta(new RegionStateStore.RegionStateVisitor() {
-      @Override
-      public void visitRegionState(Result result, final RegionInfo regionInfo, 
final State state,
-          final ServerName regionLocation, final ServerName lastHost, final 
long openSeqNum) {
-        if (state == null && regionLocation == null && lastHost == null &&
-            openSeqNum == SequenceId.NO_SEQUENCE_ID) {
-          // This is a row with nothing in it.
-          LOG.warn("Skipping empty row={}", result);
-          return;
-        }
-        State localState = state;
-        if (localState == null) {
-          // No region state column data in hbase:meta table! Are I doing a 
rolling upgrade from
-          // hbase1 to hbase2? Am I restoring a SNAPSHOT or otherwise adding a 
region to hbase:meta?
-          // In any of these cases, state is empty. For now, presume OFFLINE 
but there are probably
-          // cases where we need to probe more to be sure this correct; TODO 
informed by experience.
-          LOG.info(regionInfo.getEncodedName() + " regionState=null; presuming 
" + State.OFFLINE);
-          localState = State.OFFLINE;
-        }
-        RegionStateNode regionNode = 
regionStates.getOrCreateRegionStateNode(regionInfo);
-        // Do not need to lock on regionNode, as we can make sure that before 
we finish loading
-        // meta, all the related procedures can not be executed. The only 
exception is for meta
-        // region related operations, but here we do not load the informations 
for meta region.
-        regionNode.setState(localState);
-        regionNode.setLastHost(lastHost);
-        regionNode.setRegionLocation(regionLocation);
-        regionNode.setOpenSeqNum(openSeqNum);
-
-        // Note: keep consistent with other methods, see 
region(Opening|Opened|Closing)
-        //       RIT/ServerCrash handling should take care of the transiting 
regions.
-        if (localState.matches(State.OPEN, State.OPENING, State.CLOSING, 
State.SPLITTING,
-          State.MERGING)) {
-          assert regionLocation != null : "found null region location for " + 
regionNode;
-          regionStates.addRegionToServer(regionNode);
-        } else if (localState == State.OFFLINE || regionInfo.isOffline()) {
-          regionStates.addToOfflineRegions(regionNode);
-        }
-        if (regionNode.getProcedure() != null) {
-          regionNode.getProcedure().stateLoaded(AssignmentManager.this, 
regionNode);
-        }
+  private class RegionMetaLoadingVisitor implements 
RegionStateStore.RegionStateVisitor  {
 
 Review comment:
   Added on last commit. Let me know if this description makes sense.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to