simbadzina commented on code in PR #6804:
URL: https://github.com/apache/hadoop/pull/6804#discussion_r1594514981


##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/main/java/org/apache/hadoop/hdfs/server/federation/router/PoolAlignmentContext.java:
##########
@@ -64,7 +64,11 @@ public void 
updateResponseState(RpcHeaderProtos.RpcResponseHeaderProto.Builder h
    */
   @Override
   public void receiveResponseState(RpcHeaderProtos.RpcResponseHeaderProto 
header) {
-    sharedGlobalStateId.accumulate(header.getStateId());
+    if (header.getStateId() == 0 && sharedGlobalStateId.get() > 0) {

Review Comment:
   Yes, stateID `0` means no stateId is set. Msync doesn't have a return value.
   
   There is another bug in the router in that it accepts 0 as a value to 
advance it's cachedStateID to.
   Ideally `sharedGlobalStateId.get() > 0` should not be necessary here. For 
now it captures namenodes that actually had STATE_ID_CONTEXT enabled to begin 
with. But stale reads could happen with a namenode that has never had 
STATE_ID_CONTEXT enabled.
   
   Fixing this will touch other tests so I'm debating whether to try fix that 
in this PR or separately. I'm leaning towards a separate PR. 



-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to