summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-10-19 14:12:19 +0200
committerGitHub <noreply@github.com>2021-10-19 14:12:19 +0200
commit680a711d800af6c60d87b33388833f3a24081009 (patch)
tree44506b0f1e1c8fc271166689ee51ba1e3cd9e93b /storage
parenta2a1d55e1b4cebbcbc716dbdf057df2977057ea8 (diff)
parent338bc23ec03e414cda8964763e1a1890aadfd563 (diff)
Merge pull request #19625 from vespa-engine/balder/only-keep-async-variants
Only keep async variant to simplify what to implement and what fallba…
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/persistence/common/persistenceproviderwrapper.cpp68
-rw-r--r--storage/src/tests/persistence/common/persistenceproviderwrapper.h26
-rw-r--r--storage/src/tests/persistence/filestorage/operationabortingtest.cpp8
-rw-r--r--storage/src/vespa/storage/persistence/provider_error_wrapper.cpp26
-rw-r--r--storage/src/vespa/storage/persistence/provider_error_wrapper.h4
5 files changed, 64 insertions, 68 deletions
diff --git a/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp b/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp
index 5f1acf6e7da..b3bd1c6a253 100644
--- a/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp
+++ b/storage/src/tests/persistence/common/persistenceproviderwrapper.cpp
@@ -96,46 +96,40 @@ PersistenceProviderWrapper::getBucketInfo(const spi::Bucket& bucket) const
return _spi.getBucketInfo(bucket);
}
-spi::Result
-PersistenceProviderWrapper::put(const spi::Bucket& bucket, spi::Timestamp timestamp,
- document::Document::SP doc, spi::Context& context)
+void
+PersistenceProviderWrapper::putAsync(const spi::Bucket& bucket, spi::Timestamp timestamp, document::Document::SP doc,
+ spi::Context& context, spi::OperationComplete::UP onComplete)
{
LOG_SPI("put(" << bucket << ", " << timestamp << ", " << doc->getId() << ")");
- CHECK_ERROR(spi::Result, FAIL_PUT);
- return _spi.put(bucket, timestamp, std::move(doc), context);
+ CHECK_ERROR_ASYNC(spi::Result, FAIL_PUT, onComplete);
+ _spi.putAsync(bucket, timestamp, std::move(doc), context, std::move(onComplete));
}
-spi::RemoveResult
-PersistenceProviderWrapper::remove(const spi::Bucket& bucket,
- spi::Timestamp timestamp,
- const spi::DocumentId& id,
- spi::Context& context)
+void
+PersistenceProviderWrapper::removeAsync(const spi::Bucket& bucket, spi::Timestamp timestamp, const spi::DocumentId& id,
+ spi::Context& context, spi::OperationComplete::UP onComplete)
{
LOG_SPI("remove(" << bucket << ", " << timestamp << ", " << id << ")");
- CHECK_ERROR(spi::RemoveResult, FAIL_REMOVE);
- return _spi.remove(bucket, timestamp, id, context);
+ CHECK_ERROR_ASYNC(spi::RemoveResult, FAIL_REMOVE, onComplete);
+ _spi.removeAsync(bucket, timestamp, id, context, std::move(onComplete));
}
-spi::RemoveResult
-PersistenceProviderWrapper::removeIfFound(const spi::Bucket& bucket,
- spi::Timestamp timestamp,
- const spi::DocumentId& id,
- spi::Context& context)
+void
+PersistenceProviderWrapper::removeIfFoundAsync(const spi::Bucket& bucket, spi::Timestamp timestamp, const spi::DocumentId& id,
+ spi::Context& context, spi::OperationComplete::UP onComplete)
{
LOG_SPI("removeIfFound(" << bucket << ", " << timestamp << ", " << id << ")");
- CHECK_ERROR(spi::RemoveResult, FAIL_REMOVE_IF_FOUND);
- return _spi.removeIfFound(bucket, timestamp, id, context);
+ CHECK_ERROR_ASYNC(spi::RemoveResult, FAIL_REMOVE_IF_FOUND, onComplete);
+ _spi.removeIfFoundAsync(bucket, timestamp, id, context, std::move(onComplete));
}
-spi::UpdateResult
-PersistenceProviderWrapper::update(const spi::Bucket& bucket,
- spi::Timestamp timestamp,
- document::DocumentUpdate::SP upd,
- spi::Context& context)
+void
+PersistenceProviderWrapper::updateAsync(const spi::Bucket& bucket, spi::Timestamp timestamp, document::DocumentUpdate::SP upd,
+ spi::Context& context, spi::OperationComplete::UP onComplete)
{
LOG_SPI("update(" << bucket << ", " << timestamp << ", " << upd->getId() << ")");
- CHECK_ERROR(spi::UpdateResult, FAIL_UPDATE);
- return _spi.update(bucket, timestamp, std::move(upd), context);
+ CHECK_ERROR_ASYNC(spi::UpdateResult, FAIL_UPDATE, onComplete);
+ _spi.updateAsync(bucket, timestamp, std::move(upd), context, std::move(onComplete));
}
spi::GetResult
@@ -234,4 +228,26 @@ PersistenceProviderWrapper::removeEntry(const spi::Bucket& bucket,
return _spi.removeEntry(bucket, timestamp, context);
}
+spi::Result
+PersistenceProviderWrapper::initialize() {
+ return _spi.initialize();
+}
+
+spi::BucketIdListResult
+PersistenceProviderWrapper::getModifiedBuckets(spi::PersistenceProvider::BucketSpace bucketSpace) const {
+ return _spi.getModifiedBuckets(bucketSpace);
+}
+
+spi::Result
+PersistenceProviderWrapper::setClusterState(spi::PersistenceProvider::BucketSpace bucketSpace, const spi::ClusterState &state) {
+ return _spi.setClusterState(bucketSpace, state);
+}
+
+void
+PersistenceProviderWrapper::setActiveStateAsync(const spi::Bucket &bucket, spi::BucketInfo::ActiveState state,
+ spi::OperationComplete::UP onComplete)
+{
+ _spi.setActiveStateAsync(bucket, state, std::move(onComplete));
+}
+
}
diff --git a/storage/src/tests/persistence/common/persistenceproviderwrapper.h b/storage/src/tests/persistence/common/persistenceproviderwrapper.h
index 64828a2a3ee..c6628814dba 100644
--- a/storage/src/tests/persistence/common/persistenceproviderwrapper.h
+++ b/storage/src/tests/persistence/common/persistenceproviderwrapper.h
@@ -21,7 +21,7 @@
namespace storage {
-class PersistenceProviderWrapper : public spi::AbstractPersistenceProvider
+class PersistenceProviderWrapper : public spi::PersistenceProvider
{
public:
enum OPERATION_FAILURE_FLAGS
@@ -47,11 +47,11 @@ public:
// TODO: add more as needed
};
private:
- spi::PersistenceProvider& _spi;
- spi::Result _result;
- mutable std::mutex _lock;
+ spi::PersistenceProvider& _spi;
+ spi::Result _result;
+ mutable std::mutex _lock;
mutable std::vector<std::string> _log;
- uint32_t _failureMask;
+ uint32_t _failureMask;
using Guard = std::lock_guard<std::mutex>;
public:
PersistenceProviderWrapper(spi::PersistenceProvider& spi);
@@ -88,13 +88,21 @@ public:
_log.clear();
}
+ spi::Result initialize() override;
+ spi::BucketIdListResult getModifiedBuckets(BucketSpace bucketSpace) const override;
+
+ spi::Result setClusterState(BucketSpace bucketSpace, const spi::ClusterState &state) override;
+
+ void setActiveStateAsync(const spi::Bucket &bucket, spi::BucketInfo::ActiveState state,
+ spi::OperationComplete::UP up) override;
+
spi::Result createBucket(const spi::Bucket&, spi::Context&) override;
spi::BucketIdListResult listBuckets(BucketSpace bucketSpace) const override;
spi::BucketInfoResult getBucketInfo(const spi::Bucket&) const override;
- spi::Result put(const spi::Bucket&, spi::Timestamp, spi::DocumentSP, spi::Context&) override;
- spi::RemoveResult remove(const spi::Bucket&, spi::Timestamp, const spi::DocumentId&, spi::Context&) override;
- spi::RemoveResult removeIfFound(const spi::Bucket&, spi::Timestamp, const spi::DocumentId&, spi::Context&) override;
- spi::UpdateResult update(const spi::Bucket&, spi::Timestamp, spi::DocumentUpdateSP, spi::Context&) override;
+ void putAsync(const spi::Bucket&, spi::Timestamp, spi::DocumentSP, spi::Context&, spi::OperationComplete::UP) override;
+ void removeAsync(const spi::Bucket&, spi::Timestamp, const spi::DocumentId&, spi::Context&, spi::OperationComplete::UP) override;
+ void removeIfFoundAsync(const spi::Bucket&, spi::Timestamp, const spi::DocumentId&, spi::Context&, spi::OperationComplete::UP) override;
+ void updateAsync(const spi::Bucket&, spi::Timestamp, spi::DocumentUpdateSP, spi::Context&, spi::OperationComplete::UP) override;
spi::GetResult get(const spi::Bucket&, const document::FieldSet&, const spi::DocumentId&, spi::Context&) const override;
spi::CreateIteratorResult
diff --git a/storage/src/tests/persistence/filestorage/operationabortingtest.cpp b/storage/src/tests/persistence/filestorage/operationabortingtest.cpp
index c3caac7121c..07d2b24d536 100644
--- a/storage/src/tests/persistence/filestorage/operationabortingtest.cpp
+++ b/storage/src/tests/persistence/filestorage/operationabortingtest.cpp
@@ -46,14 +46,15 @@ public:
_deleteBucketInvocations(0)
{}
- spi::Result put(const spi::Bucket&, spi::Timestamp, document::Document::SP, spi::Context&) override
+ void
+ putAsync(const spi::Bucket&, spi::Timestamp, document::Document::SP, spi::Context&, spi::OperationComplete::UP onComplete) override
{
_queueBarrier.await();
// message abort stage with active opertion in disk queue
std::this_thread::sleep_for(75ms);
_completionBarrier.await();
// test finished
- return spi::Result();
+ onComplete->onComplete(std::make_unique<spi::Result>());
}
spi::BucketInfoResult getBucketInfo(const spi::Bucket& bucket) const override {
@@ -66,7 +67,8 @@ public:
return PersistenceProviderWrapper::createBucket(bucket, ctx);
}
- void deleteBucketAsync(const spi::Bucket& bucket, spi::Context& ctx, spi::OperationComplete::UP onComplete) override {
+ void
+ deleteBucketAsync(const spi::Bucket& bucket, spi::Context& ctx, spi::OperationComplete::UP onComplete) override {
++_deleteBucketInvocations;
PersistenceProviderWrapper::deleteBucketAsync(bucket, ctx, std::move(onComplete));
}
diff --git a/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp b/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
index 73033132e5d..ce424f0ce83 100644
--- a/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
+++ b/storage/src/vespa/storage/persistence/provider_error_wrapper.cpp
@@ -73,32 +73,6 @@ ProviderErrorWrapper::getBucketInfo(const spi::Bucket& bucket) const
return checkResult(_impl.getBucketInfo(bucket));
}
-spi::Result
-ProviderErrorWrapper::put(const spi::Bucket& bucket, spi::Timestamp ts, spi::DocumentSP doc, spi::Context& context)
-{
- return checkResult(_impl.put(bucket, ts, std::move(doc), context));
-}
-
-spi::RemoveResult
-ProviderErrorWrapper::remove(const spi::Bucket& bucket, spi::Timestamp ts, const document::DocumentId& docId, spi::Context& context)
-{
- return checkResult(_impl.remove(bucket, ts, docId, context));
-}
-
-spi::RemoveResult
-ProviderErrorWrapper::removeIfFound(const spi::Bucket& bucket, spi::Timestamp ts,
- const document::DocumentId& docId, spi::Context& context)
-{
- return checkResult(_impl.removeIfFound(bucket, ts, docId, context));
-}
-
-spi::UpdateResult
-ProviderErrorWrapper::update(const spi::Bucket& bucket, spi::Timestamp ts,
- spi::DocumentUpdateSP docUpdate, spi::Context& context)
-{
- return checkResult(_impl.update(bucket, ts, std::move(docUpdate), context));
-}
-
spi::GetResult
ProviderErrorWrapper::get(const spi::Bucket& bucket, const document::FieldSet& fieldSet,
const document::DocumentId& docId, spi::Context& context) const
diff --git a/storage/src/vespa/storage/persistence/provider_error_wrapper.h b/storage/src/vespa/storage/persistence/provider_error_wrapper.h
index 6e7986ad65c..c9d2411e372 100644
--- a/storage/src/vespa/storage/persistence/provider_error_wrapper.h
+++ b/storage/src/vespa/storage/persistence/provider_error_wrapper.h
@@ -43,10 +43,6 @@ public:
spi::Result setClusterState(BucketSpace bucketSpace, const spi::ClusterState&) override;
spi::BucketInfoResult getBucketInfo(const spi::Bucket&) const override;
- spi::Result put(const spi::Bucket&, spi::Timestamp, spi::DocumentSP, spi::Context&) override;
- spi::RemoveResult remove(const spi::Bucket&, spi::Timestamp, const document::DocumentId&, spi::Context&) override;
- spi::RemoveResult removeIfFound(const spi::Bucket&, spi::Timestamp, const document::DocumentId&, spi::Context&) override;
- spi::UpdateResult update(const spi::Bucket&, spi::Timestamp, spi::DocumentUpdateSP, spi::Context&) override;
spi::GetResult get(const spi::Bucket&, const document::FieldSet&, const document::DocumentId&, spi::Context&) const override;
spi::CreateIteratorResult
createIterator(const spi::Bucket &bucket, FieldSetSP, const spi::Selection &, spi::IncludedVersions versions,