This is an automated email from the ASF dual-hosted git repository. sergeychugunov 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 478f23c968 IGNITE-21098 Increase additional wait after DDL by MaxClockSkew (#2963) 478f23c968 is described below commit 478f23c96802ace471e0d2458c3181ca2c669d9d Author: Roman Puchkovskiy <roman.puchkovs...@gmail.com> AuthorDate: Tue Dec 19 12:42:28 2023 +0400 IGNITE-21098 Increase additional wait after DDL by MaxClockSkew (#2963) Signed-off-by: Sergey Chugunov <sergey.chugu...@gmail.com> --- .../internal/catalog/CatalogManagerImpl.java | 2 +- .../internal/catalog/CatalogManagerSelfTest.java | 33 ++++++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogManagerImpl.java b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogManagerImpl.java index 16f48998f0..6ce2103232 100644 --- a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogManagerImpl.java +++ b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogManagerImpl.java @@ -336,7 +336,7 @@ public class CatalogManagerImpl extends AbstractEventProducer<CatalogEvent, Cata .roundUpToPhysicalTick(); // TODO: this addition has to be removed when IGNITE-20378 is implemented. HybridTimestamp tsSafeForRoReadingInPastOptimization = clusterWideEnsuredActivationTs.addPhysicalTime( - partitionIdleSafeTimePropagationPeriodMsSupplier.getAsLong() + partitionIdleSafeTimePropagationPeriodMsSupplier.getAsLong() + HybridTimestamp.maxClockSkew() ); return clockWaiter.waitFor(tsSafeForRoReadingInPastOptimization); diff --git a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java index 1dadceb238..4221c076d3 100644 --- a/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java +++ b/modules/catalog/src/test/java/org/apache/ignite/internal/catalog/CatalogManagerSelfTest.java @@ -1444,6 +1444,39 @@ public class CatalogManagerSelfTest extends BaseCatalogManagerTest { } } + // TODO: remove after IGNITE-20378 is implemented. + @Test + public void userFutureCompletesAfterClusterWideActivationWithAdditionalIdleSafeTimePeriodHappens() throws Exception { + long delayDuration = TimeUnit.DAYS.toMillis(365); + long partitionIdleSafeTimePropagationPeriod = TimeUnit.DAYS.toDays(365); + + HybridTimestamp startTs = clock.now(); + + CatalogManagerImpl manager = new CatalogManagerImpl(updateLog, clockWaiter, delayDuration, partitionIdleSafeTimePropagationPeriod); + + manager.start(); + + try { + CompletableFuture<Void> createTableFuture = manager.execute(simpleTable(TABLE_NAME)); + + assertFalse(createTableFuture.isDone()); + + ArgumentCaptor<HybridTimestamp> tsCaptor = ArgumentCaptor.forClass(HybridTimestamp.class); + + verify(clockWaiter, timeout(10_000)).waitFor(tsCaptor.capture()); + HybridTimestamp userWaitTs = tsCaptor.getValue(); + assertThat( + userWaitTs.getPhysical() - startTs.getPhysical(), + greaterThanOrEqualTo( + delayDuration + HybridTimestamp.maxClockSkew() + + partitionIdleSafeTimePropagationPeriod + HybridTimestamp.maxClockSkew() + ) + ); + } finally { + manager.stop(); + } + } + @Test void testGetCatalogEntityInCatalogEvent() { CompletableFuture<Void> result = new CompletableFuture<>();