ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Denis Garus <garus....@gmail.com>
Subject Re: Atomic cache inconsistent state
Date Tue, 05 Jun 2018 15:13:56 GMT
Fix formatting

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/d473b507f04e2ec843c1da1066d8908e882396d7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicAbstractUpdateFuture.java#L473
[2].
https://github.com/apache/ignite/pull/4126/files#diff-5e5bfb73bd917d85f56a05552b1d014aR26

2018-06-05 17:35 GMT+03:00 Denis Garus <garus.d.g@gmail.com>:

> 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/d473b507f04e2ec843c1da1066d890
> 8e882396d7/modules/core/src/main/java/org/apache/ignite/
> internal/processors/cache/distributed/dht/atomic/
> GridDhtAtomicAbstractUpdateFuture.java#L473
>
> [2]. https://github.com/apache/ignite/pull/4126/files#diff-
> 5e5bfb73bd917d85f56a05552b1d014aR26
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message