From e158b6e614b4b6a1d4d4a03eeb68e590ddd46ed6 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Thu, 5 Oct 2017 13:12:39 +0000 Subject: Add BucketSpace parameter to listBuckets() and getModifiedBuckets() SPI methods. --- .../src/vespa/persistence/conformancetest/conformancetest.cpp | 7 ++++--- persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp | 4 ++-- persistence/src/vespa/persistence/dummyimpl/dummypersistence.h | 4 ++-- .../src/vespa/persistence/spi/abstractpersistenceprovider.cpp | 2 +- .../src/vespa/persistence/spi/abstractpersistenceprovider.h | 2 +- .../src/vespa/persistence/spi/metricpersistenceprovider.cpp | 8 ++++---- persistence/src/vespa/persistence/spi/metricpersistenceprovider.h | 4 ++-- persistence/src/vespa/persistence/spi/persistenceprovider.h | 5 +++-- persistence/src/vespa/persistence/spi/test.cpp | 5 +++++ persistence/src/vespa/persistence/spi/test.h | 1 + 10 files changed, 25 insertions(+), 17 deletions(-) (limited to 'persistence/src') diff --git a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp index 1ef8956d3d8..88dd475e6f6 100644 --- a/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp +++ b/persistence/src/vespa/persistence/conformancetest/conformancetest.cpp @@ -18,6 +18,7 @@ using document::BucketId; using storage::spi::test::makeBucket; +using storage::spi::test::makeBucketSpace; namespace storage::spi { @@ -417,12 +418,12 @@ void ConformanceTest::testListBuckets() { spi->flush(bucket3, context); { - BucketIdListResult result = spi->listBuckets(PartitionId(1)); + BucketIdListResult result = spi->listBuckets(makeBucketSpace(), PartitionId(1)); CPPUNIT_ASSERT(result.getList().empty()); } { - BucketIdListResult result = spi->listBuckets(partId); + BucketIdListResult result = spi->listBuckets(makeBucketSpace(), partId); const BucketIdListResult::List &bucketList = result.getList(); CPPUNIT_ASSERT_EQUAL(3u, (uint32_t)bucketList.size()); CPPUNIT_ASSERT(std::find(bucketList.begin(), bucketList.end(), bucketId1) != bucketList.end()); @@ -2119,7 +2120,7 @@ void ConformanceTest::testGetModifiedBuckets() _factory->clear(); PersistenceProvider::UP spi(getSpi(*_factory, testDocMan)); CPPUNIT_ASSERT_EQUAL(0, - (int)spi->getModifiedBuckets().getList().size()); + (int)spi->getModifiedBuckets(makeBucketSpace()).getList().size()); } void ConformanceTest::testBucketActivation() diff --git a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp index 43e1e3e60a1..5c38679f52c 100644 --- a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp +++ b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp @@ -341,7 +341,7 @@ DummyPersistence::getPartitionStates() const BucketIdListResult -DummyPersistence::listBuckets(PartitionId id) const +DummyPersistence::listBuckets(BucketSpace, PartitionId id) const { DUMMYPERSISTENCE_VERIFY_INITIALIZED; LOG(debug, "listBuckets(%u)", uint16_t(id)); @@ -363,7 +363,7 @@ DummyPersistence::setModifiedBuckets(const BucketIdListResult::List& buckets) } BucketIdListResult -DummyPersistence::getModifiedBuckets() const +DummyPersistence::getModifiedBuckets(BucketSpace) const { vespalib::MonitorGuard lock(_monitor); return BucketIdListResult(_modifiedBuckets); diff --git a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h index 19076f053eb..50a4562ea3b 100644 --- a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h +++ b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.h @@ -132,7 +132,7 @@ public: ~DummyPersistence(); PartitionStateListResult getPartitionStates() const override; - BucketIdListResult listBuckets(PartitionId) const override; + BucketIdListResult listBuckets(BucketSpace bucketSpace, PartitionId) const override; void setModifiedBuckets(const BucketIdListResult::List& result); @@ -140,7 +140,7 @@ public: * Returns the list set by setModifiedBuckets(), then clears * the list. */ - BucketIdListResult getModifiedBuckets() const override; + BucketIdListResult getModifiedBuckets(BucketSpace bucketSpace) const override; Result setClusterState(const ClusterState& newState) override; Result setActiveState(const Bucket& bucket, BucketInfo::ActiveState newState) override; diff --git a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp index 9e687f52363..5e6e908e042 100644 --- a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp +++ b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.cpp @@ -43,7 +43,7 @@ AbstractPersistenceProvider::removeIfFound(const Bucket& b, Timestamp timestamp, } BucketIdListResult -AbstractPersistenceProvider::getModifiedBuckets() const +AbstractPersistenceProvider::getModifiedBuckets(BucketSpace) const { BucketIdListResult::List list; return BucketIdListResult(list); diff --git a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h index 461f31ad474..2460259cfe7 100644 --- a/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h +++ b/persistence/src/vespa/persistence/spi/abstractpersistenceprovider.h @@ -64,7 +64,7 @@ public: /** * Default impl empty. */ - BucketIdListResult getModifiedBuckets() const override; + BucketIdListResult getModifiedBuckets(BucketSpace bucketSpace) const override; /** * Uses join by default. diff --git a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp b/persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp index 6f8600c7ca4..e338c76fb88 100644 --- a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp +++ b/persistence/src/vespa/persistence/spi/metricpersistenceprovider.cpp @@ -104,10 +104,10 @@ Impl::getPartitionStates() const } BucketIdListResult -Impl::listBuckets(PartitionId v1) const +Impl::listBuckets(BucketSpace bucketSpace, PartitionId v1) const { PRE_PROCESS(2); - BucketIdListResult r(_next->listBuckets(v1)); + BucketIdListResult r(_next->listBuckets(bucketSpace, v1)); POST_PROCESS(2, r); return r; } @@ -250,10 +250,10 @@ Impl::deleteBucket(const Bucket& v1, Context& v2) } BucketIdListResult -Impl::getModifiedBuckets() const +Impl::getModifiedBuckets(BucketSpace bucketSpace) const { PRE_PROCESS(18); - BucketIdListResult r(_next->getModifiedBuckets()); + BucketIdListResult r(_next->getModifiedBuckets(bucketSpace)); POST_PROCESS(18, r); return r; } diff --git a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.h b/persistence/src/vespa/persistence/spi/metricpersistenceprovider.h index 2a577f1234a..8ec2e2dd1bc 100644 --- a/persistence/src/vespa/persistence/spi/metricpersistenceprovider.h +++ b/persistence/src/vespa/persistence/spi/metricpersistenceprovider.h @@ -34,7 +34,7 @@ public: // Implementation of the PersistenceProvider API Result initialize() override; PartitionStateListResult getPartitionStates() const override; - BucketIdListResult listBuckets(PartitionId) const override; + BucketIdListResult listBuckets(BucketSpace bucketSpace, PartitionId) const override; Result setClusterState(const ClusterState&) override; Result setActiveState(const Bucket&, BucketInfo::ActiveState) override; BucketInfoResult getBucketInfo(const Bucket&) const override; @@ -51,7 +51,7 @@ public: Result destroyIterator(IteratorId, Context&) override; Result createBucket(const Bucket&, Context&) override; Result deleteBucket(const Bucket&, Context&) override; - BucketIdListResult getModifiedBuckets() const override; + BucketIdListResult getModifiedBuckets(BucketSpace bucketSpace) const override; Result maintain(const Bucket&, MaintenanceLevel level) override; Result split(const Bucket& source, const Bucket& target1, const Bucket& target2, Context&) override; Result join(const Bucket& source1, const Bucket& source2, const Bucket& target, Context&) override; diff --git a/persistence/src/vespa/persistence/spi/persistenceprovider.h b/persistence/src/vespa/persistence/spi/persistenceprovider.h index 154a6c43469..b10ed618e88 100644 --- a/persistence/src/vespa/persistence/spi/persistenceprovider.h +++ b/persistence/src/vespa/persistence/spi/persistenceprovider.h @@ -59,6 +59,7 @@ namespace spi { struct PersistenceProvider { typedef std::unique_ptr UP; + using BucketSpace = document::BucketSpace; virtual ~PersistenceProvider(); @@ -84,7 +85,7 @@ struct PersistenceProvider * Return list of buckets that provider has stored on the given partition. * Typically called once per partition on startup. */ - virtual BucketIdListResult listBuckets(PartitionId) const = 0; + virtual BucketIdListResult listBuckets(BucketSpace bucketSpace, PartitionId) const = 0; /** * Updates the persistence provider with the last cluster state. @@ -384,7 +385,7 @@ struct PersistenceProvider * should clear it's list of modified buckets, so that the next call does * not return the same buckets. */ - virtual BucketIdListResult getModifiedBuckets() const = 0; + virtual BucketIdListResult getModifiedBuckets(BucketSpace bucketSpace) const = 0; /** * Allows the provider to do periodic maintenance and verification. diff --git a/persistence/src/vespa/persistence/spi/test.cpp b/persistence/src/vespa/persistence/spi/test.cpp index 73dd33f06bf..08ee060a52f 100644 --- a/persistence/src/vespa/persistence/spi/test.cpp +++ b/persistence/src/vespa/persistence/spi/test.cpp @@ -4,6 +4,11 @@ namespace storage::spi::test { +document::BucketSpace makeBucketSpace() +{ + return document::BucketSpace::placeHolder(); +} + Bucket makeBucket(document::BucketId bucketId, PartitionId partitionId) { return Bucket(document::Bucket(document::BucketSpace::placeHolder(), bucketId), partitionId); diff --git a/persistence/src/vespa/persistence/spi/test.h b/persistence/src/vespa/persistence/spi/test.h index f3fc7b7f379..babc136cc81 100644 --- a/persistence/src/vespa/persistence/spi/test.h +++ b/persistence/src/vespa/persistence/spi/test.h @@ -8,6 +8,7 @@ namespace storage::spi::test { // Helper functions used by unit tests +document::BucketSpace makeBucketSpace(); Bucket makeBucket(document::BucketId bucketId, PartitionId partitionId); Bucket makeBucket(document::BucketId bucketId); -- cgit v1.2.3