aboutsummaryrefslogtreecommitdiffstats
path: root/persistence
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-02-02 20:59:47 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-02-02 20:59:47 +0000
commit0bed084b469e8aef409de0f4204013d5b1060948 (patch)
tree2f59bcc40a806c2baadb41c4bd8c41de5aa2886f /persistence
parentdbd0a52d8c8346789483250029b950f3b12a97ce (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')
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/dummy_bucket_executor.h2
-rw-r--r--persistence/src/vespa/persistence/dummyimpl/dummypersistence.cpp12
-rw-r--r--persistence/src/vespa/persistence/spi/bucketexecutor.h1
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;
};
}