This is an automated email from the ASF dual-hosted git repository.

amashenkov pushed a commit to branch ignite-21585
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit 1d7dcdc038d881446d0f0aa689ec7e0db843f988
Author: amashenkov <andrey.mashen...@gmail.com>
AuthorDate: Tue Mar 5 15:12:47 2024 +0300

    Add the earliest observable version calculation in Catalog.
---
 .../org/apache/ignite/internal/catalog/CatalogManagerImpl.java     | 7 +++++++
 .../java/org/apache/ignite/internal/catalog/CatalogService.java    | 3 +++
 .../java/org/apache/ignite/client/handler/FakeCatalogService.java  | 5 +++++
 3 files changed, 15 insertions(+)

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 293b1376c6..00d99f8670 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
@@ -298,6 +298,13 @@ public class CatalogManagerImpl extends 
AbstractEventProducer<CatalogEvent, Cata
         return catalogAt(timestamp).version();
     }
 
+    @Override
+    public int earliestCatalogVersion(long timestamp) {
+        Entry<Long, Catalog> earliestEntry = catalogByTs.floorEntry(timestamp);
+
+        return (earliestEntry == null) ? earliestCatalogVersion() : 
earliestEntry.getValue().version();
+    }
+
     @Override
     public int earliestCatalogVersion() {
         return catalogByVer.firstEntry().getKey();
diff --git 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogService.java
 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogService.java
index d2c167c863..1477ee7a3a 100644
--- 
a/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogService.java
+++ 
b/modules/catalog/src/main/java/org/apache/ignite/internal/catalog/CatalogService.java
@@ -100,6 +100,9 @@ public interface CatalogService extends 
EventProducer<CatalogEvent, CatalogEvent
     /** Returns the earliest registered version of the catalog. */
     int earliestCatalogVersion();
 
+    /** Returns the earliest registered version of the catalog, which is 
observable since given timestamp. */
+    int earliestCatalogVersion(long timestamp);
+
     /** Returns the latest registered version of the catalog. */
     int latestCatalogVersion();
 
diff --git 
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
 
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
index 2e74e02311..bd22a7e675 100644
--- 
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
+++ 
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakeCatalogService.java
@@ -154,6 +154,11 @@ public class FakeCatalogService implements CatalogService {
         return 0;
     }
 
+    @Override
+    public int earliestCatalogVersion(long timestamp) {
+        return 0;
+    }
+
     @Override
     public CompletableFuture<Void> catalogReadyFuture(int version) {
         return null;

Reply via email to