belliottsmith commented on code in PR #65:
URL: https://github.com/apache/cassandra-accord/pull/65#discussion_r1442871593


##########
accord-core/src/main/java/accord/messages/Commit.java:
##########
@@ -275,6 +275,22 @@ public static void commitInvalidate(Node node, TxnId 
txnId, Unseekables<?> infor
             // TODO (expected, safety): this kind of check needs to be 
inserted in all equivalent methods
             Invariants.checkState(untilEpoch >= txnId.epoch());
             Invariants.checkState(node.topology().hasEpoch(untilEpoch));
+            // Possible that the invalidation is due to the range no longer 
existing in untilEpoch, which means that

Review Comment:
   So a couple of thoughts here:
   
   1) How can this happen? We should only invoke with an `untilEpoch` we 
attempted to `Accept` with, and we shouldn't attempt to `Accept` in an epoch 
where the keys don't exist
   2) If we have somehow done this, I think it is fine to contact `untilEpoch` 
even if some keys are missing? The problem with going to the earliest epoch we 
can fine that contains them is that if we have somehow gone into a future 
epoch, we might have left traces we should ideally invalidate for other keys 
that did still exist, and have moved replica
   
   My preference would be to first figure out (1), as if it's happening it may 
indicate some other issue that we can address. Then we might anyway want to 
support a version of `preciseEpochs` that permits topology mismatches.



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