Update InternalVersionT::zero in addWrite call
All checks were successful
Tests / Clang total: 1534, passed: 1534
Clang |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Debug total: 1532, passed: 1532
Tests / SIMD fallback total: 1534, passed: 1534
Tests / Release [gcc] total: 1534, passed: 1534
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 1144, passed: 1144
Tests / Coverage total: 1152, passed: 1152
Code Coverage #### Project Overview
No changes detected, that affect the code coverage.
* Line Coverage: 98.81% (1740/1761)
* Branch Coverage: 64.01% (1526/2384)
* Complexity Density: 0.00
* Lines of Code: 1761
#### Quality Gates Summary
Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
All checks were successful
Tests / Clang total: 1534, passed: 1534
Clang |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Debug total: 1532, passed: 1532
Tests / SIMD fallback total: 1534, passed: 1534
Tests / Release [gcc] total: 1534, passed: 1534
GNU C Compiler (gcc) |Total|New|Outstanding|Fixed|Trend
|:-:|:-:|:-:|:-:|:-:
|0|0|0|0|:clap:
Tests / Release [gcc,aarch64] total: 1144, passed: 1144
Tests / Coverage total: 1152, passed: 1152
Code Coverage #### Project Overview
No changes detected, that affect the code coverage.
* Line Coverage: 98.81% (1740/1761)
* Branch Coverage: 64.01% (1526/2384)
* Complexity Density: 0.00
* Lines of Code: 1761
#### Quality Gates Summary
Output truncated.
weaselab/conflict-set/pipeline/head This commit looks good
There can be other conflict sets in the same thread
This commit is contained in:
@@ -3177,6 +3177,11 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addWrites(const WriteRange *writes, int count, int64_t writeVersion) {
|
void addWrites(const WriteRange *writes, int count, int64_t writeVersion) {
|
||||||
|
// There could be other conflict sets in the same thread. We need
|
||||||
|
// InternalVersionT::zero to be correct for this conflict set for the
|
||||||
|
// lifetime of the current call frame.
|
||||||
|
InternalVersionT::zero = oldestVersion;
|
||||||
|
|
||||||
assert(writeVersion >= newestVersionFullPrecision);
|
assert(writeVersion >= newestVersionFullPrecision);
|
||||||
|
|
||||||
if (writeVersion > newestVersionFullPrecision + kNominalVersionWindow) {
|
if (writeVersion > newestVersionFullPrecision + kNominalVersionWindow) {
|
||||||
|
@@ -56,6 +56,20 @@ def test_conflict_set():
|
|||||||
assert cs.check(read(0, key), read(1, key)) == [Result.TOO_OLD, Result.COMMIT]
|
assert cs.check(read(0, key), read(1, key)) == [Result.TOO_OLD, Result.COMMIT]
|
||||||
|
|
||||||
|
|
||||||
|
def test_update_zero():
|
||||||
|
with DebugConflictSet() as cs1:
|
||||||
|
with DebugConflictSet() as cs2:
|
||||||
|
cs1.addWrites(2, write(b""))
|
||||||
|
cs1.setOldestVersion(2)
|
||||||
|
# "zero" is now 2
|
||||||
|
|
||||||
|
# make a Node48
|
||||||
|
for i in range(256 - 17, 256):
|
||||||
|
cs2.addWrites(int(1), write(bytes([i])))
|
||||||
|
# Scan until first point write
|
||||||
|
cs2.check(read(0, b"\x00", bytes([256 - 17])))
|
||||||
|
|
||||||
|
|
||||||
def test_inner_full_words():
|
def test_inner_full_words():
|
||||||
with DebugConflictSet() as cs:
|
with DebugConflictSet() as cs:
|
||||||
cs.addWrites(1, write(b"\x3f\x61"), write(b"\x81\x61"))
|
cs.addWrites(1, write(b"\x3f\x61"), write(b"\x81\x61"))
|
||||||
|
Reference in New Issue
Block a user