File tree Expand file tree Collapse file tree
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1354,7 +1354,6 @@ private void processDhtTxSalvageRequest(GridDhtTxSalvageMessage req) {
13541354 // GridDhtTxLocal possible
13551355 if (active instanceof GridDhtTxRemote ) {
13561356 ctx .tm ().salvageTx (active );
1357- break ;
13581357 }
13591358 }
13601359 }
Original file line number Diff line number Diff line change @@ -3140,6 +3140,7 @@ private TxRecoveryInitRunnable(ClusterNode node) {
31403140
31413141 for (final IgniteInternalTx tx : activeTransactions ()) {
31423142 Map <UUID , Collection <UUID >> txNodes = tx .transactionNodes ();
3143+ boolean localInMaster = tx .masterNodeIds ().contains (cctx .localNodeId ());
31433144
31443145 if (tx .storeWriteThrough () && txNodes != null
31453146 && tx .near () && txNodes .containsKey (evtNodeId )
@@ -3149,7 +3150,11 @@ private TxRecoveryInitRunnable(ClusterNode node) {
31493150 sendTxSalvage (tx , evtNodeId );
31503151 }
31513152
3152- if (tx .storeWriteThrough () && !tx .masterNodeIds ().contains (cctx .localNodeId ())
3153+ if (tx .storeWriteThrough () && tx .masterNodeIds ().contains (evtNodeId )) {
3154+ if (localInMaster || tx .eventNodeId ().equals (evtNodeId ))
3155+ salvageTx (tx , RECOVERY_FINISH );
3156+ }
3157+ else if (tx .storeWriteThrough () && !localInMaster
31533158 && tx .nodeId ().equals (evtNodeId ) && tx .state () == PREPARED ) {
31543159 boolean fullSyncedOp = tx .writeEntries ().stream ().map (e ->
31553160 cctx .cacheContext (e .cacheId ())).allMatch (GridCacheContext ::syncCommit );
You can’t perform that action at this time.
0 commit comments