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<>();

Reply via email to