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]