summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahooinc.com>2022-03-17 13:46:17 +0100
committerTor Egge <Tor.Egge@yahooinc.com>2022-03-17 13:46:17 +0100
commitc87f765f822b10e85a0049c5b7b830b6e5d5bd4e (patch)
tree32c8c1df74c99c6f5fc40b788ee6787f5e5b301e /vespalib
parent0f7ea6e2fc299d13266deb5c4c51622eb6128183 (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.cpp23
-rw-r--r--vespalib/src/vespa/vespalib/datastore/unique_store_remapper.h8
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();