Apache9 commented on a change in pull request #2584:
URL: https://github.com/apache/hbase/pull/2584#discussion_r514228087
##########
File path:
hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncNonMetaRegionLocator.java
##########
@@ -577,6 +635,15 @@ private void removeLocationFromCache(HRegionLocation loc) {
if (!canUpdateOnError(loc, oldLoc)) {
return;
}
+ // Tell metaReplicaSelector that the location is stale. It will create a
stale entry
+ // with timestamp internally. Next time the client looks up the same
location,
+ // it will pick a different meta replica region. For the current
implementation,
+ // the metaReplicaId is not used, so the primary one is passed in.
+ if (this.metaReplicaMode == CatalogReplicaMode.LoadBalance) {
+ // metaReplicaId is not used in simpleSelector, default to the primary
one.
+ metaReplicaSelector.onError(loc, RegionInfo.DEFAULT_REPLICA_ID);
Review comment:
This is a bit strange? We are using a CatalogReplicaLoadBalanceSelector,
not a CatalogReplicaLoadBalanceSimpleSelector, so I do not think we should
assume it is a simple selector and pass default replica id here? It may spend a
bunch of time for later developers who implement new selectors to find out why
the selector does not work as expected. If you want to do this please just
declare a CatalogReplicaLoadBalanceSimpleSelector above.
----------------------------------------------------------------
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]