This is an automated email from the ASF dual-hosted git repository.
ascherbakov 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 601a33d503b IGNITE-24962 Refactor public transaction configuration
601a33d503b is described below
commit 601a33d503bc7d71d8e907ea08ded570f98c16e9
Author: Alexey Scherbakov <[email protected]>
AuthorDate: Tue Apr 8 15:56:22 2025 +0300
IGNITE-24962 Refactor public transaction configuration
---
.../apache/ignite/client/fakes/FakeTxManager.java | 5 +
.../rebalance/ItRebalanceDistributedTest.java | 1 +
.../replicator/ItAbstractColocationTest.java | 2 +-
.../replicator/ItColocationTxRecoveryTest.java | 10 +-
.../replicator/ItTransactionsVacuumTest.java | 21 +---
.../partition/replicator/fixtures/Node.java | 1 +
.../TxBalanceRetryOperationBenchmark.java | 19 +--
.../benchmark/TxUpsertRetryOperationBenchmark.java | 20 +---
.../internal/client/ItClientDirectMappingTest.java | 6 +-
.../runner/app/ItIgniteNodeRestartTest.java | 1 +
.../ignite/internal/table/ItTableScanTest.java | 2 +-
.../org/apache/ignite/internal/app/IgniteImpl.java | 1 +
.../internal/sql/sqllogic/ItSqlLogicTest.java | 2 +-
.../exec/rel/TableScanNodeExecutionTest.java | 6 +-
.../ItAbstractInternalTableScanTest.java | 5 +
.../ItInternalTableReadOnlyOperationsTest.java | 5 +
.../apache/ignite/distributed/ItLockTableTest.java | 8 +-
.../ItTxDistributedCleanupRecoveryTest.java | 1 +
...xDistributedTestSingleNodeNoCleanupMessage.java | 6 +
.../ignite/distributed/ItTxStateLocalMapTest.java | 5 +
.../ignite/internal/table/ItColocationTest.java | 6 +-
.../internal/table/distributed/TableManager.java | 12 +-
.../distributed/storage/InternalTableImpl.java | 12 +-
.../internal/table/InteropOperationsTest.java | 5 +
.../table/TableKvOperationsMockedTest.java | 7 +-
.../replication/PartitionReplicaListenerTest.java | 3 +-
.../storage/InternalTableEstimatedSizeTest.java | 1 -
.../distributed/storage/InternalTableImplTest.java | 1 -
.../apache/ignite/distributed/ItTxTestCluster.java | 14 ++-
.../internal/table/TxInfrastructureTest.java | 5 +
.../table/impl/DummyInternalTableImpl.java | 18 ++-
.../ignite/internal/tx/KillTransactionTest.java | 2 +-
.../ItTransactionPrimaryChangeTest.java | 5 +-
.../tx/distributed/ItTransactionRecoveryTest.java | 18 +--
.../tx/distributed/ItTxResourcesVacuumTest.java | 22 ++--
.../org/apache/ignite/internal/tx/TxManager.java | 7 ++
...eadlockPreventionPolicyConfigurationSchema.java | 35 ------
.../TransactionConfigurationSchema.java | 28 +----
.../tx/impl/DeadlockPreventionPolicyImpl.java | 12 --
.../ignite/internal/tx/impl/OrphanDetector.java | 31 +----
.../ignite/internal/tx/impl/TxManagerImpl.java | 66 +++++++++--
.../ignite/internal/tx/impl/TxMessageSender.java | 14 +--
.../DeadlockPreventionPolicyConfigurationTest.java | 130 ---------------------
.../apache/ignite/internal/tx/TxCleanupTest.java | 3 +-
.../apache/ignite/internal/tx/TxManagerTest.java | 5 +
.../internal/tx/impl/OrphanDetectorTest.java | 3 +-
46 files changed, 221 insertions(+), 371 deletions(-)
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeTxManager.java
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeTxManager.java
index 8f4fcd061c2..af6389a48c5 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeTxManager.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/fakes/FakeTxManager.java
@@ -263,6 +263,11 @@ public class FakeTxManager implements TxManager {
return nullCompletedFuture();
}
+ @Override
+ public int lockRetryCount() {
+ return 0;
+ }
+
@Override
public int finished() {
return 0;
diff --git
a/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
b/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
index a87fa050494..0888a2429bc 100644
---
a/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
+++
b/modules/distribution-zones/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceDistributedTest.java
@@ -1419,6 +1419,7 @@ public class ItRebalanceDistributedTest extends
BaseIgniteAbstractTest {
txManager = new TxManagerImpl(
txConfiguration,
+ systemDistributedConfiguration,
clusterService,
replicaSvc,
lockManager,
diff --git
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
index 1a5141ba604..66b5ab3fa13 100644
---
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
+++
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItAbstractColocationTest.java
@@ -108,7 +108,7 @@ abstract class ItAbstractColocationTest extends
IgniteAbstractTest {
private StorageConfiguration storageConfiguration;
@InjectConfiguration("mock.idleSafeTimeSyncIntervalMillis = " +
Node.METASTORAGE_IDLE_SYNC_TIME_INTERVAL_MS)
- private SystemDistributedConfiguration systemDistributedConfiguration;
+ protected SystemDistributedConfiguration systemDistributedConfiguration;
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
diff --git
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItColocationTxRecoveryTest.java
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItColocationTxRecoveryTest.java
index 0cdfab104bc..9e662e1a52f 100644
---
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItColocationTxRecoveryTest.java
+++
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItColocationTxRecoveryTest.java
@@ -17,10 +17,10 @@
package org.apache.ignite.internal.partition.replicator;
-import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.partition.replicator.fixtures.Node;
import org.apache.ignite.internal.placementdriver.ReplicaMeta;
import org.apache.ignite.table.KeyValueView;
@@ -44,8 +44,10 @@ class ItColocationTxRecoveryTest extends
ItAbstractColocationTest {
* </ol>
*/
@Test
- void abandonedTransactionGetsAbortedOnTouch() throws Exception {
- assertThat(txConfiguration.abandonedCheckTs().update(600_000L),
willCompleteSuccessfully());
+ void abandonedTransactionGetsAbortedOnTouch(
+
@InjectConfiguration("mock.properties.txnAbandonedCheckTs=\"600000\"")
SystemDistributedConfiguration systemCfg)
+ throws Exception {
+ this.systemDistributedConfiguration = systemCfg;
startCluster(3);
diff --git
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItTransactionsVacuumTest.java
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItTransactionsVacuumTest.java
index e0ae3b4483e..cdebe744153 100644
---
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItTransactionsVacuumTest.java
+++
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItTransactionsVacuumTest.java
@@ -19,16 +19,15 @@ package org.apache.ignite.internal.partition.replicator;
import static org.apache.ignite.internal.TestWrappers.unwrapIgniteTransaction;
import static
org.apache.ignite.internal.testframework.IgniteTestUtils.waitForCondition;
-import static
org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willSucceedFast;
import static
org.apache.ignite.internal.tx.impl.ResourceVacuumManager.RESOURCE_VACUUM_INTERVAL_MILLISECONDS_PROPERTY;
-import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.Map;
import java.util.UUID;
-import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.distributionzones.DistributionZonesTestUtil;
import org.apache.ignite.internal.partition.replicator.fixtures.Node;
import org.apache.ignite.internal.table.TableTestUtils;
@@ -59,8 +58,9 @@ public class ItTransactionsVacuumTest extends
ItAbstractColocationTest {
* @throws Exception If failed.
*/
@Test
- public void testTransactionsVacuum() throws Exception {
- updateTxnResourceTtl(50L);
+ public void testTransactionsVacuum(
+ @InjectConfiguration("mock.properties.txnResourceTtl=\"50\"")
SystemDistributedConfiguration systemCfg) throws Exception {
+ this.systemDistributedConfiguration = systemCfg;
startCluster(1);
Node node = cluster.get(0);
@@ -94,17 +94,6 @@ public class ItTransactionsVacuumTest extends
ItAbstractColocationTest {
assertTrue(waitForCondition(() -> persistentTxState(node, zoneId, 0,
txId) == null, 10_000));
}
- /**
- * Updates txn resource time-to-live value..
- *
- * @param ttl Time-to-live value.
- */
- private void updateTxnResourceTtl(long ttl) {
- CompletableFuture<?> updateFuture = txConfiguration.change(change ->
change.changeTxnResourceTtl(ttl));
-
- assertThat(updateFuture, willSucceedFast());
- }
-
/**
* Returns transaction's meta from volatile storage.
*
diff --git
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
index f59c0fb3f9a..aa7da1842db 100644
---
a/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
+++
b/modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/fixtures/Node.java
@@ -581,6 +581,7 @@ public class Node {
txManager = new TxManagerImpl(
transactionConfiguration,
+ systemConfiguration,
clusterService,
replicaSvc,
lockManager,
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxBalanceRetryOperationBenchmark.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxBalanceRetryOperationBenchmark.java
index 19a2eb70025..8aafaf1af65 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxBalanceRetryOperationBenchmark.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxBalanceRetryOperationBenchmark.java
@@ -74,21 +74,14 @@ public class TxBalanceRetryOperationBenchmark extends
AbstractMultiNodeBenchmark
@Param({"waitTimeout", "replicaOperationRetry"})
private String txRetryMode;
+ @Param({"0", "10"})
+ private int replicaOperationRetryInterval;
+
@Override
protected String clusterConfiguration() {
- if (txRetryMode.equals("waitTimeout")) {
- return "ignite {"
- + "transaction: { deadlockPreventionPolicy: { waitTimeout:
30, txIdComparator: NATURAL } },"
- + "replication: { replicaOperationRetryInterval: 0 }"
- + "}";
- } else {
- assert txRetryMode.equals("replicaOperationRetry");
-
- return "ignite {"
- + "transaction: { deadlockPreventionPolicy: { waitTimeout:
0, txIdComparator: NATURAL } },"
- + "replication: { replicaOperationRetryInterval: 10 }"
- + "}";
- }
+ return "ignite {"
+ + "replication: { replicaOperationRetryInterval: " +
replicaOperationRetryInterval + " }"
+ + "}";
}
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxUpsertRetryOperationBenchmark.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxUpsertRetryOperationBenchmark.java
index ee20e8b7d07..4acaf3ffcce 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxUpsertRetryOperationBenchmark.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/benchmark/TxUpsertRetryOperationBenchmark.java
@@ -71,24 +71,14 @@ public class TxUpsertRetryOperationBenchmark extends
AbstractMultiNodeBenchmark
@Param({"100", "1000"})
private int keysUpperBound;
- @Param({"waitTimeout", "replicaOperationRetry"})
- private String txRetryMode;
+ @Param({"0", "10"})
+ private int replicaOperationRetryInterval;
@Override
protected String clusterConfiguration() {
- if (txRetryMode.equals("waitTimeout")) {
- return "ignite {"
- + "transaction: { deadlockPreventionPolicy: { waitTimeout:
30, txIdComparator: NATURAL } },"
- + "replication: { replicaOperationRetryInterval: 0 }"
- + "}";
- } else {
- assert txRetryMode.equals("replicaOperationRetry");
-
- return "ignite {"
- + "transaction: { deadlockPreventionPolicy: { waitTimeout:
0, txIdComparator: NATURAL } },"
- + "replication: { replicaOperationRetryInterval: 10 }"
- + "}";
- }
+ return "ignite {"
+ + "replication: { replicaOperationRetryInterval: " +
replicaOperationRetryInterval + " }"
+ + "}";
}
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/client/ItClientDirectMappingTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/client/ItClientDirectMappingTest.java
index 0a76e3a4abf..192869ec261 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/client/ItClientDirectMappingTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/client/ItClientDirectMappingTest.java
@@ -75,9 +75,8 @@ public class ItClientDirectMappingTest extends
ClusterPerTestIntegrationTest {
builder.clusterConfiguration("ignite {"
+ " transaction: {"
- + " readOnlyTimeout: 30000,"
- + " readWriteTimeout: 30000,"
- + " txnResourceTtl: 2"
+ + " readOnlyTimeoutMillis: 30000,"
+ + " readWriteTimeoutMillis: 30000"
+ " },"
+ " replication: {"
+ " rpcTimeoutMillis: 30000"
@@ -144,6 +143,7 @@ public class ItClientDirectMappingTest extends
ClusterPerTestIntegrationTest {
return findNode(0, initialNodes(), n -> leaseholder.equals(n.name()));
}
+ @Override
protected int initialNodes() {
return 2;
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
index e0e92032a49..d2a30b6674e 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgniteNodeRestartTest.java
@@ -624,6 +624,7 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
var txManager = new TxManagerImpl(
name,
txConfiguration,
+ systemDistributedConfiguration,
messagingServiceReturningToStorageOperationsPool,
clusterSvc.topologyService(),
replicaService,
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
index 061e7b5f297..165ba3fae9c 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
@@ -125,7 +125,7 @@ public class ItTableScanTest extends BaseSqlIntegrationTest
{
protected void configureInitParameters(InitParametersBuilder builder) {
// Set a short timeout for the test because it uses defaultTimeouts
for implicit transactions,
// It is too long to wait for 30 seconds (default value for Read-Write
Transactions).
- builder.clusterConfiguration("{ignite.transaction.readWriteTimeout:
5000}");
+
builder.clusterConfiguration("{ignite.transaction.readWriteTimeoutMillis:
5000}");
}
@BeforeEach
diff --git
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
index c4921a0e08a..cd3e3155ed1 100644
---
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
+++
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgniteImpl.java
@@ -993,6 +993,7 @@ public class IgniteImpl implements Ignite {
txManager = new TxManagerImpl(
name,
txConfig,
+ systemDistributedConfiguration,
messagingServiceReturningToStorageOperationsPool,
clusterSvc.topologyService(),
replicaSvc,
diff --git
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/sqllogic/ItSqlLogicTest.java
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/sqllogic/ItSqlLogicTest.java
index bd0760b5820..6e0c4f802ae 100644
---
a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/sqllogic/ItSqlLogicTest.java
+++
b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/sqllogic/ItSqlLogicTest.java
@@ -361,7 +361,7 @@ public class ItSqlLogicTest extends BaseIgniteAbstractTest {
.metaStorageNodes(nodes.get(0))
.clusterName("cluster")
.clusterConfiguration("ignite {"
- + "transaction.readWriteTimeout: " + TX_RW_TIMEOUT +
",\n"
+ + "transaction.readWriteTimeoutMillis: " +
TX_RW_TIMEOUT + ",\n"
+ "system.idleSafeTimeSyncIntervalMillis: " +
METASTORAGE_IDLE_SYNC_TIME_INTERVAL_MS + ",\n"
// TODO: Set dataAvailabilityTimeMillis to 5000 after
IGNITE-24002 is fixed.
+ "gc.lowWatermark.dataAvailabilityTimeMillis:
30000,\n"
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
index e38bcc34da7..6f3992bd79c 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/exec/rel/TableScanNodeExecutionTest.java
@@ -45,6 +45,7 @@ import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.StreamSupport;
import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.ClockService;
@@ -115,6 +116,9 @@ public class TableScanNodeExecutionTest extends
AbstractExecutionTest<Object[]>
@InjectConfiguration
private TransactionConfiguration txConfiguration;
+ @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
+ private SystemDistributedConfiguration systemDistributedConfiguration;
+
@InjectExecutorService
private ScheduledExecutorService commonExecutor;
@@ -176,6 +180,7 @@ public class TableScanNodeExecutionTest extends
AbstractExecutionTest<Object[]>
TxManagerImpl txManager = new TxManagerImpl(
txConfiguration,
+ systemDistributedConfiguration,
clusterService,
replicaSvc,
HeapLockManager.smallInstance(),
@@ -329,7 +334,6 @@ public class TableScanNodeExecutionTest extends
AbstractExecutionTest<Object[]>
timestampTracker,
mock(PlacementDriver.class),
mock(TransactionInflights.class),
- 0,
null,
mock(StreamerReceiverRunner.class),
() -> 10_000L,
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItAbstractInternalTableScanTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItAbstractInternalTableScanTest.java
index 1a67509ceb0..7cf1b7a161d 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItAbstractInternalTableScanTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItAbstractInternalTableScanTest.java
@@ -43,6 +43,7 @@ import java.util.concurrent.Flow.Subscription;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -95,6 +96,9 @@ public abstract class ItAbstractInternalTableScanTest extends
IgniteAbstractTest
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
+ @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
+ private SystemDistributedConfiguration systemDistributedConfiguration;
+
/** Mock partition storage. */
@Mock
private MvPartitionStorage mockStorage;
@@ -140,6 +144,7 @@ public abstract class ItAbstractInternalTableScanTest
extends IgniteAbstractTest
mockStorage,
ROW_SCHEMA,
txConfiguration,
+ systemDistributedConfiguration,
replicationConfiguration
);
}
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItInternalTableReadOnlyOperationsTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItInternalTableReadOnlyOperationsTest.java
index 8603f5da67e..9283d9fae87 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItInternalTableReadOnlyOperationsTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItInternalTableReadOnlyOperationsTest.java
@@ -40,6 +40,7 @@ import java.util.Collections;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.HybridClock;
@@ -92,6 +93,9 @@ public class ItInternalTableReadOnlyOperationsTest extends
IgniteAbstractTest {
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
+ @InjectConfiguration
+ private SystemDistributedConfiguration systemDistributedConfiguration;
+
private static final HybridClock CLOCK = new HybridClockImpl();
private static final Row ROW_1 = createKeyValueRow(1, 1001);
@@ -132,6 +136,7 @@ public class ItInternalTableReadOnlyOperationsTest extends
IgniteAbstractTest {
mockStorage,
SCHEMA,
txConfiguration,
+ systemDistributedConfiguration,
replicationConfiguration
);
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
index cdbf2665a75..6c7c9c2ae4a 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItLockTableTest.java
@@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
@@ -92,7 +93,7 @@ public class ItLockTableTest extends IgniteAbstractTest {
@InjectConfiguration("mock: { fsync: false }")
protected static RaftConfiguration raftConfiguration;
- @InjectConfiguration("mock: { deadlockPreventionPolicy: { waitTimeout: -1,
txIdComparator: NONE } }")
+ @InjectConfiguration()
protected static TransactionConfiguration txConfiguration;
@InjectConfiguration
@@ -101,6 +102,9 @@ public class ItLockTableTest extends IgniteAbstractTest {
@InjectConfiguration("mock.properties: { lockMapSize: \"" + CACHE_SIZE +
"\" }")
private static SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
+ private static SystemDistributedConfiguration
systemDistributedConfiguration;
+
@InjectExecutorService
protected ScheduledExecutorService commonExecutor;
@@ -123,6 +127,7 @@ public class ItLockTableTest extends IgniteAbstractTest {
testInfo,
raftConfiguration,
txConfiguration,
+ systemDistributedConfiguration,
workDir,
1,
1,
@@ -144,6 +149,7 @@ public class ItLockTableTest extends IgniteAbstractTest {
) {
return new TxManagerImpl(
txConfiguration,
+ systemDistributedConfiguration,
clusterService,
replicaSvc,
new HeapLockManager(systemLocalConfiguration),
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
index 206bb1d7155..e7f9ab5307a 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedCleanupRecoveryTest.java
@@ -54,6 +54,7 @@ public class ItTxDistributedCleanupRecoveryTest extends
TxAbstractTest {
testInfo,
raftConfiguration,
txConfiguration,
+ systemDistributedConfiguration,
workDir,
nodes(),
replicas(),
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
index 58bce6160e7..c58bbf7101d 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxDistributedTestSingleNodeNoCleanupMessage.java
@@ -34,6 +34,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Executor;
import java.util.function.Supplier;
import org.apache.ignite.internal.catalog.CatalogService;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.failure.FailureProcessor;
@@ -93,6 +94,9 @@ public class ItTxDistributedTestSingleNodeNoCleanupMessage
extends TxAbstractTes
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
+ private SystemDistributedConfiguration systemDistributedConfiguration;
+
/**
* The constructor.
*
@@ -109,6 +113,7 @@ public class ItTxDistributedTestSingleNodeNoCleanupMessage
extends TxAbstractTes
testInfo,
raftConfiguration,
txConfiguration,
+ systemDistributedConfiguration,
workDir,
nodes(),
replicas(),
@@ -130,6 +135,7 @@ public class ItTxDistributedTestSingleNodeNoCleanupMessage
extends TxAbstractTes
) {
return new TxManagerImpl(
txConfiguration,
+ systemDistributedConfiguration,
clusterService,
replicaSvc,
new HeapLockManager(systemLocalConfiguration),
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
index 36659e3dc01..66510e8dcf0 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/distributed/ItTxStateLocalMapTest.java
@@ -29,6 +29,7 @@ import java.util.UUID;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Consumer;
import java.util.stream.IntStream;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.HybridTimestamp;
@@ -68,6 +69,9 @@ public class ItTxStateLocalMapTest extends IgniteAbstractTest
{
@InjectConfiguration
private TransactionConfiguration txConfiguration;
+ @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
+ private SystemDistributedConfiguration systemDistributedConfiguration;
+
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
@@ -98,6 +102,7 @@ public class ItTxStateLocalMapTest extends
IgniteAbstractTest {
testInfo,
raftConfig,
txConfiguration,
+ systemDistributedConfiguration,
workDir,
NODES,
NODES,
diff --git
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
index 8b3d00cb6d3..8a57939a432 100644
---
a/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
+++
b/modules/table/src/integrationTest/java/org/apache/ignite/internal/table/ItColocationTest.java
@@ -55,6 +55,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
@@ -177,6 +178,9 @@ public class ItColocationTest extends
BaseIgniteAbstractTest {
@InjectConfiguration
private static SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private static SystemDistributedConfiguration
systemDistributedConfiguration;
+
@InjectExecutorService
private static ScheduledExecutorService commonExecutor;
@@ -209,6 +213,7 @@ public class ItColocationTest extends
BaseIgniteAbstractTest {
txManager = new TxManagerImpl(
txConfiguration,
+ systemDistributedConfiguration,
clusterService,
replicaService,
new HeapLockManager(systemLocalConfiguration),
@@ -362,7 +367,6 @@ public class ItColocationTest extends
BaseIgniteAbstractTest {
observableTimestampTracker,
new TestPlacementDriver(clusterNode),
transactionInflights,
- 0,
null,
mock(StreamerReceiverRunner.class),
() -> 10_000L,
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
index 0ccf4282238..efc6b2236de 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/TableManager.java
@@ -407,8 +407,6 @@ public class TableManager implements IgniteTablesInternal,
IgniteComponent {
private final PartitionReplicaLifecycleManager
partitionReplicaLifecycleManager;
- private int attemptsObtainLock;
-
@Nullable
private ScheduledExecutorService streamerFlushExecutor;
@@ -547,8 +545,7 @@ public class TableManager implements IgniteTablesInternal,
IgniteComponent {
TxMessageSender txMessageSender = new TxMessageSender(
messagingService,
replicaSvc,
- clockService,
- txCfg
+ clockService
);
transactionStateResolver = new TransactionStateResolver(
@@ -655,8 +652,6 @@ public class TableManager implements IgniteTablesInternal,
IgniteComponent {
partitionReplicatorNodeRecovery.start();
- attemptsObtainLock = txCfg.attemptsObtainLock().value();
-
if (!enabledColocation) {
executorInclinedPlacementDriver.listen(PrimaryReplicaEvent.PRIMARY_REPLICA_EXPIRED,
onPrimaryReplicaExpiredListener);
}
@@ -1655,11 +1650,10 @@ public class TableManager implements
IgniteTablesInternal, IgniteComponent {
observableTimestampTracker,
executorInclinedPlacementDriver,
transactionInflights,
- attemptsObtainLock,
this::streamerFlushExecutor,
Objects.requireNonNull(streamerReceiverRunner),
- () -> txCfg.value().readWriteTimeout(),
- () -> txCfg.value().readOnlyTimeout()
+ () -> txCfg.value().readWriteTimeoutMillis(),
+ () -> txCfg.value().readOnlyTimeoutMillis()
);
return new TableImpl(
diff --git
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
index b247feb74dd..169fc4b5d84 100644
---
a/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
+++
b/modules/table/src/main/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImpl.java
@@ -208,9 +208,6 @@ public class InternalTableImpl implements InternalTable {
/** Map update guarded by {@link #updatePartitionMapsMux}. */
private volatile Int2ObjectMap<PendingComparableValuesTracker<Long, Void>>
storageIndexTrackerByPartitionId = emptyMap();
- /** Attempts to take lock. */
- private final int attemptsObtainLock;
-
/** Default read-write transaction timeout. */
private final Supplier<Long> defaultRwTxTimeout;
@@ -232,7 +229,6 @@ public class InternalTableImpl implements InternalTable {
* @param clockService A hybrid logical clock service.
* @param placementDriver Placement driver.
* @param transactionInflights Transaction inflights.
- * @param attemptsObtainLock Attempts to take lock.
* @param streamerFlushExecutor Streamer flush executor.
* @param streamerReceiverRunner Streamer receiver runner.
* @param defaultRwTxTimeout Default read-write transaction timeout.
@@ -252,7 +248,6 @@ public class InternalTableImpl implements InternalTable {
HybridTimestampTracker observableTimestampTracker,
PlacementDriver placementDriver,
TransactionInflights transactionInflights,
- int attemptsObtainLock,
Supplier<ScheduledExecutorService> streamerFlushExecutor,
StreamerReceiverRunner streamerReceiverRunner,
Supplier<Long> defaultRwTxTimeout,
@@ -271,7 +266,6 @@ public class InternalTableImpl implements InternalTable {
this.observableTimestampTracker = observableTimestampTracker;
this.placementDriver = placementDriver;
this.transactionInflights = transactionInflights;
- this.attemptsObtainLock = attemptsObtainLock;
this.streamerFlushExecutor = streamerFlushExecutor;
this.streamerReceiverRunner = streamerReceiverRunner;
this.defaultRwTxTimeout = defaultRwTxTimeout;
@@ -379,7 +373,7 @@ public class InternalTableImpl implements InternalTable {
false,
enlistment,
noWriteChecker,
- attemptsObtainLock
+ txManager.lockRetryCount()
);
} else {
fut = enlistAndInvoke(
@@ -494,7 +488,7 @@ public class InternalTableImpl implements InternalTable {
false,
enlistment,
noOpChecker,
- attemptsObtainLock
+ txManager.lockRetryCount()
);
} else {
fut = enlistAndInvoke(
@@ -636,7 +630,7 @@ public class InternalTableImpl implements InternalTable {
) {
return enlist(partId, tx)
.thenCompose(enlistment ->
- trackingInvoke(tx, partId, mapFunc, full, enlistment,
noWriteChecker, attemptsObtainLock));
+ trackingInvoke(tx, partId, mapFunc, full, enlistment,
noWriteChecker, txManager.lockRetryCount()));
}
/**
diff --git
a/modules/table/src/test/java/org/apache/ignite/internal/table/InteropOperationsTest.java
b/modules/table/src/test/java/org/apache/ignite/internal/table/InteropOperationsTest.java
index 004e8956ef3..0517f4bc892 100644
---
a/modules/table/src/test/java/org/apache/ignite/internal/table/InteropOperationsTest.java
+++
b/modules/table/src/test/java/org/apache/ignite/internal/table/InteropOperationsTest.java
@@ -37,6 +37,7 @@ import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.UUID;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.network.ClusterService;
@@ -101,6 +102,9 @@ public class InteropOperationsTest extends
BaseIgniteAbstractTest {
@InjectConfiguration
private static TransactionConfiguration txConfiguration;
+ @InjectConfiguration
+ private static SystemDistributedConfiguration
systemDistributedConfiguration;
+
@InjectConfiguration
private static ReplicationConfiguration replicationConfiguration;
@@ -134,6 +138,7 @@ public class InteropOperationsTest extends
BaseIgniteAbstractTest {
when(clusterService.topologyService().localMember().address()).thenReturn(DummyInternalTableImpl.ADDR);
intTable = new DummyInternalTableImpl(mock(ReplicaService.class,
RETURNS_DEEP_STUBS), schema, txConfiguration,
+ systemDistributedConfiguration,
replicationConfiguration);
SchemaRegistry schemaRegistry = new DummySchemaManagerImpl(schema);
diff --git
a/modules/table/src/test/java/org/apache/ignite/internal/table/TableKvOperationsMockedTest.java
b/modules/table/src/test/java/org/apache/ignite/internal/table/TableKvOperationsMockedTest.java
index eb08e25b45b..afcfbe12ec1 100644
---
a/modules/table/src/test/java/org/apache/ignite/internal/table/TableKvOperationsMockedTest.java
+++
b/modules/table/src/test/java/org/apache/ignite/internal/table/TableKvOperationsMockedTest.java
@@ -43,6 +43,7 @@ import java.util.Random;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.marshaller.MarshallersProvider;
@@ -94,6 +95,9 @@ public class TableKvOperationsMockedTest extends
BaseIgniteAbstractTest {
@InjectConfiguration
private ReplicationConfiguration replicationConfiguration;
+ @InjectConfiguration
+ private SystemDistributedConfiguration systemDistributedConfiguration;
+
@Mock(answer = RETURNS_DEEP_STUBS)
private ReplicaService replicaService;
@@ -302,6 +306,7 @@ public class TableKvOperationsMockedTest extends
BaseIgniteAbstractTest {
}
private DummyInternalTableImpl createInternalTable(SchemaDescriptor
schema) {
- return new DummyInternalTableImpl(replicaService, schema,
txConfiguration, replicationConfiguration);
+ return new DummyInternalTableImpl(replicaService, schema,
txConfiguration, systemDistributedConfiguration,
+ replicationConfiguration);
}
}
diff --git
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
index 6eaaee6a224..35eefd31a95 100644
---
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
+++
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/replication/PartitionReplicaListenerTest.java
@@ -651,8 +651,7 @@ public class PartitionReplicaListenerTest extends
IgniteAbstractTest {
new TxMessageSender(
messagingService,
mock(ReplicaService.class),
- clockService,
- transactionConfiguration
+ clockService
)
);
diff --git
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableEstimatedSizeTest.java
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableEstimatedSizeTest.java
index e0a028c10d1..4407fbfaa6d 100644
---
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableEstimatedSizeTest.java
+++
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableEstimatedSizeTest.java
@@ -225,7 +225,6 @@ public class InternalTableEstimatedSizeTest extends
BaseIgniteAbstractTest {
HybridTimestampTracker.atomicTracker(null),
placementDriver,
new TransactionInflights(placementDriver, clockService),
- 0,
() -> null,
mock(StreamerReceiverRunner.class),
() -> 10_000L,
diff --git
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImplTest.java
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImplTest.java
index 11edf401728..185bef8c63c 100644
---
a/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImplTest.java
+++
b/modules/table/src/test/java/org/apache/ignite/internal/table/distributed/storage/InternalTableImplTest.java
@@ -241,7 +241,6 @@ public class InternalTableImplTest extends
BaseIgniteAbstractTest {
HybridTimestampTracker.atomicTracker(null),
placementDriver,
new TransactionInflights(placementDriver, clockService),
- 0,
() -> mock(ScheduledExecutorService.class),
mock(StreamerReceiverRunner.class),
() -> 10_000L,
diff --git
a/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
b/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
index 4e08b5e7722..3a5f7072185 100644
---
a/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
+++
b/modules/table/src/testFixtures/java/org/apache/ignite/distributed/ItTxTestCluster.java
@@ -77,6 +77,7 @@ import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopolog
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologyService;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologySnapshot;
import org.apache.ignite.internal.configuration.RaftGroupOptionsConfigHelper;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import org.apache.ignite.internal.failure.NoOpFailureManager;
import org.apache.ignite.internal.hlc.ClockService;
import org.apache.ignite.internal.hlc.ClockWaiter;
@@ -211,6 +212,8 @@ public class ItTxTestCluster {
private final TransactionConfiguration txConfiguration;
+ private final SystemDistributedConfiguration systemCfg;
+
private final Path workDir;
private final int nodes;
@@ -337,6 +340,7 @@ public class ItTxTestCluster {
TestInfo testInfo,
RaftConfiguration raftConfig,
TransactionConfiguration txConfiguration,
+ SystemDistributedConfiguration systemCfg,
Path workDir,
int nodes,
int replicas,
@@ -346,6 +350,7 @@ public class ItTxTestCluster {
) {
this.raftConfig = raftConfig;
this.txConfiguration = txConfiguration;
+ this.systemCfg = systemCfg;
this.workDir = workDir;
this.nodes = nodes;
this.replicas = replicas;
@@ -592,6 +597,7 @@ public class ItTxTestCluster {
return new TxManagerImpl(
node.name(),
txConfiguration,
+ systemCfg,
clusterService.messagingService(),
clusterService.topologyService(),
replicaSvc,
@@ -668,7 +674,6 @@ public class ItTxTestCluster {
timestampTracker,
placementDriver,
clientTransactionInflights,
- 0,
null,
mock(StreamerReceiverRunner.class),
() -> 10_000L,
@@ -702,8 +707,7 @@ public class ItTxTestCluster {
new TxMessageSender(
clusterServices.get(assignment).messagingService(),
replicaServices.get(assignment),
- clockServices.get(assignment),
- txConfiguration
+ clockServices.get(assignment)
);
var transactionStateResolver = new TransactionStateResolver(
@@ -1294,6 +1298,7 @@ public class ItTxTestCluster {
clientTxManager = new TxManagerImpl(
"client",
txConfiguration,
+ systemCfg,
client.messagingService(),
client.topologyService(),
clientReplicaSvc,
@@ -1331,8 +1336,7 @@ public class ItTxTestCluster {
new TxMessageSender(
client.messagingService(),
clientReplicaSvc,
- clientClockService,
- txConfiguration
+ clientClockService
)
);
diff --git
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
index aad2ee84d1f..428e18dbf03 100644
---
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
+++
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/TxInfrastructureTest.java
@@ -28,6 +28,7 @@ import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService;
import org.apache.ignite.distributed.ItTxTestCluster;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.HybridClock;
@@ -117,6 +118,9 @@ public abstract class TxInfrastructureTest extends
IgniteAbstractTest {
@InjectConfiguration("mock: { fsync: false }")
protected RaftConfiguration raftConfiguration;
+ @InjectConfiguration("mock.properties.txnLockRetryCount=\"0\"")
+ protected SystemDistributedConfiguration systemDistributedConfiguration;
+
@InjectConfiguration
protected TransactionConfiguration txConfiguration;
@@ -173,6 +177,7 @@ public abstract class TxInfrastructureTest extends
IgniteAbstractTest {
testInfo,
raftConfiguration,
txConfiguration,
+ systemDistributedConfiguration,
workDir,
nodes(),
replicas(),
diff --git
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
index 9b665e56b7e..4d87c7ac8d1 100644
---
a/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
+++
b/modules/table/src/testFixtures/java/org/apache/ignite/internal/table/impl/DummyInternalTableImpl.java
@@ -50,6 +50,7 @@ import org.apache.ignite.internal.catalog.Catalog;
import org.apache.ignite.internal.catalog.CatalogService;
import org.apache.ignite.internal.catalog.descriptors.CatalogIndexDescriptor;
import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import org.apache.ignite.internal.failure.FailureProcessor;
import org.apache.ignite.internal.hlc.ClockService;
import org.apache.ignite.internal.hlc.HybridClock;
@@ -198,12 +199,14 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
* @param replicaSvc Replica service.
* @param schema Schema.
* @param txConfiguration Transaction configuration.
+ * @param systemCfg System configuration.
* @param replicationConfiguration Replication configuration.
*/
public DummyInternalTableImpl(
ReplicaService replicaSvc,
SchemaDescriptor schema,
TransactionConfiguration txConfiguration,
+ SystemDistributedConfiguration systemCfg,
ReplicationConfiguration replicationConfiguration
) {
this(
@@ -212,6 +215,7 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
new TestMvPartitionStorage(0),
schema,
txConfiguration,
+ systemCfg,
replicationConfiguration
);
}
@@ -224,6 +228,7 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
* @param storage Storage.
* @param schema Schema.
* @param txConfiguration Transaction configuration.
+ * @param systemCfg System configuration.
* @param replicationConfiguration Replication Configuration.
*/
public DummyInternalTableImpl(
@@ -232,6 +237,7 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
MvPartitionStorage storage,
SchemaDescriptor schema,
TransactionConfiguration txConfiguration,
+ SystemDistributedConfiguration systemCfg,
ReplicationConfiguration replicationConfiguration
) {
this(
@@ -244,6 +250,7 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
placementDriver,
replicationConfiguration,
txConfiguration,
+ systemCfg,
new RemotelyTriggeredResourceRegistry(),
new TransactionInflights(placementDriver, CLOCK_SERVICE)
);
@@ -261,6 +268,10 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
* @param tracker Observable timestamp tracker.
* @param placementDriver Placement driver.
* @param replicationConfiguration Replication configuration.
+ * @param txConfiguration Transaction configuration.
+ * @param systemCfg System configuration.
+ * @param resourcesRegistry Resource registry.
+ * @param transactionInflights Inflights.
*/
public DummyInternalTableImpl(
ReplicaService replicaSvc,
@@ -272,6 +283,7 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
PlacementDriver placementDriver,
ReplicationConfiguration replicationConfiguration,
TransactionConfiguration txConfiguration,
+ SystemDistributedConfiguration systemCfg,
RemotelyTriggeredResourceRegistry resourcesRegistry,
TransactionInflights transactionInflights
) {
@@ -281,7 +293,7 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
nextTableId.getAndIncrement(), // table id.
1, // number of partitions.
new SingleClusterNodeResolver(LOCAL_NODE),
- txManager(replicaSvc, placementDriver, txConfiguration,
resourcesRegistry),
+ txManager(replicaSvc, placementDriver, txConfiguration,
systemCfg, resourcesRegistry),
mock(MvTableStorage.class),
new TestTxStateStorage(),
replicaSvc,
@@ -289,7 +301,6 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
tracker,
placementDriver,
transactionInflights,
- 0,
null,
mock(StreamerReceiverRunner.class),
() -> 10_000L,
@@ -637,12 +648,14 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
* @param replicaSvc Replica service to use.
* @param placementDriver Placement driver.
* @param txConfiguration Transaction configuration.
+ * @param systemCfg System configuration.
* @param resourcesRegistry Resources registry.
*/
public static TxManagerImpl txManager(
ReplicaService replicaSvc,
PlacementDriver placementDriver,
TransactionConfiguration txConfiguration,
+ SystemDistributedConfiguration systemCfg,
RemotelyTriggeredResourceRegistry resourcesRegistry
) {
TopologyService topologyService = mock(TopologyService.class);
@@ -657,6 +670,7 @@ public class DummyInternalTableImpl extends
InternalTableImpl {
var txManager = new TxManagerImpl(
txConfiguration,
+ systemCfg,
clusterService,
replicaSvc,
HeapLockManager.smallInstance(),
diff --git
a/modules/transactions/src/integrationTest/java/org/apache/ignite/internal/tx/KillTransactionTest.java
b/modules/transactions/src/integrationTest/java/org/apache/ignite/internal/tx/KillTransactionTest.java
index eb61e2e11bb..09b37ad92d5 100644
---
a/modules/transactions/src/integrationTest/java/org/apache/ignite/internal/tx/KillTransactionTest.java
+++
b/modules/transactions/src/integrationTest/java/org/apache/ignite/internal/tx/KillTransactionTest.java
@@ -50,7 +50,7 @@ public class KillTransactionTest extends
ClusterPerClassIntegrationTest {
protected void configureInitParameters(InitParametersBuilder builder) {
super.configureInitParameters(builder);
- builder.clusterConfiguration("ignite.transaction.txnResourceTtl=0");
+
builder.clusterConfiguration("ignite.system.properties.txnResourceTtl=\"0\"");
}
@Test
diff --git
a/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionPrimaryChangeTest.java
b/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionPrimaryChangeTest.java
index 5c8d559f521..9ddb2eae67f 100644
---
a/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionPrimaryChangeTest.java
+++
b/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionPrimaryChangeTest.java
@@ -85,9 +85,8 @@ public class ItTransactionPrimaryChangeTest extends
ClusterPerTestIntegrationTes
builder.clusterConfiguration("ignite {"
+ " transaction: {"
- + " readOnlyTimeout: 30000,"
- + " readWriteTimeout: 30000,"
- + " txnResourceTtl: 2"
+ + " readOnlyTimeoutMillis: 30000,"
+ + " readWriteTimeoutMillis: 30000,"
+ " },"
+ " replication: {"
+ " rpcTimeoutMillis: 30000"
diff --git
a/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionRecoveryTest.java
b/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionRecoveryTest.java
index c6917008a21..0c018d32751 100644
---
a/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionRecoveryTest.java
+++
b/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTransactionRecoveryTest.java
@@ -89,7 +89,6 @@ import
org.apache.ignite.internal.tx.PendingTxPartitionEnlistment;
import org.apache.ignite.internal.tx.TxMeta;
import org.apache.ignite.internal.tx.TxState;
import org.apache.ignite.internal.tx.TxStateMeta;
-import
org.apache.ignite.internal.tx.configuration.TransactionExtensionConfiguration;
import org.apache.ignite.internal.tx.message.FinishedTransactionsBatchMessage;
import org.apache.ignite.internal.tx.message.TxFinishReplicaRequest;
import org.apache.ignite.internal.tx.message.TxRecoveryMessage;
@@ -140,9 +139,10 @@ public class ItTransactionRecoveryTest extends
ClusterPerTestIntegrationTest {
super.customizeInitParameters(builder);
builder.clusterConfiguration("ignite {\n"
- + " \"transaction\": {\n"
- + " \"abandonedCheckTs\": 600000\n"
- + " \"attemptsObtainLock\": 0\n"
+ + "system.properties = "
+ + " {\n"
+ + " \"txnAbandonedCheckTs\": \"600000\",\n"
+ + " \"txnLockRetryCount\": \"0\"\n"
+ " }\n"
+ "}\n");
}
@@ -247,16 +247,6 @@ public class ItTransactionRecoveryTest extends
ClusterPerTestIntegrationTest {
assertEquals(orphanTxId, recoveryTxMsgCaptureFut.join());
assertEquals(1, msgCount.get());
-
- unwrapIgniteImpl(node(0)).clusterConfiguration()
-
.getConfiguration(TransactionExtensionConfiguration.KEY).transaction()
- .change(transactionChange ->
transactionChange.changeAbandonedCheckTs(1));
-
- assertTrue(waitForCondition(() -> {
- runConflictingTransaction(node(0), node(0).transactions().begin());
-
- return msgCount.get() > 1;
- }, 10_000));
}
@Test
diff --git
a/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTxResourcesVacuumTest.java
b/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTxResourcesVacuumTest.java
index 01e5c4879e5..b03e1eb7c66 100644
---
a/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTxResourcesVacuumTest.java
+++
b/modules/transactions/src/integrationTest/java/org/apache/ignite/tx/distributed/ItTxResourcesVacuumTest.java
@@ -56,6 +56,8 @@ import org.apache.ignite.InitParametersBuilder;
import org.apache.ignite.internal.ClusterPerTestIntegrationTest;
import org.apache.ignite.internal.TestWrappers;
import org.apache.ignite.internal.app.IgniteImpl;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
+import
org.apache.ignite.internal.configuration.SystemDistributedExtensionConfiguration;
import org.apache.ignite.internal.placementdriver.ReplicaMeta;
import org.apache.ignite.internal.replicator.TablePartitionId;
import org.apache.ignite.internal.testframework.SystemPropertiesExtension;
@@ -65,8 +67,6 @@ import org.apache.ignite.internal.thread.ThreadOperation;
import org.apache.ignite.internal.tx.TransactionMeta;
import org.apache.ignite.internal.tx.TxState;
import org.apache.ignite.internal.tx.TxStateMeta;
-import org.apache.ignite.internal.tx.configuration.TransactionConfiguration;
-import
org.apache.ignite.internal.tx.configuration.TransactionExtensionConfiguration;
import org.apache.ignite.internal.tx.impl.TxManagerImpl;
import org.apache.ignite.internal.tx.message.TxCleanupMessage;
import org.apache.ignite.internal.tx.message.TxFinishReplicaRequest;
@@ -140,12 +140,8 @@ public class ItTxResourcesVacuumTest extends
ClusterPerTestIntegrationTest {
super.customizeInitParameters(builder);
builder.clusterConfiguration("ignite {"
- + " transaction: {"
- + " txnResourceTtl: 0"
- + " },"
- + " replication: {"
- + " rpcTimeoutMillis: 30000"
- + " },"
+ + " system.properties.txnResourceTtl: \"0\","
+ + " replication.rpcTimeoutMillis: 30000"
+ "}");
}
@@ -817,11 +813,13 @@ public class ItTxResourcesVacuumTest extends
ClusterPerTestIntegrationTest {
}
private void setTxResourceTtl(long ttl) {
- TransactionConfiguration transactionConfiguration =
anyNode().clusterConfiguration()
-
.getConfiguration(TransactionExtensionConfiguration.KEY).transaction();
- CompletableFuture<Void> changeFuture =
transactionConfiguration.change(c -> c.changeTxnResourceTtl(ttl));
+ SystemDistributedConfiguration system =
anyNode().clusterConfiguration()
+
.getConfiguration(SystemDistributedExtensionConfiguration.KEY).system();
- assertThat(changeFuture, willCompleteSuccessfully());
+ CompletableFuture<Void> changeFut = system.change(
+ c -> c.changeProperties(c0 -> c0.update("txnResourceTtl", c1
-> c1.changePropertyValue(ttl + ""))));
+
+ assertThat(changeFut, willCompleteSuccessfully());
}
/**
diff --git
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TxManager.java
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TxManager.java
index 94936c08cf4..3cdf6771940 100644
---
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TxManager.java
+++
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/TxManager.java
@@ -249,6 +249,13 @@ public interface TxManager extends IgniteComponent {
*/
CompletableFuture<Boolean> kill(UUID txId);
+ /**
+ * Returns lock retry count.
+ *
+ * @return The count.
+ */
+ int lockRetryCount();
+
/**
* Returns a number of finished transactions.
*
diff --git
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/configuration/DeadlockPreventionPolicyConfigurationSchema.java
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/configuration/DeadlockPreventionPolicyConfigurationSchema.java
deleted file mode 100644
index 4058823673c..00000000000
---
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/configuration/DeadlockPreventionPolicyConfigurationSchema.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.tx.configuration;
-
-import org.apache.ignite.configuration.annotation.Config;
-import org.apache.ignite.configuration.annotation.Value;
-import org.apache.ignite.configuration.validation.OneOf;
-
-/**
- * Configuration schema for deadlock prevention policy.
- */
-@Config
-public class DeadlockPreventionPolicyConfigurationSchema {
- @OneOf({"NATURAL", "REVERSED", "NONE"})
- @Value(hasDefault = true)
- public String txIdComparator = "NATURAL";
-
- @Value(hasDefault = true)
- public long waitTimeout = 0;
-}
diff --git
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/configuration/TransactionConfigurationSchema.java
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/configuration/TransactionConfigurationSchema.java
index 2b59eca8532..5debc79a987 100644
---
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/configuration/TransactionConfigurationSchema.java
+++
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/configuration/TransactionConfigurationSchema.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.tx.configuration;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.configuration.annotation.Config;
-import org.apache.ignite.configuration.annotation.ConfigValue;
import org.apache.ignite.configuration.annotation.Value;
import org.apache.ignite.configuration.validation.Range;
@@ -28,36 +27,13 @@ import org.apache.ignite.configuration.validation.Range;
*/
@Config
public class TransactionConfigurationSchema {
- /** How often abandoned transactions are searched for (milliseconds). */
- @Range(min = 0)
- @Value(hasDefault = true)
- public final long abandonedCheckTs = 5_000;
-
/** Default timeout for read-only transactions. */
@Range(min = 1)
@Value(hasDefault = true)
- public final long readOnlyTimeout = TimeUnit.MINUTES.toMillis(10);
+ public final long readOnlyTimeoutMillis = TimeUnit.MINUTES.toMillis(10);
/** Default timeout for read-write transactions. */
@Range(min = 1)
@Value(hasDefault = true)
- public final long readWriteTimeout = TimeUnit.SECONDS.toMillis(30);
-
- /** A transaction tries to take lock several times until it throws an
exception {@lonk org.apache.ignite.tx.TransactionException}. */
- @Range(min = 0)
- @Value(hasDefault = true)
- public final int attemptsObtainLock = 3;
-
- /** Transaction resource time to live (ms), the minimum lifetime of a
transaction state. */
- @Value(hasDefault = true)
- @Range(min = 0)
- public long txnResourceTtl = TimeUnit.SECONDS.toMillis(30);
-
- /** Transaction system remote call timeout. RPC timeout for operations
like cleanup and write intent resolution. */
- @Value(hasDefault = true)
- @Range(min = 1000)
- public long rpcTimeout = TimeUnit.SECONDS.toMillis(60);
-
- @ConfigValue
- public DeadlockPreventionPolicyConfigurationSchema
deadlockPreventionPolicy;
+ public final long readWriteTimeoutMillis = TimeUnit.SECONDS.toMillis(30);
}
diff --git
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/DeadlockPreventionPolicyImpl.java
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/DeadlockPreventionPolicyImpl.java
index 478f3841af5..1e017b1e7f5 100644
---
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/DeadlockPreventionPolicyImpl.java
+++
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/DeadlockPreventionPolicyImpl.java
@@ -17,8 +17,6 @@
package org.apache.ignite.internal.tx.impl;
-import static java.util.Objects.requireNonNull;
-
import java.util.Comparator;
import java.util.UUID;
import org.apache.ignite.internal.tx.DeadlockPreventionPolicy;
@@ -33,16 +31,6 @@ public class DeadlockPreventionPolicyImpl implements
DeadlockPreventionPolicy {
private final long waitTimeout;
- /**
- * Constructor.
- *
- * @param txIdComparator Comparator name.
- * @param waitTimeout Wait timeout.
- */
- public DeadlockPreventionPolicyImpl(String txIdComparator, long
waitTimeout) {
- this(TxIdComparators.valueOf(requireNonNull(txIdComparator)),
waitTimeout);
- }
-
/**
* Constructor.
*
diff --git
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/OrphanDetector.java
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/OrphanDetector.java
index 995e8f6daea..d785d62f975 100644
---
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/OrphanDetector.java
+++
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/OrphanDetector.java
@@ -32,8 +32,7 @@ import java.util.ArrayList;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
-import org.apache.ignite.configuration.ConfigurationValue;
-import org.apache.ignite.configuration.notifications.ConfigurationListener;
+import java.util.function.Supplier;
import org.apache.ignite.internal.event.EventListener;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -88,19 +87,7 @@ public class OrphanDetector {
/** The executor is used to send a transaction resolution message to the
commit partition for an orphan transaction. */
private final Executor partitionOperationsExecutor;
- /**
- * The time interval in milliseconds in which the orphan resolution sends
the recovery message again, in case the transaction is still
- * not finalized.
- */
- private long checkTxStateInterval;
-
- private final ConfigurationListener<Long> checkTxStateIntervalListener =
ctx -> {
- this.checkTxStateInterval = ctx.newValue();
-
- return nullCompletedFuture();
- };
-
- private volatile @Nullable ConfigurationValue<Long>
checkTxStateIntervalProvider;
+ private volatile Supplier<Long> checkTxStateIntervalProvider;
/** Local transaction state storage. */
private VolatileTxStateMetaStorage txLocalStateStorage;
@@ -134,12 +121,9 @@ public class OrphanDetector {
* @param txLocalStateStorage Local transaction state storage.
* @param checkTxStateIntervalProvider Global provider of configuration
check state interval.
*/
- public void start(VolatileTxStateMetaStorage txLocalStateStorage,
ConfigurationValue<Long> checkTxStateIntervalProvider) {
+ public void start(VolatileTxStateMetaStorage txLocalStateStorage,
Supplier<Long> checkTxStateIntervalProvider) {
this.txLocalStateStorage = txLocalStateStorage;
this.checkTxStateIntervalProvider = checkTxStateIntervalProvider;
- this.checkTxStateInterval = checkTxStateIntervalProvider.value();
-
- checkTxStateIntervalProvider.listen(checkTxStateIntervalListener);
lockManager.listen(LockEvent.LOCK_CONFLICT, lockConflictListener);
}
@@ -151,11 +135,6 @@ public class OrphanDetector {
busyLock.block();
lockManager.removeListener(LockEvent.LOCK_CONFLICT,
lockConflictListener);
-
- ConfigurationValue<Long> localCheckTxStateIntervalProvider =
checkTxStateIntervalProvider;
- if (localCheckTxStateIntervalProvider != null) {
-
localCheckTxStateIntervalProvider.stopListen(checkTxStateIntervalListener);
- }
}
/**
@@ -295,7 +274,7 @@ public class OrphanDetector {
}
/**
- * Checks whether the transaction state is marked as abandoned recently
(less than {@link #checkTxStateInterval} millis ago).
+ * Checks whether the transaction state is marked as abandoned recently
(less than {@link #checkTxStateIntervalProvider} millis ago).
*
* @param txState Transaction state metadata.
* @return True if the state recently updated to {@link
org.apache.ignite.internal.tx.TxState#ABANDONED}.
@@ -309,6 +288,6 @@ public class OrphanDetector {
var txStateAbandoned = (TxStateMetaAbandoned) txState;
- return txStateAbandoned.lastAbandonedMarkerTs() + checkTxStateInterval
>= coarseCurrentTimeMillis();
+ return txStateAbandoned.lastAbandonedMarkerTs() +
checkTxStateIntervalProvider.get() >= coarseCurrentTimeMillis();
}
}
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 31db814c20b..72b2db6995f 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
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.tx.impl;
+import static java.lang.Math.toIntExact;
import static java.util.concurrent.CompletableFuture.allOf;
import static java.util.concurrent.CompletableFuture.failedFuture;
import static java.util.concurrent.CompletableFuture.runAsync;
@@ -62,6 +63,8 @@ import java.util.concurrent.atomic.LongAdder;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.LongSupplier;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
+import org.apache.ignite.internal.configuration.SystemPropertyView;
import org.apache.ignite.internal.event.EventListener;
import org.apache.ignite.internal.failure.FailureContext;
import org.apache.ignite.internal.failure.FailureManager;
@@ -111,6 +114,7 @@ import org.apache.ignite.internal.tx.TxState;
import org.apache.ignite.internal.tx.TxStateMeta;
import org.apache.ignite.internal.tx.TxStateMetaFinishing;
import org.apache.ignite.internal.tx.configuration.TransactionConfiguration;
+import
org.apache.ignite.internal.tx.impl.DeadlockPreventionPolicyImpl.TxIdComparators;
import
org.apache.ignite.internal.tx.impl.TransactionInflights.ReadWriteTxContext;
import org.apache.ignite.internal.tx.message.WriteIntentSwitchReplicatedInfo;
import org.apache.ignite.internal.tx.views.LocksViewProvider;
@@ -128,8 +132,24 @@ import org.jetbrains.annotations.TestOnly;
* <p>Uses 2PC for atomic commitment and 2PL for concurrency control.
*/
public class TxManagerImpl implements TxManager, NetworkMessageHandler,
SystemViewProvider {
- /** Expirarion trigger frequency. */
- public static final long EXPIRE_FREQ_MILLIS = 1000;
+ private static final String ABANDONED_CHECK_TS_PROP =
"txnAbandonedCheckTs";
+
+ private static final long ABANDONED_CHECK_TS_PROP_DEFAULT_VALUE = 5_000;
+
+ private static final String LOCK_RETRY_COUNT_PROP = "txnLockRetryCount";
+
+ private static final int LOCK_RETRY_COUNT_PROP_DEFAULT_VALUE = 3;
+
+ private static final String RESOURCE_TTL_PROP = "txnResourceTtl";
+
+ private static final int RESOURCE_TTL_PROP_DEFAULT_VALUE = 30 * 1000;
+
+ private static final TxIdComparators DEFAULT_TX_ID_COMPARATOR =
TxIdComparators.NATURAL;
+
+ private static final long DEFAULT_LOCK_TIMEOUT = 0;
+
+ /** Expiration trigger frequency. */
+ private static final long EXPIRE_FREQ_MILLIS = 1000;
/** The logger. */
private static final IgniteLogger LOG =
Loggers.forClass(TxManagerImpl.class);
@@ -137,6 +157,9 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
/** Transaction configuration. */
private final TransactionConfiguration txConfig;
+ /** Transaction configuration. */
+ private final SystemDistributedConfiguration systemCfg;
+
/** Lock manager. */
private final LockManager lockManager;
@@ -226,10 +249,13 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
private final boolean enabledColocation =
IgniteSystemProperties.enabledColocation();
+ private volatile int lockRetryCount = 0;
+
/**
* Test-only constructor.
*
* @param txConfig Transaction configuration.
+ * @param systemCfg System configuration.
* @param clusterService Cluster service.
* @param replicaService Replica service.
* @param lockManager Lock manager.
@@ -245,6 +271,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
@TestOnly
public TxManagerImpl(
TransactionConfiguration txConfig,
+ SystemDistributedConfiguration systemCfg,
ClusterService clusterService,
ReplicaService replicaService,
LockManager lockManager,
@@ -261,6 +288,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
this(
clusterService.nodeName(),
txConfig,
+ systemCfg,
clusterService.messagingService(),
clusterService.topologyService(),
replicaService,
@@ -283,6 +311,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
* The constructor.
*
* @param txConfig Transaction configuration.
+ * @param systemCfg System configuration.
* @param messagingService Messaging service.
* @param topologyService Topology service.
* @param replicaService Replica service.
@@ -300,6 +329,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
public TxManagerImpl(
String nodeName,
TransactionConfiguration txConfig,
+ SystemDistributedConfiguration systemCfg,
MessagingService messagingService,
TopologyService topologyService,
ReplicaService replicaService,
@@ -317,6 +347,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
FailureProcessor failureProcessor
) {
this.txConfig = txConfig;
+ this.systemCfg = systemCfg;
this.lockManager = lockManager;
this.clockService = clockService;
this.transactionIdGenerator = transactionIdGenerator;
@@ -355,7 +386,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
partitionOperationsExecutor
);
- txMessageSender = new TxMessageSender(messagingService,
replicaService, clockService, txConfig);
+ txMessageSender = new TxMessageSender(messagingService,
replicaService, clockService);
var writeIntentSwitchProcessor = new
WriteIntentSwitchProcessor(placementDriverHelper, txMessageSender,
topologyService);
@@ -453,7 +484,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
UUID txId = transactionIdGenerator.transactionIdFor(beginTimestamp,
options.priority());
- long timeout = getTimeoutOrDefault(options,
txConfig.readWriteTimeout().value());
+ long timeout = getTimeoutOrDefault(options,
txConfig.readWriteTimeoutMillis().value());
var transaction = new ReadWriteTransactionImpl(this, timestampTracker,
txId, localNodeId, implicit, timeout);
@@ -503,7 +534,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
try {
CompletableFuture<Void> txFuture = new CompletableFuture<>();
- long timeout = getTimeoutOrDefault(options,
txConfig.readOnlyTimeout().value());
+ long timeout = getTimeoutOrDefault(options,
txConfig.readOnlyTimeoutMillis().value());
var transaction = new ReadOnlyTransactionImpl(
this, timestampTracker, txId, localNodeId, implicit,
timeout, readTimestamp, txFuture
@@ -891,7 +922,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
assert commitPartId.tableId() > 0 && commitPartId.partitionId() >= 0 :
"Illegal condition for direct mapping: " + commitPartId;
// Switch to default timeout if needed.
- timeout = timeout == USE_CONFIGURED_TIMEOUT_DEFAULT ?
txConfig.readWriteTimeout().value() : timeout;
+ timeout = timeout == USE_CONFIGURED_TIMEOUT_DEFAULT ?
txConfig.readWriteTimeoutMillis().value() : timeout;
// Adjust the timeout so local expiration happens after coordinator
expiration.
var tx = new RemoteReadWriteTransaction(txId, commitPartId, coord,
token, topologyService.localMember(),
@@ -931,10 +962,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
@Override
public CompletableFuture<Void> startAsync(ComponentContext
componentContext) {
return inBusyLockAsync(busyLock, () -> {
- var deadlockPreventionPolicy = new DeadlockPreventionPolicyImpl(
-
txConfig.deadlockPreventionPolicy().txIdComparator().value(),
- txConfig.deadlockPreventionPolicy().waitTimeout().value()
- );
+ var deadlockPreventionPolicy = new
DeadlockPreventionPolicyImpl(DEFAULT_TX_ID_COMPARATOR, DEFAULT_LOCK_TIMEOUT);
// TODO https://issues.apache.org/jira/browse/IGNITE-23539
lockManager.start(deadlockPreventionPolicy);
@@ -955,7 +983,8 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
txViewProvider.init(localNodeId,
txStateVolatileStorage.statesMap());
- orphanDetector.start(txStateVolatileStorage,
txConfig.abandonedCheckTs());
+ orphanDetector.start(txStateVolatileStorage,
+ () -> longProperty(systemCfg, ABANDONED_CHECK_TS_PROP,
ABANDONED_CHECK_TS_PROP_DEFAULT_VALUE));
txCleanupRequestSender.start();
@@ -968,6 +997,8 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
transactionExpirationJobFuture =
commonScheduler.scheduleAtFixedRate(this::expireTransactionsUpToNow,
EXPIRE_FREQ_MILLIS, EXPIRE_FREQ_MILLIS, MILLISECONDS);
+ lockRetryCount = toIntExact(longProperty(systemCfg,
LOCK_RETRY_COUNT_PROP, LOCK_RETRY_COUNT_PROP_DEFAULT_VALUE));
+
return nullCompletedFuture();
});
}
@@ -1065,7 +1096,7 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
return txStateVolatileStorage.vacuum(
vacuumObservationTimestamp,
- txConfig.txnResourceTtl().value(),
+ longProperty(systemCfg, RESOURCE_TTL_PROP,
RESOURCE_TTL_PROP_DEFAULT_VALUE),
persistentTxStateVacuumizer::vacuumPersistentTxStates);
}
@@ -1085,6 +1116,11 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
return falseCompletedFuture();
}
+ @Override
+ public int lockRetryCount() {
+ return lockRetryCount;
+ }
+
@Override
public CompletableFuture<Void> executeWriteIntentSwitchAsync(Runnable
runnable) {
return runAsync(runnable, writeIntentSwitchPool);
@@ -1225,4 +1261,10 @@ public class TxManagerImpl implements TxManager,
NetworkMessageHandler, SystemVi
return null;
});
}
+
+ private static long longProperty(SystemDistributedConfiguration
systemProperties, String name, long defaultValue) {
+ SystemPropertyView property =
systemProperties.properties().value().get(name);
+
+ return property == null ? defaultValue :
Long.parseLong(property.propertyValue());
+ }
}
diff --git
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxMessageSender.java
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxMessageSender.java
index 49968b68e88..4cf305d66a9 100644
---
a/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxMessageSender.java
+++
b/modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxMessageSender.java
@@ -38,7 +38,6 @@ import
org.apache.ignite.internal.replicator.message.ReplicationGroupIdMessage;
import org.apache.ignite.internal.tx.PartitionEnlistment;
import org.apache.ignite.internal.tx.TransactionMeta;
import org.apache.ignite.internal.tx.TransactionResult;
-import org.apache.ignite.internal.tx.configuration.TransactionConfiguration;
import org.apache.ignite.internal.tx.message.EnlistedPartitionGroupMessage;
import org.apache.ignite.internal.tx.message.PartitionEnlistmentMessage;
import org.apache.ignite.internal.tx.message.TxMessagesFactory;
@@ -49,6 +48,8 @@ import org.jetbrains.annotations.Nullable;
* This class is responsible for interacting with the messaging layer. Sends
transaction messages.
*/
public class TxMessageSender {
+ private static final int RPC_TIMEOUT_MILLIS = 60 * 1000;
+
/** Tx messages factory. */
private static final TxMessagesFactory TX_MESSAGES_FACTORY = new
TxMessagesFactory();
@@ -63,26 +64,21 @@ public class TxMessageSender {
private final ClockService clockService;
- private final TransactionConfiguration transactionConfiguration;
-
/**
* Constructor.
*
* @param messagingService Messaging service.
* @param replicaService Replica service.
* @param clockService Clock service.
- * @param transactionConfiguration Transaction configuration.
*/
public TxMessageSender(
MessagingService messagingService,
ReplicaService replicaService,
- ClockService clockService,
- TransactionConfiguration transactionConfiguration
+ ClockService clockService
) {
this.messagingService = messagingService;
this.replicaService = replicaService;
this.clockService = clockService;
- this.transactionConfiguration = transactionConfiguration;
}
/**
@@ -141,7 +137,7 @@ public class TxMessageSender {
.timestamp(clockService.now())
.groups(toPartitionMessages(enlistedPartitionGroups))
.build(),
- transactionConfiguration.rpcTimeout().value());
+ RPC_TIMEOUT_MILLIS);
}
/**
@@ -226,7 +222,7 @@ public class TxMessageSender {
.readTimestamp(timestamp)
.txId(txId)
.build(),
- transactionConfiguration.rpcTimeout().value())
+ RPC_TIMEOUT_MILLIS)
.thenApply(resp -> {
assert resp instanceof TxStateResponse : "Unsupported
response type [type=" + resp.getClass().getSimpleName() + ']';
diff --git
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/DeadlockPreventionPolicyConfigurationTest.java
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/DeadlockPreventionPolicyConfigurationTest.java
deleted file mode 100644
index 62710cfa3f3..00000000000
---
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/DeadlockPreventionPolicyConfigurationTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.tx;
-
-import static
org.apache.ignite.internal.tx.impl.DeadlockPreventionPolicyImpl.TxIdComparators.NATURAL;
-import static
org.apache.ignite.internal.tx.impl.DeadlockPreventionPolicyImpl.TxIdComparators.NONE;
-import static
org.apache.ignite.internal.tx.impl.DeadlockPreventionPolicyImpl.TxIdComparators.REVERSED;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
-import java.util.Comparator;
-import java.util.UUID;
-import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
-import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
-import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
-import org.apache.ignite.internal.tx.configuration.TransactionConfiguration;
-import org.apache.ignite.internal.tx.impl.DeadlockPreventionPolicyImpl;
-import
org.apache.ignite.internal.tx.impl.DeadlockPreventionPolicyImpl.TxIdComparators;
-import org.apache.ignite.internal.tx.impl.TxIdPriorityComparator;
-import org.jetbrains.annotations.Nullable;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
-
-/**
- * Tests for {@link
org.apache.ignite.internal.tx.configuration.DeadlockPreventionPolicyConfigurationSchema}.
- */
-@ExtendWith(ConfigurationExtension.class)
-public class DeadlockPreventionPolicyConfigurationTest extends
BaseIgniteAbstractTest {
- @InjectConfiguration
- private TransactionConfiguration transactionConfigurationDefault;
-
- @InjectConfiguration("mock: { deadlockPreventionPolicy: { waitTimeout:
1000, txIdComparator: NATURAL } }")
- private TransactionConfiguration transactionConfigurationMockedNatural;
-
- @InjectConfiguration("mock: { deadlockPreventionPolicy: { waitTimeout:
100, txIdComparator: REVERSED } }")
- private TransactionConfiguration transactionConfigurationMockedReversed;
-
- @InjectConfiguration("mock: { deadlockPreventionPolicy: { waitTimeout: 0,
txIdComparator: NONE } }")
- private TransactionConfiguration transactionConfigurationMockedNone;
-
- @Test
- public void checkDefaults() {
- assertEquals(0,
transactionConfigurationDefault.deadlockPreventionPolicy().waitTimeout().value());
- assertEquals(NATURAL.toString(),
-
transactionConfigurationDefault.deadlockPreventionPolicy().txIdComparator().value());
-
- assertPolicyIsCorrect(createPolicy(transactionConfigurationDefault),
transactionConfigurationDefault);
- }
-
- @Test
- public void checkMockedNatural() {
- assertEquals(1000,
transactionConfigurationMockedNatural.deadlockPreventionPolicy().waitTimeout().value());
- assertEquals(NATURAL.toString(),
-
transactionConfigurationMockedNatural.deadlockPreventionPolicy().txIdComparator().value());
-
-
assertPolicyIsCorrect(createPolicy(transactionConfigurationMockedNatural),
transactionConfigurationMockedNatural);
- }
-
- @Test
- public void checkMockedReversed() {
- assertEquals(100,
transactionConfigurationMockedReversed.deadlockPreventionPolicy().waitTimeout().value());
- assertEquals(REVERSED.toString(),
-
transactionConfigurationMockedReversed.deadlockPreventionPolicy().txIdComparator().value());
-
-
assertPolicyIsCorrect(createPolicy(transactionConfigurationMockedReversed),
transactionConfigurationMockedReversed);
- }
-
- @Test
- public void checkMockedNone() {
- assertEquals(0,
transactionConfigurationMockedNone.deadlockPreventionPolicy().waitTimeout().value());
- assertEquals(NONE.toString(),
-
transactionConfigurationMockedNone.deadlockPreventionPolicy().txIdComparator().value());
-
-
assertPolicyIsCorrect(createPolicy(transactionConfigurationMockedNone),
transactionConfigurationMockedNone);
- }
-
- private void assertPolicyIsCorrect(DeadlockPreventionPolicy policy,
TransactionConfiguration cfg) {
- assertEquals(cfg.deadlockPreventionPolicy().waitTimeout().value(),
policy.waitTimeout());
- assertComparatorIsCorrect(policy.txIdComparator(),
cfg.deadlockPreventionPolicy().txIdComparator().value());
- }
-
- private DeadlockPreventionPolicy createPolicy(TransactionConfiguration
cfg) {
- return new DeadlockPreventionPolicyImpl(
- cfg.deadlockPreventionPolicy().txIdComparator().value(),
- cfg.deadlockPreventionPolicy().waitTimeout().value()
- );
- }
-
- private void assertComparatorIsCorrect(@Nullable Comparator<UUID>
actualComparator, String configured) {
- TxIdComparators configuredEnum = TxIdComparators.valueOf(configured);
-
- if (actualComparator == null) {
- assertEquals(NONE, configuredEnum);
- return;
- }
-
- TxIdPriorityComparator naturalComparator = new
TxIdPriorityComparator();
-
- UUID uuid1 = UUID.randomUUID();
- UUID uuid2;
-
- do {
- uuid2 = UUID.randomUUID();
- } while (naturalComparator.compare(uuid1, uuid2) == 0);
-
- UUID greater = naturalComparator.compare(uuid1, uuid2) > 0 ? uuid1 :
uuid2;
- UUID lesser = naturalComparator.compare(uuid1, uuid2) > 0 ? uuid2 :
uuid1;
-
- int cmp = actualComparator.compare(greater, lesser);
- if (cmp > 0) {
- assertEquals(NATURAL, configuredEnum);
- } else {
- assertEquals(REVERSED, configuredEnum);
- }
- }
-}
diff --git
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxCleanupTest.java
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxCleanupTest.java
index 7ceb1b34853..c5ac123bcc3 100644
---
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxCleanupTest.java
+++
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxCleanupTest.java
@@ -122,8 +122,7 @@ public class TxCleanupTest extends IgniteAbstractTest {
new TxMessageSender(
messagingService,
replicaService,
- clockService,
- transactionConfiguration
+ clockService
)
);
diff --git
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxManagerTest.java
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxManagerTest.java
index a0fb8182dbf..e8f1730499c 100644
---
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxManagerTest.java
+++
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/TxManagerTest.java
@@ -63,6 +63,7 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.function.LongSupplier;
import java.util.stream.Stream;
+import org.apache.ignite.internal.configuration.SystemDistributedConfiguration;
import org.apache.ignite.internal.configuration.SystemLocalConfiguration;
import
org.apache.ignite.internal.configuration.testframework.ConfigurationExtension;
import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
@@ -150,6 +151,9 @@ public class TxManagerTest extends IgniteAbstractTest {
@InjectConfiguration
private SystemLocalConfiguration systemLocalConfiguration;
+ @InjectConfiguration
+ private SystemDistributedConfiguration systemDistributedConfiguration;
+
@InjectExecutorService
private ScheduledExecutorService commonScheduler;
@@ -175,6 +179,7 @@ public class TxManagerTest extends IgniteAbstractTest {
txManager = new TxManagerImpl(
txConfiguration,
+ systemDistributedConfiguration,
clusterService,
replicaService,
lockManager(),
diff --git
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/impl/OrphanDetectorTest.java
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/impl/OrphanDetectorTest.java
index 2b93e512206..ed96b090edc 100644
---
a/modules/transactions/src/test/java/org/apache/ignite/internal/tx/impl/OrphanDetectorTest.java
+++
b/modules/transactions/src/test/java/org/apache/ignite/internal/tx/impl/OrphanDetectorTest.java
@@ -73,7 +73,6 @@ import org.mockito.junit.jupiter.MockitoExtension;
*/
@ExtendWith({MockitoExtension.class, ConfigurationExtension.class})
public class OrphanDetectorTest extends BaseIgniteAbstractTest {
-
private static final ClusterNode LOCAL_NODE =
new ClusterNodeImpl(randomUUID(), "local", new
NetworkAddress("127.0.0.1", 2024), null);
@@ -135,7 +134,7 @@ public class OrphanDetectorTest extends
BaseIgniteAbstractTest {
txStateMetaStorage.start();
- orphanDetector.start(txStateMetaStorage,
txConfiguration.abandonedCheckTs());
+ orphanDetector.start(txStateMetaStorage, () -> 30_000L);
}
@AfterEach