diff options
Diffstat (limited to 'searchcore')
-rw-r--r-- | searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp | 14 | ||||
-rw-r--r-- | searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp | 6 |
2 files changed, 18 insertions, 2 deletions
diff --git a/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp b/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp index 9a329f19a7f..b5fa3ae044e 100644 --- a/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp +++ b/searchcore/src/tests/proton/bucketdb/bucketdb/bucketdb_test.cpp @@ -24,6 +24,7 @@ const Timestamp TIME_1(1u); const Timestamp TIME_2(2u); const Timestamp TIME_3(3u); constexpr uint32_t DOCSIZE_1(4096u); +constexpr uint32_t DOCSIZE_2(10000u); typedef BucketInfo::ReadyState RS; typedef SubDbType SDT; @@ -51,6 +52,9 @@ assertDocSizes(size_t ready, EXPECT_EQUAL(ready, state.getReadyDocSizes()); EXPECT_EQUAL(notReady, state.getNotReadyDocSizes()); EXPECT_EQUAL(removed, state.getRemovedDocSizes()); + BucketInfo info = state; + EXPECT_EQUAL(ready + notReady, info.getDocumentSize()); + EXPECT_EQUAL(ready + notReady + removed, info.getUsedSize()); } void @@ -163,6 +167,16 @@ TEST_F("require that bucket can be cached", Fixture) f.remove(TIME_2, SDT::NOTREADY); } +TEST_F("require that bucket checksum ignores document sizes", Fixture) +{ + auto state1 = f.add(TIME_1, DOCSIZE_1, SDT::READY); + f.remove(TIME_1, DOCSIZE_1, SDT::READY); + auto state2 = f.add(TIME_1, DOCSIZE_2, SDT::READY); + f.remove(TIME_1, DOCSIZE_2, SDT::READY); + EXPECT_NOT_EQUAL(state1.getReadyDocSizes(), state2.getReadyDocSizes()); + EXPECT_EQUAL(state1.getChecksum(), state2.getChecksum()); +} + TEST("require that bucket db can be explored") { BucketDBOwner db; diff --git a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp index 2030b448d52..e8fad2054da 100644 --- a/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp +++ b/searchcore/src/vespa/searchcore/proton/bucketdb/bucketstate.cpp @@ -167,14 +167,16 @@ BucketState::operator storage::spi::BucketInfo() const uint32_t notReady = getNotReadyCount(); uint32_t documentCount = getReadyCount() + notReady; uint32_t entryCount = documentCount + getRemovedCount(); + size_t docSizes = getReadyDocSizes() + getNotReadyDocSizes(); + size_t entrySizes = docSizes + getRemovedDocSizes(); using BucketInfo = storage::spi::BucketInfo; return BucketInfo(storage::spi::BucketChecksum(_checksum), documentCount, - 0, + docSizes, entryCount, - 0, + entrySizes, notReady > 0 ? BucketInfo::NOT_READY : BucketInfo::READY, _active ? BucketInfo::ACTIVE : BucketInfo::NOT_ACTIVE); } |