diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-23 22:02:16 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-01-23 22:02:16 +0000 |
commit | 4f983f75667118d94c367066029d5eb08c0f952f (patch) | |
tree | 5caaa9c47b4416630434e46418c1a4036993d015 | |
parent | f184afbbbb011782776624f50eb5add144d5dbd2 (diff) |
Use the correct lid when looking up the meta data.
-rw-r--r-- | searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp | 21 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp | 4 |
2 files changed, 23 insertions, 2 deletions
diff --git a/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp b/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp index 7f7c0302926..9a8e3a31ee0 100644 --- a/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp +++ b/searchcore/src/tests/proton/documentdb/document_scan_iterator/document_scan_iterator_test.cpp @@ -56,6 +56,19 @@ struct Fixture EXPECT_FALSE(_itr->valid()); return retval; } + LidSet fetch(uint32_t begin, uint32_t count) { + if (!_itr) { + _itr = std::make_unique<DocumentScanIterator>(_metaStore); + } + LidSet retval; + for (uint32_t i(begin); i < begin+count; i++) { + DocumentMetaData meta = _itr->getMetaData(i); + if (meta.valid()) { + retval.insert(meta.lid); + } + } + return retval; + } uint32_t next(uint32_t compactLidLimit, bool retry = false) { if (!_itr) { _itr = std::make_unique<DocumentScanIterator>(_metaStore); @@ -89,6 +102,14 @@ TEST_F("require that we start scan at previous doc if retry is set", Fixture) EXPECT_EQUAL(lid1, lid2); } +TEST_F("require getMetaData return correct info", Fixture) +{ + f.add({1,2,3,4,5,6,7,8}); + assertLidSet({1}, f.fetch(1, 1)); + assertLidSet({1,2,3,4,5,6,7,8}, f.fetch(1, 20)); + assertLidSet({4,5,6,7,8}, f.fetch(4, 20)); +} + TEST_MAIN() { TEST_RUN_ALL(); diff --git a/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp b/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp index 35c03ef73d3..637cae12e2f 100644 --- a/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp +++ b/searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp @@ -42,8 +42,8 @@ DocumentScanIterator::next(uint32_t compactLidLimit, bool retry) search::DocumentMetaData DocumentScanIterator::getMetaData(uint32_t lid) const { if (_metaStore.validLid(lid)) { - const RawDocumentMetaData &metaData = _metaStore.getRawMetaData(_lastLid); - return DocumentMetaData(_lastLid, metaData.getTimestamp(), + const RawDocumentMetaData &metaData = _metaStore.getRawMetaData(lid); + return DocumentMetaData(lid, metaData.getTimestamp(), metaData.getBucketId(), metaData.getGid()); } return DocumentMetaData(); |