Hello Igniters!

 

I have found some confusing behavior of atomic partitioned cache with
`PRIMARY_SYNC` write synchronization mode.

Node with a primary partition sends a message to remote nodes with backup
partitions via `GridDhtAtomicAbstractUpdateFuture#sendDhtRequests`.

If during of sending occurs an error then it, in fact, will be ignored, see
[1]:

```

try {

                ....

 

                cctx.io().send(req.nodeId(), req, cctx.ioPolicy());

 

                ....

}

catch (ClusterTopologyCheckedException ignored) {

                ....

 

                registerResponse(req.nodeId());

}

catch (IgniteCheckedException ignored) {

                ....

 

                registerResponse(req.nodeId());

}

```

This behavior results in the primary partition and backup partitions have
the different value for given key.

 

There is the reproducer [2].

 

Should we consider this behavior as valid?

 

[1].
https://github.com/dgarus/ignite/blob/d473b507f04e2ec843c1da1066d8908e882396
d7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/di
stributed/dht/atomic/GridDhtAtomicAbstractUpdateFuture.java#L473

[2].
https://github.com/apache/ignite/pull/4126/files#diff-5e5bfb73bd917d85f56a05
552b1d014aR26

Reply via email to