From 0bed084b469e8aef409de0f4204013d5b1060948 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 2 Feb 2021 20:59:47 +0000 Subject: Remove the sync interface from Bucket Executor. Due to the nature of requiring a bucket lock it is very hard to get sync to work in a safe way. Instead the users must do their own accounting as they know their own threading model. --- .../src/vespa/persistence/dummyimpl/dummy_bucket_executor.h | 2 +- .../src/vespa/persistence/dummyimpl/dummypersistence.cpp | 12 ++++-------- persistence/src/vespa/persistence/spi/bucketexecutor.h | 1 - 3 files changed, 5 insertions(+), 10 deletions(-) (limited to 'persistence') diff --git a/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h b/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h index b832cb6c02c..2479787eb31 100644 --- a/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h +++ b/persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h @@ -18,7 +18,7 @@ public: DummyBucketExecutor(size_t numExecutors); ~DummyBucketExecutor() override; std::unique_ptr execute(const Bucket & bucket, std::unique_ptr task) override; - void sync() override; + void sync(); private: std::unique_ptr _executor; std::mutex _lock; diff --git a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp index 0865500d3c0..305f1c81192 100644 --- a/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp +++ b/persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp @@ -866,14 +866,10 @@ DummyPersistence::register_resource_usage_listener(IResourceUsageListener &liste namespace { -class SyncExecutorOnDestruction : public vespalib::IDestructorCallback { +class ExecutorRegistration : public vespalib::IDestructorCallback { public: - explicit SyncExecutorOnDestruction(std::shared_ptr executor) : _executor(std::move(executor)) { } - ~SyncExecutorOnDestruction() override { - if (_executor) { - _executor->sync(); - } - } + explicit ExecutorRegistration(std::shared_ptr executor) : _executor(std::move(executor)) { } + ~ExecutorRegistration() override = default; private: std::shared_ptr _executor; }; @@ -885,7 +881,7 @@ DummyPersistence::register_executor(std::shared_ptr executor) { assert(_bucket_executor.expired()); _bucket_executor = executor; - return std::make_unique(executor); + return std::make_unique(executor); } std::string diff --git a/persistence/src/vespa/persistence/spi/bucketexecutor.h b/persistence/src/vespa/persistence/spi/bucketexecutor.h index 8237b78cca0..d1ada30959e 100644 --- a/persistence/src/vespa/persistence/spi/bucketexecutor.h +++ b/persistence/src/vespa/persistence/spi/bucketexecutor.h @@ -29,7 +29,6 @@ public: struct BucketExecutor { virtual ~BucketExecutor() = default; virtual std::unique_ptr execute(const Bucket & bucket, std::unique_ptr task) = 0; - virtual void sync() = 0; }; } -- cgit v1.2.3