aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-01-23 22:02:16 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-01-23 22:02:16 +0000
commit4f983f75667118d94c367066029d5eb08c0f952f (patch)
tree5caaa9c47b4416630434e46418c1a4036993d015
parentf184afbbbb011782776624f50eb5add144d5dbd2 (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.cpp21
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/document_scan_iterator.cpp4
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();