sanpwc commented on code in PR #2820:
URL: https://github.com/apache/ignite-3/pull/2820#discussion_r1389522573


##########
modules/table/src/main/java/org/apache/ignite/internal/table/distributed/replicator/PartitionReplicaListener.java:
##########
@@ -2420,34 +2490,40 @@ private CompletableFuture<CompletableFuture<?>> 
applyUpdateCommand(
             );
 
             if (!cmd.full()) {
-                CompletableFuture<UUID> fut = 
applyCmdWithExceptionHandling(cmd).thenApply(res -> {
+                // TODO: https://issues.apache.org/jira/browse/IGNITE-20124 
Temporary code below
+                synchronized (safeTime) {
+                    storageUpdateHandler.handleUpdate(

Review Comment:
   Because in case of full command we apply not the write intent but write 
itself. Writes doesn't require txn state resolution and thus visible to other 
transactions directly. All in all that means that we should prevent write 
visibility in case of replication failure. The reliable way to do it is to put 
replication prior to primary replica adjustment.
   
   Why we need direct put on primary replica?
   Not only because replication is finished when it's finished on majoirty that 
may miss primary but also because primary replica may not be a part of 
replication group.



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