This is an automated email from the ASF dual-hosted git repository.
vpyatkov 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 9d0fac024f IGNITE-23081 Add lease expiration time to configuration
(#4376)
9d0fac024f is described below
commit 9d0fac024f84a909a85421138112560470083f15
Author: Cyrill <[email protected]>
AuthorDate: Tue Sep 17 12:30:43 2024 +0300
IGNITE-23081 Add lease expiration time to configuration (#4376)
---
modules/placement-driver/build.gradle | 1 +
.../internal/placementdriver/ActiveActorTest.java | 8 +++-
.../MultiActorPlacementDriverTest.java | 7 +++-
.../PlacementDriverManagerTest.java | 20 ++++++++--
.../internal/placementdriver/LeaseUpdater.java | 45 ++++++++++++++--------
.../placementdriver/PlacementDriverManager.java | 7 +++-
.../placementdriver/LeaseNegotiationTest.java | 11 +++++-
.../internal/placementdriver/LeaseUpdaterTest.java | 12 +++++-
.../ReplicationConfigurationSchema.java | 10 +++++
.../runner/app/ItIgniteNodeRestartTest.java | 4 +-
.../org/apache/ignite/internal/app/IgniteImpl.java | 9 +++--
11 files changed, 102 insertions(+), 32 deletions(-)
diff --git a/modules/placement-driver/build.gradle
b/modules/placement-driver/build.gradle
index 628ffd0b43..9a8d25ee3d 100644
--- a/modules/placement-driver/build.gradle
+++ b/modules/placement-driver/build.gradle
@@ -75,6 +75,7 @@ dependencies {
testImplementation(testFixtures(project(':ignite-core')))
testImplementation(testFixtures(project(':ignite-metastorage')))
testImplementation(testFixtures(project(':ignite-vault')))
+ testImplementation(testFixtures(project(':ignite-configuration')))
testImplementation libs.hamcrest.core
testImplementation libs.mockito.core
testImplementation libs.mockito.junit
diff --git
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/ActiveActorTest.java
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/ActiveActorTest.java
index b459141ec5..670ef7292a 100644
---
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/ActiveActorTest.java
+++
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/ActiveActorTest.java
@@ -35,6 +35,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologyService;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.HybridClockImpl;
import org.apache.ignite.internal.hlc.TestClockService;
import org.apache.ignite.internal.lang.NodeStoppingException;
@@ -48,6 +49,7 @@ import org.apache.ignite.internal.raft.Peer;
import org.apache.ignite.internal.raft.PeersAndLearners;
import
org.apache.ignite.internal.raft.client.AbstractTopologyAwareGroupServiceTest;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.util.Cursor;
import org.apache.ignite.raft.jraft.rpc.impl.RaftGroupEventsClientListener;
import org.junit.jupiter.api.AfterEach;
@@ -69,6 +71,9 @@ public class ActiveActorTest extends
AbstractTopologyAwareGroupServiceTest {
@Mock
MetaStorageManager msm;
+ @InjectConfiguration
+ private ReplicationConfiguration replicationConfiguration;
+
@BeforeEach
public void setUp() {
when(msm.recoveryFinishedFuture()).thenReturn(completedFuture(0L));
@@ -133,7 +138,8 @@ public class ActiveActorTest extends
AbstractTopologyAwareGroupServiceTest {
logicalTopologyService,
mockRaftMgr,
raftGroupServiceFactory,
- new TestClockService(new HybridClockImpl())
+ new TestClockService(new HybridClockImpl()),
+ replicationConfiguration
);
assertThat(placementDriverManager.startAsync(new ComponentContext()),
willCompleteSuccessfully());
diff --git
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
index bbc108be2f..0c86e29dee 100644
---
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
+++
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/MultiActorPlacementDriverTest.java
@@ -80,6 +80,7 @@ import
org.apache.ignite.internal.raft.service.RaftGroupService;
import org.apache.ignite.internal.raft.storage.LogStorageFactory;
import org.apache.ignite.internal.raft.util.SharedLogStorageFactoryUtils;
import org.apache.ignite.internal.replicator.TablePartitionId;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.network.NetworkAddress;
import org.apache.ignite.raft.jraft.rpc.impl.RaftGroupEventsClientListener;
@@ -104,6 +105,9 @@ public class MultiActorPlacementDriverTest extends
BasePlacementDriverTest {
@InjectConfiguration
private MetaStorageConfiguration metaStorageConfiguration;
+ @InjectConfiguration
+ private ReplicationConfiguration replicationConfiguration;
+
private List<String> placementDriverNodeNames;
private List<String> nodeNames;
@@ -305,7 +309,8 @@ public class MultiActorPlacementDriverTest extends
BasePlacementDriverTest {
logicalTopologyService,
raftManager,
topologyAwareRaftGroupServiceFactory,
- clockService
+ clockService,
+ replicationConfiguration
);
res.add(new Node(
diff --git
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
index 3db614775a..aeadfb8bca 100644
---
a/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
+++
b/modules/placement-driver/src/integrationTest/java/org/apache/ignite/internal/placementdriver/PlacementDriverManagerTest.java
@@ -95,7 +95,7 @@ import
org.apache.ignite.internal.raft.configuration.RaftConfiguration;
import org.apache.ignite.internal.raft.storage.LogStorageFactory;
import org.apache.ignite.internal.raft.util.SharedLogStorageFactoryUtils;
import org.apache.ignite.internal.replicator.TablePartitionId;
-import org.apache.ignite.internal.testframework.WithSystemProperty;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.network.ClusterNode;
import org.apache.ignite.network.NetworkAddress;
import org.apache.ignite.raft.jraft.rpc.impl.RaftGroupEventsClientListener;
@@ -140,6 +140,9 @@ public class PlacementDriverManagerTest extends
BasePlacementDriverTest {
@InjectConfiguration
private MetaStorageConfiguration metaStorageConfiguration;
+ @InjectConfiguration
+ private ReplicationConfiguration replicationConfiguration;
+
private MetaStorageManagerImpl metaStorageManager;
private PlacementDriverManager placementDriverManager;
@@ -241,7 +244,8 @@ public class PlacementDriverManagerTest extends
BasePlacementDriverTest {
logicalTopologyService,
raftManager,
topologyAwareRaftGroupServiceFactory,
- clockService
+ clockService,
+ replicationConfiguration
);
ComponentContext componentContext = new ComponentContext();
@@ -322,8 +326,12 @@ public class PlacementDriverManagerTest extends
BasePlacementDriverTest {
}
@Test
- @WithSystemProperty(key = "IGNITE_LONG_LEASE", value = "200")
public void testLeaseRenew() throws Exception {
+ assertThat(
+ replicationConfiguration.change(change ->
change.changeLeaseAgreementAcceptanceTimeLimit(200)),
+ willCompleteSuccessfully()
+ );
+
TablePartitionId grpPart0 = createTableAssignment();
checkLeaseCreated(grpPart0, false);
@@ -345,8 +353,12 @@ public class PlacementDriverManagerTest extends
BasePlacementDriverTest {
}
@Test
- @WithSystemProperty(key = "IGNITE_LONG_LEASE", value = "200")
public void testLeaseholderUpdate() throws Exception {
+ assertThat(
+ replicationConfiguration.change(change ->
change.changeLeaseAgreementAcceptanceTimeLimit(200)),
+ willCompleteSuccessfully()
+ );
+
TablePartitionId grpPart0 = createTableAssignment();
checkLeaseCreated(grpPart0, false);
diff --git
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
index b26c149f48..32adc27615 100644
---
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
+++
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/LeaseUpdater.java
@@ -65,6 +65,7 @@ import
org.apache.ignite.internal.placementdriver.message.StopLeaseProlongationM
import org.apache.ignite.internal.placementdriver.negotiation.LeaseAgreement;
import org.apache.ignite.internal.placementdriver.negotiation.LeaseNegotiator;
import org.apache.ignite.internal.replicator.ReplicationGroupId;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.thread.IgniteThread;
import org.apache.ignite.internal.tostring.IgniteToStringInclude;
import org.apache.ignite.internal.tostring.S;
@@ -89,17 +90,11 @@ public class LeaseUpdater {
/** Update attempts interval in milliseconds. */
private static final long UPDATE_LEASE_MS = 500L;
- /** Lease holding interval. */
- private static final long LEASE_INTERVAL = 10 * UPDATE_LEASE_MS;
-
/** The lock is available when the actor is changing state. */
private final IgniteSpinBusyLock stateChangingLock = new
IgniteSpinBusyLock();
private final AtomicBoolean active = new AtomicBoolean();
- /** The interval in milliseconds that is used in the beginning of lease
granting process. */
- private final long longLeaseInterval;
-
/** Cluster service. */
private final ClusterService clusterService;
@@ -112,6 +107,8 @@ public class LeaseUpdater {
/** Topology tracker. */
private final TopologyTracker topologyTracker;
+ private final ReplicationConfiguration replicationConfiguration;
+
/** Lease tracker. */
private final LeaseTracker leaseTracker;
@@ -139,6 +136,7 @@ public class LeaseUpdater {
* @param leaseTracker Lease tracker.
* @param clockService Clock service.
* @param assignmentsTracker Assignments tracker.
+ * @param replicationConfiguration Replication configuration.
*/
LeaseUpdater(
String nodeName,
@@ -147,15 +145,16 @@ public class LeaseUpdater {
LogicalTopologyService topologyService,
LeaseTracker leaseTracker,
ClockService clockService,
- AssignmentsTracker assignmentsTracker
+ AssignmentsTracker assignmentsTracker,
+ ReplicationConfiguration replicationConfiguration
) {
this.nodeName = nodeName;
this.clusterService = clusterService;
this.msManager = msManager;
this.leaseTracker = leaseTracker;
this.clockService = clockService;
+ this.replicationConfiguration = replicationConfiguration;
- this.longLeaseInterval =
IgniteSystemProperties.getLong("IGNITE_LONG_LEASE", 120_000);
this.assignmentsTracker = assignmentsTracker;
this.topologyTracker = new TopologyTracker(topologyService);
this.updater = new Updater();
@@ -370,7 +369,9 @@ public class LeaseUpdater {
leaseUpdateStatistics = new LeaseStats();
- long outdatedLeaseThreshold = now.getPhysical() + LEASE_INTERVAL /
2;
+ long leaseExpirationInterval =
replicationConfiguration.leaseExpirationInterval().value();
+
+ long outdatedLeaseThreshold = now.getPhysical() +
leaseExpirationInterval / 2;
Leases leasesCurrent = leaseTracker.leasesCurrent();
Map<ReplicationGroupId, Boolean> toBeNegotiated = new HashMap<>();
@@ -412,7 +413,7 @@ public class LeaseUpdater {
: format("Can't publish the lease that was not
negotiated [groupId={}, startTime={}, "
+ "agreementLeaseStartTime={}].", grpId,
lease.getStartTime(), agreement.getLease().getStartTime());
- publishLease(grpId, negotiatedLease, renewedLeases);
+ publishLease(grpId, negotiatedLease, renewedLeases,
leaseExpirationInterval);
continue;
} else if (!lease.isProlongable() ||
agreement.isDeclined()) {
@@ -450,7 +451,7 @@ public class LeaseUpdater {
toBeNegotiated.put(grpId, force);
} else if (lease.isProlongable() &&
candidate.id().equals(lease.getLeaseholderId())) {
// Old lease is renewed.
- prolongLease(grpId, lease, renewedLeases);
+ prolongLease(grpId, lease, renewedLeases,
leaseExpirationInterval);
}
}
}
@@ -565,7 +566,9 @@ public class LeaseUpdater {
) {
HybridTimestamp startTs = clockService.now();
- var expirationTs = new HybridTimestamp(startTs.getPhysical() +
longLeaseInterval, 0);
+ long interval =
replicationConfiguration.leaseAgreementAcceptanceTimeLimit().value();
+
+ var expirationTs = new HybridTimestamp(startTs.getPhysical() +
interval, 0);
Lease renewedLease = new Lease(candidate.name(), candidate.id(),
startTs, expirationTs, grpId);
@@ -583,8 +586,13 @@ public class LeaseUpdater {
* @param grpId Replication group id.
* @param lease Lease to prolong.
*/
- private void prolongLease(ReplicationGroupId grpId, Lease lease,
Map<ReplicationGroupId, Lease> renewedLeases) {
- var newTs = new HybridTimestamp(clockService.now().getPhysical() +
LEASE_INTERVAL, 0);
+ private void prolongLease(
+ ReplicationGroupId grpId,
+ Lease lease,
+ Map<ReplicationGroupId, Lease> renewedLeases,
+ long leaseExpirationInterval
+ ) {
+ var newTs = new HybridTimestamp(clockService.now().getPhysical() +
leaseExpirationInterval, 0);
Lease renewedLease = lease.prolongLease(newTs);
@@ -600,8 +608,13 @@ public class LeaseUpdater {
* @param grpId Replication group id.
* @param lease Lease to accept.
*/
- private void publishLease(ReplicationGroupId grpId, Lease lease,
Map<ReplicationGroupId, Lease> renewedLeases) {
- var newTs = new HybridTimestamp(clockService.now().getPhysical() +
LEASE_INTERVAL, 0);
+ private void publishLease(
+ ReplicationGroupId grpId,
+ Lease lease,
+ Map<ReplicationGroupId, Lease> renewedLeases,
+ long leaseExpirationInterval
+ ) {
+ var newTs = new HybridTimestamp(clockService.now().getPhysical() +
leaseExpirationInterval, 0);
Lease renewedLease = lease.acceptLease(newTs);
diff --git
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriverManager.java
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriverManager.java
index c13658a542..470a6dd31a 100644
---
a/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriverManager.java
+++
b/modules/placement-driver/src/main/java/org/apache/ignite/internal/placementdriver/PlacementDriverManager.java
@@ -49,6 +49,7 @@ import org.apache.ignite.internal.raft.RaftManager;
import org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupService;
import
org.apache.ignite.internal.raft.client.TopologyAwareRaftGroupServiceFactory;
import org.apache.ignite.internal.replicator.ReplicationGroupId;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.util.IgniteSpinBusyLock;
import org.apache.ignite.network.ClusterNode;
import org.jetbrains.annotations.TestOnly;
@@ -122,7 +123,8 @@ public class PlacementDriverManager implements
IgniteComponent {
LogicalTopologyService logicalTopologyService,
RaftManager raftManager,
TopologyAwareRaftGroupServiceFactory
topologyAwareRaftGroupServiceFactory,
- ClockService clockService
+ ClockService clockService,
+ ReplicationConfiguration replicationConfiguration
) {
this.replicationGroupId = replicationGroupId;
this.clusterService = clusterService;
@@ -144,7 +146,8 @@ public class PlacementDriverManager implements
IgniteComponent {
logicalTopologyService,
leaseTracker,
clockService,
- assignmentsTracker
+ assignmentsTracker,
+ replicationConfiguration
);
this.placementDriver = createPlacementDriver();
diff --git
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
index c0b0a0cefc..85068ed761 100644
---
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
+++
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseNegotiationTest.java
@@ -45,6 +45,8 @@ import
org.apache.ignite.internal.cluster.management.topology.api.LogicalNode;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologyEventListener;
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.testframework.ConfigurationExtension;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.HybridClockImpl;
import org.apache.ignite.internal.hlc.HybridTimestamp;
import org.apache.ignite.internal.hlc.TestClockService;
@@ -62,15 +64,18 @@ import
org.apache.ignite.internal.placementdriver.message.LeaseGrantedMessage;
import
org.apache.ignite.internal.placementdriver.message.LeaseGrantedMessageResponse;
import
org.apache.ignite.internal.placementdriver.message.PlacementDriverMessagesFactory;
import org.apache.ignite.internal.replicator.TablePartitionId;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.network.NetworkAddress;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
/**
* Test checking exceptional situations on lease negotiation.
*/
+@ExtendWith({ConfigurationExtension.class})
public class LeaseNegotiationTest extends BaseIgniteAbstractTest {
private static final PlacementDriverMessagesFactory MSG_FACTORY = new
PlacementDriverMessagesFactory();
@@ -99,6 +104,9 @@ public class LeaseNegotiationTest extends
BaseIgniteAbstractTest {
private final long assignmentsTimestamp = new HybridTimestamp(0,
1).longValue();
+ @InjectConfiguration
+ private ReplicationConfiguration replicationConfiguration;
+
@BeforeEach
public void setUp() {
metaStorageManager = StandaloneMetaStorageManager.create();
@@ -162,7 +170,8 @@ public class LeaseNegotiationTest extends
BaseIgniteAbstractTest {
pdLogicalTopologyService,
leaseTracker,
new TestClockService(new HybridClockImpl()),
- new AssignmentsTracker(metaStorageManager)
+ new AssignmentsTracker(metaStorageManager),
+ replicationConfiguration
);
}
diff --git
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
index 25b79310b9..ae909ceaa1 100644
---
a/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
+++
b/modules/placement-driver/src/test/java/org/apache/ignite/internal/placementdriver/LeaseUpdaterTest.java
@@ -49,6 +49,8 @@ import org.apache.ignite.internal.affinity.Assignments;
import org.apache.ignite.internal.cluster.management.topology.api.LogicalNode;
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.testframework.ConfigurationExtension;
+import
org.apache.ignite.internal.configuration.testframework.InjectConfiguration;
import org.apache.ignite.internal.hlc.HybridClockImpl;
import org.apache.ignite.internal.hlc.HybridTimestamp;
import org.apache.ignite.internal.hlc.TestClockService;
@@ -67,6 +69,7 @@ import
org.apache.ignite.internal.placementdriver.leases.LeaseTracker;
import org.apache.ignite.internal.placementdriver.leases.Leases;
import org.apache.ignite.internal.replicator.ReplicationGroupId;
import org.apache.ignite.internal.replicator.TablePartitionId;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.util.Cursor;
@@ -83,7 +86,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
* TODO: IGNITE-20485 Configure the lease interval as less as possible to
decrease the duration of tests.
* The class contains unit tests for {@link LeaseUpdater}.
*/
-@ExtendWith({MockitoExtension.class})
+@ExtendWith({MockitoExtension.class, ConfigurationExtension.class})
public class LeaseUpdaterTest extends BaseIgniteAbstractTest {
/** Empty leases. */
private final Leases leases = new Leases(emptyMap(), BYTE_EMPTY_ARRAY);
@@ -99,6 +102,10 @@ public class LeaseUpdaterTest extends
BaseIgniteAbstractTest {
private LeaseTracker leaseTracker;
@Mock
private Cursor<Entry> mcEntriesCursor;
+
+ @InjectConfiguration
+ private ReplicationConfiguration replicationConfiguration;
+
/** Lease updater for tests. */
private LeaseUpdater leaseUpdater;
/** Closure to get a lease that is passed in Meta storage. */
@@ -144,7 +151,8 @@ public class LeaseUpdaterTest extends
BaseIgniteAbstractTest {
topologyService,
leaseTracker,
new TestClockService(new HybridClockImpl()),
- new AssignmentsTracker(metaStorageManager)
+ new AssignmentsTracker(metaStorageManager),
+ replicationConfiguration
);
leaseUpdater.init();
diff --git
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/configuration/ReplicationConfigurationSchema.java
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/configuration/ReplicationConfigurationSchema.java
index c47cfd6330..207d35af8b 100644
---
a/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/configuration/ReplicationConfigurationSchema.java
+++
b/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/configuration/ReplicationConfigurationSchema.java
@@ -40,4 +40,14 @@ public class ReplicationConfigurationSchema {
@Value(hasDefault = true)
@Range(min = 1000)
public long rpcTimeout = TimeUnit.SECONDS.toMillis(60);
+
+ /** The interval in milliseconds that is used in the beginning of lease
granting process. */
+ @Value(hasDefault = true)
+ @Range(min = 5000)
+ public long leaseAgreementAcceptanceTimeLimit = 120_000;
+
+ /** Lease holding interval. */
+ @Value(hasDefault = true)
+ @Range(min = 2000, max = 120000)
+ public long leaseExpirationInterval = 5_000;
}
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 984203f4c3..14c44d71d4 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
@@ -179,6 +179,7 @@ import org.apache.ignite.internal.replicator.ReplicaService;
import org.apache.ignite.internal.replicator.ReplicationGroupId;
import org.apache.ignite.internal.replicator.TablePartitionId;
import
org.apache.ignite.internal.replicator.configuration.ReplicationConfiguration;
+import
org.apache.ignite.internal.replicator.configuration.ReplicationExtensionConfiguration;
import org.apache.ignite.internal.schema.SchemaManager;
import org.apache.ignite.internal.schema.configuration.GcConfiguration;
import
org.apache.ignite.internal.schema.configuration.GcExtensionConfiguration;
@@ -550,7 +551,8 @@ public class ItIgniteNodeRestartTest extends
BaseIgniteRestartTest {
logicalTopologyService,
raftMgr,
topologyAwareRaftGroupServiceFactory,
- clockService
+ clockService,
+
clusterConfigRegistry.getConfiguration(ReplicationExtensionConfiguration.KEY).replication()
);
ScheduledExecutorService rebalanceScheduler = new
ScheduledThreadPoolExecutor(REBALANCE_SCHEDULER_POOL_SIZE,
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 12b150f31b..23b8da3dcc 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
@@ -722,6 +722,9 @@ public class IgniteImpl implements Ignite {
Consumer<LongFunction<CompletableFuture<?>>> registry = c ->
metaStorageMgr.registerRevisionUpdateListener(c::apply);
+ ReplicationConfiguration replicationConfig = clusterConfigRegistry
+
.getConfiguration(ReplicationExtensionConfiguration.KEY).replication();
+
placementDriverMgr = new PlacementDriverManager(
name,
metaStorageMgr,
@@ -731,12 +734,10 @@ public class IgniteImpl implements Ignite {
logicalTopologyService,
raftMgr,
topologyAwareRaftGroupServiceFactory,
- clockService
+ clockService,
+ replicationConfig
);
- ReplicationConfiguration replicationConfig = clusterConfigRegistry
-
.getConfiguration(ReplicationExtensionConfiguration.KEY).replication();
-
ReplicaService replicaSvc = new ReplicaService(
messagingServiceReturningToStorageOperationsPool,
clock,