aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-10-30 10:52:06 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-10-30 10:52:06 +0000
commitd5821ee392c7a71e4db6de446b4d6adf636552e7 (patch)
tree6a5e9f8d8db00615601eed30f5a1053cbf1c15ec /searchcore/src/tests/proton/documentdb/documentbucketmover/bucketmover_common.h
parent0c47a4ae1132a86c5973d8e385c793f4cf4eb7dc (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.h23
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 {