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;