diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-05-10 14:45:37 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-05-10 14:45:37 +0000 |
commit | cf82274b96e19b07182e978e226fc2c4da94f7c7 (patch) | |
tree | 6564f20b13b86372550e0025f51b5a6434ee8541 | |
parent | 87117615807b157cbbad5deadbd45028bff66be3 (diff) |
No need for the bucket guard anymore for get and visit as all bucket operations are now controlled from the content layer.
10 files changed, 2 insertions, 90 deletions
diff --git a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp index 8eace5ac657..9f6b82bb277 100644 --- a/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp +++ b/searchcore/src/tests/proton/persistenceengine/persistence_handler_map/persistence_handler_map_test.cpp @@ -29,7 +29,6 @@ struct DummyPersistenceHandler : public IPersistenceHandler { void handleJoin(FeedToken, const storage::spi::Bucket &, const storage::spi::Bucket &, const storage::spi::Bucket &) override {} RetrieversSP getDocumentRetrievers(storage::spi::ReadConsistency) override { return RetrieversSP(); } - BucketGuard::UP lockBucket(const storage::spi::Bucket &) override { return BucketGuard::UP(); } void handleListActiveBuckets(IBucketIdListResultHandler &) override {} void handlePopulateActiveBuckets(document::BucketId::List &, IGenericResultHandler &) override {} }; diff --git a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp index 90e934bd823..f1e0306a660 100644 --- a/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp +++ b/searchcore/src/tests/proton/persistenceengine/persistenceengine_test.cpp @@ -11,9 +11,9 @@ #include <vespa/document/update/assignvalueupdate.h> #include <vespa/persistence/spi/documentselection.h> #include <vespa/persistence/spi/test.h> -#include <vespa/searchcore/proton/persistenceengine/bucket_guard.h> #include <vespa/searchcore/proton/persistenceengine/ipersistenceengineowner.h> #include <vespa/searchcore/proton/persistenceengine/persistenceengine.h> +#include <vespa/searchcore/proton/server/ibucketfreezer.h> #include <vespa/searchcore/proton/test/disk_mem_usage_notifier.h> #include <vespa/vdslib/distribution/distribution.h> #include <vespa/vdslib/state/clusterstate.h> @@ -268,10 +268,6 @@ struct MyHandler : public IPersistenceHandler, IBucketFreezer { return ret; } - BucketGuard::UP lockBucket(const storage::spi::Bucket &b) override { - return std::make_unique<BucketGuard>(b.getBucketId(), *this); - } - void handleListActiveBuckets(IBucketIdListResultHandler &resultHandler) override { BucketIdListResult::List list; resultHandler.handle(BucketIdListResult(list)); @@ -668,17 +664,6 @@ TEST_F("require that get is sent to all handlers", SimpleFixture) { EXPECT_EQUAL(docId1, f.hset.handler2.lastDocId); } -TEST_F("require that get freezes the bucket", SimpleFixture) { - EXPECT_FALSE(f.hset.handler1.wasFrozen(bucket1)); - EXPECT_FALSE(f.hset.handler2.wasFrozen(bucket1)); - Context context(storage::spi::Priority(0), storage::spi::Trace::TraceLevel(0)); - f.engine.get(bucket1, document::AllFields(), docId1, context); - EXPECT_TRUE(f.hset.handler1.wasFrozen(bucket1)); - EXPECT_TRUE(f.hset.handler2.wasFrozen(bucket1)); - EXPECT_FALSE(f.hset.handler1.isFrozen(bucket1)); - EXPECT_FALSE(f.hset.handler2.isFrozen(bucket1)); -} - TEST_F("require that get returns the first document found", SimpleFixture) { f.hset.handler1.setDocument(*doc1, tstamp1); f.hset.handler2.setDocument(*doc2, tstamp2); @@ -773,20 +758,6 @@ TEST_F("require that destroyIterator prevents iteration", SimpleFixture) { EXPECT_EQUAL(msg_prefix, it_result.getErrorMessage().substr(0, msg_prefix.size())); } -TEST_F("require that buckets are frozen during iterator life", SimpleFixture) { - EXPECT_FALSE(f.hset.handler1.isFrozen(bucket1)); - EXPECT_FALSE(f.hset.handler2.isFrozen(bucket1)); - Context context(storage::spi::Priority(0), storage::spi::Trace::TraceLevel(0)); - CreateIteratorResult create_result = - f.engine.createIterator(bucket1, std::make_shared<document::AllFields>(), selection, - storage::spi::NEWEST_DOCUMENT_ONLY, context); - EXPECT_TRUE(f.hset.handler1.isFrozen(bucket1)); - EXPECT_TRUE(f.hset.handler2.isFrozen(bucket1)); - f.engine.destroyIterator(create_result.getIteratorId(), context); - EXPECT_FALSE(f.hset.handler1.isFrozen(bucket1)); - EXPECT_FALSE(f.hset.handler2.isFrozen(bucket1)); -} - TEST_F("require that multiple bucket spaces works", SimpleFixture(altBucketSpace)) { f.hset.prepareListBuckets(); TEST_DO(assertBucketList(f.engine, makeBucketSpace(), { bckId1, bckId2 })); diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/bucket_guard.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/bucket_guard.h deleted file mode 100644 index 7eb864137a1..00000000000 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/bucket_guard.h +++ /dev/null @@ -1,35 +0,0 @@ -// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#pragma once - -#include <vespa/document/bucket/bucketid.h> -#include <memory> -#include <vespa/searchcore/proton/server/ibucketfreezer.h> - -namespace proton { - -class BucketGuard { - document::BucketId _bucket; - IBucketFreezer &_freezer; - -public: - typedef std::unique_ptr<BucketGuard> UP; - BucketGuard(const BucketGuard &) = delete; - BucketGuard & operator=(const BucketGuard &) = delete; - BucketGuard(BucketGuard &&) = delete; - BucketGuard & operator=(BucketGuard &&) = delete; - - BucketGuard(document::BucketId bucket, IBucketFreezer &freezer) - : _bucket(bucket), - _freezer(freezer) - { - freezer.freezeBucket(bucket); - } - - ~BucketGuard() { - _freezer.thawBucket(_bucket); - } -}; - -} // namespace proton - diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h index 1af6c2e60bc..314a87a150d 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/ipersistencehandler.h @@ -1,7 +1,6 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include "bucket_guard.h" #include "i_document_retriever.h" #include "resulthandler.h" #include <vespa/searchcore/proton/common/feedtoken.h> @@ -68,7 +67,6 @@ public: const storage::spi::Bucket &target1, const storage::spi::Bucket &target2) = 0; virtual RetrieversSP getDocumentRetrievers(storage::spi::ReadConsistency consistency) = 0; - virtual BucketGuard::UP lockBucket(const storage::spi::Bucket &bucket) = 0; virtual void handleListActiveBuckets(IBucketIdListResultHandler &resultHandler) = 0; diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp index 31acf183989..6fccd66e50a 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.cpp @@ -417,7 +417,6 @@ PersistenceEngine::get(const Bucket& b, const document::FieldSet& fields, const HandlerSnapshot snapshot = getHandlerSnapshot(rguard, b.getBucketSpace()); for (PersistenceHandlerSequence & handlers = snapshot.handlers(); handlers.valid(); handlers.next()) { - BucketGuard::UP bucket_guard = handlers.get()->lockBucket(b); IPersistenceHandler::RetrieversSP retrievers = handlers.get()->getDocumentRetrievers(context.getReadConsistency()); for (size_t i = 0; i < retrievers->size(); ++i) { IDocumentRetriever &retriever = *(*retrievers)[i]; @@ -450,9 +449,7 @@ PersistenceEngine::createIterator(const Bucket &bucket, FieldSetSP fields, const auto entry = std::make_unique<IteratorEntry>(context.getReadConsistency(), bucket, std::move(fields), selection, versions, _defaultSerializedSize, _ignoreMaxBytes); - entry->bucket_guards.reserve(snapshot.size()); for (PersistenceHandlerSequence & handlers = snapshot.handlers(); handlers.valid(); handlers.next()) { - entry->bucket_guards.push_back(handlers.get()->lockBucket(bucket)); IPersistenceHandler::RetrieversSP retrievers = handlers.get()->getDocumentRetrievers(context.getReadConsistency()); for (const auto & retriever : *retrievers) { entry->it.add(retriever); diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h index ac7a9847873..041b031478c 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/persistenceengine.h @@ -48,13 +48,11 @@ private: PersistenceHandlerSequence handler_sequence; DocumentIterator it; bool in_use; - std::vector<BucketGuard::UP> bucket_guards; IteratorEntry(storage::spi::ReadConsistency readConsistency, const Bucket &b, FieldSetSP f, const Selection &s, IncludedVersions v, ssize_t defaultSerializedSize, bool ignoreMaxBytes) : handler_sequence(), it(b, std::move(f), s, v, defaultSerializedSize, ignoreMaxBytes, readConsistency), - in_use(false), - bucket_guards() {} + in_use(false) {} }; struct BucketSpaceHash { std::size_t operator() (const document::BucketSpace &bucketSpace) const { return bucketSpace.getId(); } diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp index 3b4bf320b70..aa633536419 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.cpp @@ -744,11 +744,6 @@ DocumentDB::startTransactionLogReplay() LOG(debug, "DocumentDB(%s): Database started.", _docTypeName.toString().c_str()); } -BucketGuard::UP DocumentDB::lockBucket(const document::BucketId &bucket) -{ - return std::make_unique<BucketGuard>(bucket, _maintenanceController); -} - std::shared_ptr<std::vector<IDocumentRetriever::SP> > DocumentDB::getDocumentRetrievers(IDocumentRetriever::ReadConsistency consistency) { diff --git a/searchcore/src/vespa/searchcore/proton/server/documentdb.h b/searchcore/src/vespa/searchcore/proton/server/documentdb.h index ad0225d6f86..999ccad708e 100644 --- a/searchcore/src/vespa/searchcore/proton/server/documentdb.h +++ b/searchcore/src/vespa/searchcore/proton/server/documentdb.h @@ -22,7 +22,6 @@ #include <vespa/searchcore/proton/common/monitored_refcount.h> #include <vespa/searchcore/proton/metrics/documentdb_job_trackers.h> #include <vespa/searchcore/proton/metrics/documentdb_tagged_metrics.h> -#include <vespa/searchcore/proton/persistenceengine/bucket_guard.h> #include <vespa/searchcore/proton/persistenceengine/i_resource_write_filter.h> #include <vespa/searchcore/proton/index/indexmanager.h> #include <vespa/searchlib/docstore/cachestats.h> @@ -365,10 +364,7 @@ public: return _maintenanceController; } - BucketGuard::UP lockBucket(const document::BucketId &bucket); - virtual SerialNum getOldestFlushedSerial(); - virtual SerialNum getNewestFlushedSerial(); std::unique_ptr<search::engine::SearchReply> diff --git a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp index d298c0fac24..95fbcdaa204 100644 --- a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.cpp @@ -124,12 +124,6 @@ PersistenceHandlerProxy::getDocumentRetrievers(storage::spi::ReadConsistency con return _documentDB->getDocumentRetrievers(consistency); } -BucketGuard::UP -PersistenceHandlerProxy::lockBucket(const storage::spi::Bucket &bucket) -{ - return _documentDB->lockBucket(bucket.getBucketId().stripUnused()); -} - void PersistenceHandlerProxy::handleListActiveBuckets(IBucketIdListResultHandler &resultHandler) { diff --git a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h index ce95cc3bddd..fa32c01fb23 100644 --- a/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h +++ b/searchcore/src/vespa/searchcore/proton/server/persistencehandlerproxy.h @@ -54,7 +54,6 @@ public: const storage::spi::Bucket &target1, const storage::spi::Bucket &target2) override; RetrieversSP getDocumentRetrievers(storage::spi::ReadConsistency consistency) override; - BucketGuard::UP lockBucket(const storage::spi::Bucket &bucket) override; void handleListActiveBuckets(IBucketIdListResultHandler &resultHandler) override; |