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

sanpwc pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new ca69fcd96b IGNITE-22690 Fixe tx cleanup triggered by commit partition 
primary replica election from non-primary node (#4083)
ca69fcd96b is described below

commit ca69fcd96b2b46bf4b6416976f718a19007b717c
Author: Denis Chudov <[email protected]>
AuthorDate: Wed Jul 17 16:54:31 2024 +0300

    IGNITE-22690 Fixe tx cleanup triggered by commit partition primary replica 
election from non-primary node (#4083)
---
 .../ignite/internal/placementdriver/LeasePlacementDriver.java       | 2 +-
 .../internal/replicator/message/ReplicationGroupIdMessage.java      | 2 +-
 .../org/apache/ignite/internal/table/ItTxResourcesVacuumTest.java   | 4 ++--
 .../main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java | 6 ++++--
 4 files changed, 8 insertions(+), 6 deletions(-)

diff --git 
a/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/LeasePlacementDriver.java
 
b/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/LeasePlacementDriver.java
index 99f6d41822..ea83862d99 100644
--- 
a/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/LeasePlacementDriver.java
+++ 
b/modules/placement-driver-api/src/main/java/org/apache/ignite/internal/placementdriver/LeasePlacementDriver.java
@@ -66,7 +66,7 @@ public interface LeasePlacementDriver extends 
EventProducer<PrimaryReplicaEvent,
      *
      * @param replicationGroupId Replication group id.
      * @param timestamp CLOCK_SKEW aware timestamp reference value.
-     * @return Primary replica future.
+     * @return Primary replica future. {@code ReplicaMeta} will be {@code 
null} if there is no active lease.
      */
     CompletableFuture<ReplicaMeta> getPrimaryReplica(ReplicationGroupId 
replicationGroupId, HybridTimestamp timestamp);
 
diff --git 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/message/ReplicationGroupIdMessage.java
 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/message/ReplicationGroupIdMessage.java
index c0a280e810..4c358d9ff2 100644
--- 
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/message/ReplicationGroupIdMessage.java
+++ 
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/message/ReplicationGroupIdMessage.java
@@ -24,6 +24,6 @@ import 
org.apache.ignite.internal.replicator.ReplicationGroupId;
 public interface ReplicationGroupIdMessage extends NetworkMessage {
     /** Converts to {@link ReplicationGroupId}. */
     default ReplicationGroupId asReplicationGroupId() {
-        throw new AssertionError("Must be implemented by heirs.");
+        throw new AssertionError("Must be implemented by derived classes.");
     }
 }
diff --git 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItTxResourcesVacuumTest.java
 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItTxResourcesVacuumTest.java
index 56ac729434..f4b6ebc77e 100644
--- 
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItTxResourcesVacuumTest.java
+++ 
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItTxResourcesVacuumTest.java
@@ -585,12 +585,12 @@ public class ItTxResourcesVacuumTest extends 
ClusterPerTestIntegrationTest {
         // Cleanup may be triggered by the primary replica reelection as well.
         runningNodes().filter(n -> 
commitPartNodes.contains(n.name())).forEach(nd -> nd.dropMessages((n, msg) -> {
             if (msg instanceof TxCleanupMessage) {
-                log.info("Test: perform cleanup on [node= {}, msg={}].", n, 
msg);
+                log.info("Test: perform cleanup on [node={}, msg={}].", n, 
msg);
 
                 cleanupStarted.complete(null);
 
                 if (!cleanupAllowed[0]) {
-                    log.info("Test: dropping cleanup on [node= {}].", n);
+                    log.info("Test: dropping cleanup on [node={}].", n);
 
                     return true;
                 }
diff --git 
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java
 
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java
index deda198098..fa416eeb62 100644
--- 
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java
+++ 
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java
@@ -366,9 +366,11 @@ public class TxManagerImpl implements TxManager, 
NetworkMessageHandler {
 
     private CompletableFuture<Boolean> 
primaryReplicaElectedListener(PrimaryReplicaEventParameters eventParameters) {
         return primaryReplicaEventListener(eventParameters, groupId -> {
-            String localNodeName = topologyService.localMember().name();
+            if (localNodeId.equals(eventParameters.leaseholderId())) {
+                String localNodeName = topologyService.localMember().name();
 
-            txMessageSender.sendRecoveryCleanup(localNodeName, groupId);
+                txMessageSender.sendRecoveryCleanup(localNodeName, groupId);
+            }
         });
     }
 

Reply via email to