You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Alexander Lapin (Jira)" <ji...@apache.org> on 2023/03/03 14:02:00 UTC

[jira] [Updated] (IGNITE-18848) Error handling for RO transactions on rebalance

     [ https://issues.apache.org/jira/browse/IGNITE-18848?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alexander Lapin updated IGNITE-18848:
-------------------------------------
    Description: 
After the rebalancing of storages ({*}org.apache.ignite.internal.storage.MvPartitionStorage{*} and {*}org.apache.ignite.internal.tx.storage.state.TxStateStorage{*}) has begun and before it is completed, the methods for reading and cursors will throw exceptions *org.apache.ignite.internal.storage.StorageRebalanceException* and {*}org.apache.ignite.lang.IgniteInternalException{*}(with {*}org.apache.ignite.lang.ErrorGroups.Transactions#TX_STATE_STORAGE_REBALANCE_ERR{*}), so RO transactions may fall with errors and you need to handle this somehow.
h3. Upd

As for *StorageRebalanceException* we can remap the request to some other node and continue data retrieval from the there. It’s an open question of how to move the cursor, or in other words continue the iteration from the position we’ve propagated to the user. As a naive solution we can cnt the amount of rows returned to the user and skip exact amount on cursor recreation. Better solutions required.

As for *IgniteInternalException* for TxnStateStorage, it seems to be about writeIntent resolution only, so we should retry the resolution request to new node. PD may help here.

  was:After the rebalancing of storages (*org.apache.ignite.internal.storage.MvPartitionStorage* and *org.apache.ignite.internal.tx.storage.state.TxStateStorage*) has begun and before it is completed, the methods for reading and cursors will throw exceptions *org.apache.ignite.internal.storage.StorageRebalanceException* and *org.apache.ignite.lang.IgniteInternalException*(with *org.apache.ignite.lang.ErrorGroups.Transactions#TX_STATE_STORAGE_REBALANCE_ERR*), so RO transactions may fall with errors and you need to handle this somehow.


> Error handling for RO transactions on rebalance
> -----------------------------------------------
>
>                 Key: IGNITE-18848
>                 URL: https://issues.apache.org/jira/browse/IGNITE-18848
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Kirill Tkalenko
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.0.0-beta2
>
>
> After the rebalancing of storages ({*}org.apache.ignite.internal.storage.MvPartitionStorage{*} and {*}org.apache.ignite.internal.tx.storage.state.TxStateStorage{*}) has begun and before it is completed, the methods for reading and cursors will throw exceptions *org.apache.ignite.internal.storage.StorageRebalanceException* and {*}org.apache.ignite.lang.IgniteInternalException{*}(with {*}org.apache.ignite.lang.ErrorGroups.Transactions#TX_STATE_STORAGE_REBALANCE_ERR{*}), so RO transactions may fall with errors and you need to handle this somehow.
> h3. Upd
> As for *StorageRebalanceException* we can remap the request to some other node and continue data retrieval from the there. It’s an open question of how to move the cursor, or in other words continue the iteration from the position we’ve propagated to the user. As a naive solution we can cnt the amount of rows returned to the user and skip exact amount on cursor recreation. Better solutions required.
> As for *IgniteInternalException* for TxnStateStorage, it seems to be about writeIntent resolution only, so we should retry the resolution request to new node. PD may help here.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)