diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-30 10:52:06 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2023-10-30 10:52:06 +0000 |
commit | d5821ee392c7a71e4db6de446b4d6adf636552e7 (patch) | |
tree | 6a5e9f8d8db00615601eed30f5a1053cbf1c15ec /searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h | |
parent | 0c47a4ae1132a86c5973d8e385c793f4cf4eb7dc (diff) |
Test that documents failing move are detected and causes retry and eventual completition.
Diffstat (limited to 'searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h')
-rw-r--r-- | searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h index ded00589f60..e21f084ff6e 100644 --- a/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h +++ b/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h @@ -37,14 +37,25 @@ struct MyMoveHandler : public IDocumentMoveHandler { using MoveOperationVector = std::vector<MoveOperation>; bucketdb::BucketDBOwner &_bucketDb; MoveOperationVector _moves; + std::set<uint32_t> _lids2Fail; + size_t _numFailedMoves; size_t _numCachedBuckets; - bool _storeMoveDoneContexts; + bool _storeMoveDoneContexts; + std::vector<vespalib::IDestructorCallback::SP> _moveDoneContexts; - MyMoveHandler(bucketdb::BucketDBOwner &bucketDb, bool storeMoveDoneContext = false); + explicit MyMoveHandler(bucketdb::BucketDBOwner &bucketDb) : MyMoveHandler(bucketDb, false){} + MyMoveHandler(bucketdb::BucketDBOwner &bucketDb, bool storeMoveDoneContext); ~MyMoveHandler() override; MoveResult handleMove(MoveOperation &op, vespalib::IDestructorCallback::SP moveDoneCtx) override; + void addLid2Fail(uint32_t lid) { + _lids2Fail.insert(lid); + } + void removeLids2Fail(uint32_t lid) { + _lids2Fail.erase(lid); + } + void reset() { _moves.clear(); _numCachedBuckets = 0; @@ -66,7 +77,7 @@ struct MyDocumentRetriever : public DocumentRetrieverBaseForTest { DocumentVector _docs; uint32_t _lid2Fail; - MyDocumentRetriever(std::shared_ptr<const DocumentTypeRepo> repo) + explicit MyDocumentRetriever(std::shared_ptr<const DocumentTypeRepo> repo) : _repo(std::move(repo)), _docs(), _lid2Fail(0) @@ -78,7 +89,7 @@ struct MyDocumentRetriever : public DocumentRetrieverBaseForTest { void getBucketMetaData(const storage::spi::Bucket &, DocumentMetaData::Vector &) const override {} - DocumentMetaData getDocumentMetaData(const DocumentId &) const override { return DocumentMetaData(); } + DocumentMetaData getDocumentMetaData(const DocumentId &) const override { return {}; } Document::UP getFullDocument(DocumentIdT lid) const override { return (lid != _lid2Fail) ? Document::UP(_docs[lid]->clone()) : Document::UP(); @@ -130,11 +141,13 @@ struct MySubDb { return _docs.getBucket(userId); } - DocumentVector docs(uint32_t userId) { + DocumentVector docs(uint32_t userId) const { return _docs.getGidOrderDocs(userId); } void setBucketState(const BucketId &bucketId, bool active); + // Will remove from metastore so it is invisible. + bool remove(uint32_t subDbId, uint32_t lid); }; struct MyCountJobRunner : public IMaintenanceJobRunner { |