diff options
author | Tor Egge <Tor.Egge@yahooinc.com> | 2022-03-17 13:46:17 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahooinc.com> | 2022-03-17 13:46:17 +0100 |
commit | c87f765f822b10e85a0049c5b7b830b6e5d5bd4e (patch) | |
tree | 32c8c1df74c99c6f5fc40b788ee6787f5e5b301e /vespalib | |
parent | 0f7ea6e2fc299d13266deb5c4c51622eb6128183 (diff) |
Always use array of AtomicEntryRef in unique store remapper.
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/tests/datastore/unique_store/unique_store_test.cpp | 23 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h | 8 |
2 files changed, 13 insertions, 18 deletions
diff --git a/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp b/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp index aa2d060d20b..17e7a4bb7ea 100644 --- a/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp +++ b/vespalib/src/tests/datastore/unique_store/unique_store_test.cpp @@ -119,24 +119,27 @@ struct TestBase : public ::testing::Test { } void compactWorst() { CompactionSpec compaction_spec(true, true); - CompactionStrategy compaction_strategy; + // Use a compaction strategy that will compact all active buffers + CompactionStrategy compaction_strategy(0.0, 0.0, EntryRefType::numBuffers(), 1.0); auto remapper = store.compact_worst(compaction_spec, compaction_strategy); - std::vector<EntryRef> refs; + std::vector<AtomicEntryRef> refs; for (const auto &elem : refStore) { - refs.push_back(elem.first); + refs.push_back(AtomicEntryRef(elem.first)); } - refs.push_back(EntryRef()); - std::vector<EntryRef> compactedRefs = refs; - remapper->remap(ArrayRef<EntryRef>(compactedRefs)); + refs.push_back(AtomicEntryRef()); + std::vector<AtomicEntryRef> compactedRefs = refs; + remapper->remap(ArrayRef<AtomicEntryRef>(compactedRefs)); remapper->done(); remapper.reset(); - ASSERT_FALSE(refs.back().valid()); + ASSERT_FALSE(refs.back().load_relaxed().valid()); refs.pop_back(); + ASSERT_FALSE(compactedRefs.back().load_relaxed().valid()); + compactedRefs.pop_back(); ReferenceStore compactedRefStore; for (size_t i = 0; i < refs.size(); ++i) { - ASSERT_EQ(0u, compactedRefStore.count(compactedRefs[i])); - ASSERT_EQ(1u, refStore.count(refs[i])); - compactedRefStore.insert(std::make_pair(compactedRefs[i], refStore[refs[i]])); + ASSERT_EQ(0u, compactedRefStore.count(compactedRefs[i].load_relaxed())); + ASSERT_EQ(1u, refStore.count(refs[i].load_relaxed())); + compactedRefStore.insert(std::make_pair(compactedRefs[i].load_relaxed(), refStore[refs[i].load_relaxed()])); } refStore = compactedRefStore; } diff --git a/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h b/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h index 47d52bf8991..80486f55ad8 100644 --- a/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h +++ b/vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h @@ -38,14 +38,6 @@ public: return mapped_ref; } - void remap(vespalib::ArrayRef<EntryRef> refs) const { - for (auto &ref : refs) { - if (ref.valid() && _compacting_buffer.has(ref)) { - ref = remap(ref); - } - } - } - void remap(vespalib::ArrayRef<AtomicEntryRef> refs) const { for (auto &atomic_ref : refs) { auto ref = atomic_ref.load_relaxed(); |