diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-02-02 20:59:47 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-02-02 20:59:47 +0000 |
commit | 0bed084b469e8aef409de0f4204013d5b1060948 (patch) | |
tree | 2f59bcc40a806c2baadb41c4bd8c41de5aa2886f /persistence | |
parent | dbd0a52d8c8346789483250029b950f3b12a97ce (diff) |
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.
Diffstat (limited to 'persistence')
3 files changed, 5 insertions, 10 deletions
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<BucketTask> execute(const Bucket & bucket, std::unique_ptr<BucketTask> task) override; - void sync() override; + void sync(); private: std::unique_ptr<vespalib::SyncableThreadExecutor> _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<BucketExecutor> executor) : _executor(std::move(executor)) { } - ~SyncExecutorOnDestruction() override { - if (_executor) { - _executor->sync(); - } - } + explicit ExecutorRegistration(std::shared_ptr<BucketExecutor> executor) : _executor(std::move(executor)) { } + ~ExecutorRegistration() override = default; private: std::shared_ptr<BucketExecutor> _executor; }; @@ -885,7 +881,7 @@ DummyPersistence::register_executor(std::shared_ptr<BucketExecutor> executor) { assert(_bucket_executor.expired()); _bucket_executor = executor; - return std::make_unique<SyncExecutorOnDestruction>(executor); + return std::make_unique<ExecutorRegistration>(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<BucketTask> execute(const Bucket & bucket, std::unique_ptr<BucketTask> task) = 0; - virtual void sync() = 0; }; } |