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);
+ }
});
}