You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by gv...@apache.org on 2019/01/31 16:51:20 UTC

[ignite] branch master updated: IGNITE-11121: MVCC TX: AssertionError in discovery manager on BLT change fixed. This closes #5963.

This is an automated email from the ASF dual-hosted git repository.

gvvinblade pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 3653230  IGNITE-11121: MVCC TX: AssertionError in discovery manager on BLT change fixed. This closes #5963.
3653230 is described below

commit 36532308292dcd8aa8139c4c2642f7f7b4640961
Author: ipavlukhin <vo...@gmail.com>
AuthorDate: Thu Jan 31 19:50:58 2019 +0300

    IGNITE-11121: MVCC TX: AssertionError in discovery manager on BLT change fixed. This closes #5963.
---
 .../ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java   | 7 +++++--
 .../internal/processors/cache/transactions/IgniteTxManager.java    | 3 ++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
index b333d33..3ed686d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/mvcc/MvccProcessorImpl.java
@@ -452,8 +452,11 @@ public class MvccProcessorImpl extends GridProcessorAdapter implements MvccProce
                 RecoveryBallotBox ballotBox = recoveryBallotBoxes
                     .computeIfAbsent(nodeId, uuid -> new RecoveryBallotBox());
 
-                ballotBox
-                    .voters(evt.topologyNodes().stream().map(ClusterNode::id).collect(Collectors.toList()));
+                ballotBox.voters(evt.topologyNodes().stream()
+                    // Nodes not supporting MVCC will never send votes to us. So, filter them away.
+                    .filter(this::supportsMvcc)
+                    .map(ClusterNode::id)
+                    .collect(Collectors.toList()));
 
                 tryFinishRecoveryVoting(nodeId, ballotBox);
             }
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index e8d1a3f..b3df67a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -2541,7 +2541,8 @@ public class IgniteTxManager extends GridCacheSharedManagerAdapter {
                         ", failedNodeId=" + evtNodeId + ']');
 
                 // Null means that recovery voting is not needed.
-                GridCompoundFuture<IgniteInternalTx, Void> allTxFinFut = node.isClient() && mvccCrd != null
+                GridCompoundFuture<IgniteInternalTx, Void> allTxFinFut =
+                    node.isClient() && mvccCrd != null && mvccCrd.nodeId() != null
                     ? new GridCompoundFuture<>() : null;
 
                 for (final IgniteInternalTx tx : activeTransactions()) {