Make sure setOldestVersion has work to do in bench

This commit is contained in:
2024-02-23 14:41:05 -08:00
parent 305c218888
commit 438a2e2abc
2 changed files with 14 additions and 3 deletions

View File

@@ -787,13 +787,21 @@ template <class ConflictSet_> void benchConflictSet(const std::string &name) {
++iter;
}
while (version < kMvccWindow) {
auto v = ++version;
for (auto &w : writes) {
w.writeVersion = v;
}
cs.addWrites(writes.data(), writes.size());
}
bench.run(name + " (point writes)", [&]() {
auto v = ++version;
for (auto &w : writes) {
w.writeVersion = v;
}
cs.addWrites(writes.data(), writes.size());
cs.setOldestVersion(std::max<int64_t>(version - kMvccWindow, 0));
cs.setOldestVersion(version - kMvccWindow);
});
}
@@ -817,7 +825,7 @@ template <class ConflictSet_> void benchConflictSet(const std::string &name) {
w.writeVersion = v;
}
cs.addWrites(writes.data(), writes.size());
cs.setOldestVersion(std::max<int64_t>(version - kMvccWindow, 0));
cs.setOldestVersion(version - kMvccWindow);
});
}
@@ -841,7 +849,7 @@ template <class ConflictSet_> void benchConflictSet(const std::string &name) {
w.writeVersion = v;
}
cs.addWrites(writes.data(), writes.size());
cs.setOldestVersion(std::max<int64_t>(version - kMvccWindow, 0));
cs.setOldestVersion(version - kMvccWindow);
});
}
}

View File

@@ -1743,6 +1743,9 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
}
void setOldestVersion(int64_t oldestVersion) {
if (oldestVersion <= this->oldestVersion) {
return;
}
this->oldestVersion = oldestVersion;
Node *prev = firstGeq(root, removalKey).n;
// There's no way to erase removalKey without introducing a key after it