kadirozde commented on a change in pull request #897:
URL: https://github.com/apache/phoenix/pull/897#discussion_r497110937
##########
File path:
phoenix-core/src/main/java/org/apache/phoenix/hbase/index/IndexRegionObserver.java
##########
@@ -150,9 +154,14 @@ public static void
setFailDataTableUpdatesForTesting(boolean fail) {
failDataTableUpdatesForTesting = fail;
}
+ public enum BatchMutatePhase {
+ PRE, POST, FAILED
+ }
// Hack to get around not being able to save any state between
// coprocessor calls. TODO: remove after HBASE-18127 when available
+
private static class BatchMutateContext {
+ private BatchMutatePhase currentPhase = BatchMutatePhase.PRE;
Review comment:
Great question! The concurrent batch of mutations is a set such that
every pair of batches in this set has at least one common row. Since a
BatchMutateContext object of a batch is modified only after the row locks for
all the rows that are mutated by this batch are acquired, there can be only one
thread can acquire the locks for its batch and safely access all the batch
contexts in the set of concurrent batches. I will add this to doc and comment
it on the code. Please note that the row state is also accessed. So, atomic
variables are not necessary. Also, making currentPhase atomic and leave the
rest as it is will give the wrong impression.
----------------------------------------------------------------
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]