rpuch commented on code in PR #2566:
URL: https://github.com/apache/ignite-3/pull/2566#discussion_r1322937013


##########
modules/table/src/main/java/org/apache/ignite/internal/table/distributed/replicator/PartitionReplicaListener.java:
##########
@@ -1469,22 +1478,41 @@ private <T> CompletableFuture<T> appendTxCommand(UUID 
txId, RequestType cmdType,
         }
 
         if (!fut.isDone()) {
-            op.get().whenComplete((v, th) -> {
-                if (full) { // Fast unlock.
-                    releaseTxLocks(txId);
-                }
+            validateAtTsIfRwRead(txId, cmdType)
+                    .thenCompose(unused -> op.get())
+                    // Write actions do ts-dependent validations after taking 
locks. If it turned out that nothing has to be written,
+                    // then no lock is taken and, hence, no ts-dependent 
validations are invoked. But, as such validations
+                    // must be invoked for any write, we do it here.
+                    .thenCompose(actionResult -> 
validateAtTsIfWriteDidNotDoTsValidation(actionResult, txId, cmdType))

Review Comment:
   Why these methods were here: I tried to centralize the control over 
validations as much as possible, so I left 'what cannot be centralized' in the 
code related to the corresponding operations handling, but 'what could be 
centralized' was here.



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

Reply via email to