forked from weaselab/conflict-set
Interface change! Allow decreasing setOldestVersion
This commit is contained in:
+3
-7
@@ -3204,11 +3204,7 @@ Iterator firstGeqLogical(Node *n, const std::span<const uint8_t> key) {
|
||||
} else {
|
||||
n = nextSibling(n);
|
||||
if (n == nullptr) {
|
||||
// This line is genuinely unreachable from any entry point of the
|
||||
// final library, since we can't remove a key without introducing a
|
||||
// key after it, and the only production caller of firstGeq is for
|
||||
// resuming the setOldestVersion scan.
|
||||
return {nullptr, 1}; // GCOVR_EXCL_LINE
|
||||
return {nullptr, 1};
|
||||
}
|
||||
goto downLeftSpine;
|
||||
}
|
||||
@@ -3489,8 +3485,8 @@ void checkVersionsGeqOldestExtant(Node *n,
|
||||
assert(m >= oldestExtantVersion);
|
||||
}
|
||||
} break;
|
||||
default: // GCOVR_EXCL_LINE
|
||||
__builtin_unreachable(); // GCOVR_EXCL_LINE
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -634,7 +634,9 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
||||
}
|
||||
|
||||
void setOldestVersion(int64_t oldestVersion) {
|
||||
assert(oldestVersion >= this->oldestVersion);
|
||||
if (oldestVersion < this->oldestVersion) {
|
||||
return;
|
||||
}
|
||||
this->oldestVersion = oldestVersion;
|
||||
SkipList::Finger finger;
|
||||
int temp;
|
||||
|
||||
@@ -77,8 +77,8 @@ struct __attribute__((__visibility__("default"))) ConflictSet {
|
||||
* versions. */
|
||||
void addWrites(const WriteRange *writes, int count, int64_t writeVersion);
|
||||
|
||||
/** Reads where readVersion < oldestVersion will result in `TooOld`. Must be
|
||||
* greater than or equal to all previous oldest versions. */
|
||||
/** Reads where readVersion < oldestVersion will result in `TooOld`. Ignored
|
||||
* if not greater than or equal to all previous oldest versions. */
|
||||
void setOldestVersion(int64_t oldestVersion);
|
||||
|
||||
/** Reads where readVersion < oldestVersion will result in `TooOld`. There are
|
||||
|
||||
Reference in New Issue
Block a user