Remove separate prefix write codepath for now

This commit is contained in:
2024-08-14 21:29:43 -07:00
parent 23c2a3e1c6
commit 73d0593fca

View File

@@ -800,7 +800,6 @@ struct WriteContext {
int64_t nodes_allocated;
int64_t nodes_released;
int64_t point_writes;
int64_t prefix_writes;
int64_t range_writes;
int64_t write_bytes;
} accum;
@@ -3188,55 +3187,6 @@ void fixupMaxVersion(Node *node, ConflictSet::Impl *impl, WriteContext *tls) {
setMaxVersion(node, impl, max);
}
void addPrefixWrite(Node *&root, std::span<const uint8_t> begin,
std::span<const uint8_t> end, InternalVersionT writeVersion,
WriteContext *tls, ConflictSet::Impl *impl) {
++tls->accum.prefix_writes;
int lcp = begin.size() - 1;
Node **useAsRoot =
insert(&root, begin.subspan(0, lcp), writeVersion, tls, impl);
auto *beginNode =
*insert(useAsRoot, begin.subspan(lcp, 1), writeVersion, tls, impl);
const bool insertedBegin = !beginNode->entryPresent;
addKey(beginNode);
beginNode->entryPresent = true;
if (insertedBegin) {
++tls->accum.entries_inserted;
auto *p = nextLogical(beginNode);
beginNode->entry.rangeVersion =
p == nullptr ? tls->zero : std::max(p->entry.rangeVersion, tls->zero);
beginNode->entry.pointVersion = writeVersion;
}
assert(writeVersion >= beginNode->entry.pointVersion);
beginNode->entry.pointVersion = writeVersion;
auto *endNode =
*insert(useAsRoot, end.subspan(lcp, 1), writeVersion, tls, impl);
const bool insertedEnd = !endNode->entryPresent;
addKey(endNode);
endNode->entryPresent = true;
if (insertedEnd) {
++tls->accum.entries_inserted;
auto *p = nextLogical(endNode);
endNode->entry.pointVersion =
p == nullptr ? tls->zero : std::max(p->entry.rangeVersion, tls->zero);
}
endNode->entry.rangeVersion = writeVersion;
eraseBetween(getInTree(beginNode, impl), 0, 256, tls);
// Inserting end trashed endNode's maxVersion. Fix that
fixupMaxVersion(endNode, impl, tls);
}
void addWriteRange(Node *&root, std::span<const uint8_t> begin,
std::span<const uint8_t> end, InternalVersionT writeVersion,
WriteContext *tls, ConflictSet::Impl *impl) {
@@ -3247,10 +3197,6 @@ void addWriteRange(Node *&root, std::span<const uint8_t> begin,
end.back() == 0) {
return addPointWrite(root, begin, writeVersion, tls, impl);
}
if (lcp == int(begin.size() - 1) && end.size() == begin.size() &&
int(begin.back()) + 1 == int(end.back())) {
return addPrefixWrite(root, begin, end, writeVersion, tls, impl);
}
++tls->accum.range_writes;
const bool beginIsPrefix = lcp == int(begin.size());
@@ -3457,7 +3403,6 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
memory_bytes.set(totalBytes);
point_writes_total.add(tls.accum.point_writes);
prefix_writes_total.add(tls.accum.prefix_writes);
range_writes_total.add(tls.accum.range_writes);
nodes_allocated_total.add(tls.accum.nodes_allocated);
nodes_released_total.add(tls.accum.nodes_released);
@@ -3656,7 +3601,6 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
"Total number of checks where the result is \"too old\"");
COUNTER(check_bytes_total, "Total number of key bytes checked");
COUNTER(point_writes_total, "Total number of point writes");
COUNTER(prefix_writes_total, "Total number of prefix writes");
COUNTER(range_writes_total, "Total number of range writes");
GAUGE(memory_bytes, "Total number of bytes in use");
COUNTER(nodes_allocated_total,