Use the right initial nominal debt and credit for incomming runs
Home /
Input Output /
lsm-tree
Feb 15, 3-4 AM (0)
Feb 15, 4-5 AM (0)
Feb 15, 5-6 AM (0)
Feb 15, 6-7 AM (0)
Feb 15, 7-8 AM (0)
Feb 15, 8-9 AM (0)
Feb 15, 9-10 AM (0)
Feb 15, 10-11 AM (0)
Feb 15, 11-12 PM (0)
Feb 15, 12-1 PM (0)
Feb 15, 1-2 PM (0)
Feb 15, 2-3 PM (0)
Feb 15, 3-4 PM (0)
Feb 15, 4-5 PM (0)
Feb 15, 5-6 PM (0)
Feb 15, 6-7 PM (0)
Feb 15, 7-8 PM (0)
Feb 15, 8-9 PM (0)
Feb 15, 9-10 PM (0)
Feb 15, 10-11 PM (0)
Feb 15, 11-12 AM (0)
Feb 16, 12-1 AM (0)
Feb 16, 1-2 AM (0)
Feb 16, 2-3 AM (0)
Feb 16, 3-4 AM (0)
Feb 16, 4-5 AM (0)
Feb 16, 5-6 AM (0)
Feb 16, 6-7 AM (0)
Feb 16, 7-8 AM (0)
Feb 16, 8-9 AM (0)
Feb 16, 9-10 AM (0)
Feb 16, 10-11 AM (0)
Feb 16, 11-12 PM (0)
Feb 16, 12-1 PM (0)
Feb 16, 1-2 PM (0)
Feb 16, 2-3 PM (0)
Feb 16, 3-4 PM (0)
Feb 16, 4-5 PM (0)
Feb 16, 5-6 PM (0)
Feb 16, 6-7 PM (0)
Feb 16, 7-8 PM (0)
Feb 16, 8-9 PM (0)
Feb 16, 9-10 PM (0)
Feb 16, 10-11 PM (0)
Feb 16, 11-12 AM (0)
Feb 17, 12-1 AM (0)
Feb 17, 1-2 AM (0)
Feb 17, 2-3 AM (0)
Feb 17, 3-4 AM (0)
Feb 17, 4-5 AM (0)
Feb 17, 5-6 AM (0)
Feb 17, 6-7 AM (0)
Feb 17, 7-8 AM (0)
Feb 17, 8-9 AM (0)
Feb 17, 9-10 AM (0)
Feb 17, 10-11 AM (6)
Feb 17, 11-12 PM (5)
Feb 17, 12-1 PM (3)
Feb 17, 1-2 PM (8)
Feb 17, 2-3 PM (1)
Feb 17, 3-4 PM (4)
Feb 17, 4-5 PM (0)
Feb 17, 5-6 PM (0)
Feb 17, 6-7 PM (0)
Feb 17, 7-8 PM (0)
Feb 17, 8-9 PM (1)
Feb 17, 9-10 PM (1)
Feb 17, 10-11 PM (0)
Feb 17, 11-12 AM (0)
Feb 18, 12-1 AM (0)
Feb 18, 1-2 AM (0)
Feb 18, 2-3 AM (0)
Feb 18, 3-4 AM (0)
Feb 18, 4-5 AM (0)
Feb 18, 5-6 AM (0)
Feb 18, 6-7 AM (0)
Feb 18, 7-8 AM (0)
Feb 18, 8-9 AM (0)
Feb 18, 9-10 AM (0)
Feb 18, 10-11 AM (0)
Feb 18, 11-12 PM (0)
Feb 18, 12-1 PM (0)
Feb 18, 1-2 PM (0)
Feb 18, 2-3 PM (4)
Feb 18, 3-4 PM (5)
Feb 18, 4-5 PM (6)
Feb 18, 5-6 PM (2)
Feb 18, 6-7 PM (0)
Feb 18, 7-8 PM (0)
Feb 18, 8-9 PM (0)
Feb 18, 9-10 PM (0)
Feb 18, 10-11 PM (0)
Feb 18, 11-12 AM (0)
Feb 19, 12-1 AM (0)
Feb 19, 1-2 AM (0)
Feb 19, 2-3 AM (0)
Feb 19, 3-4 AM (0)
Feb 19, 4-5 AM (0)
Feb 19, 5-6 AM (0)
Feb 19, 6-7 AM (0)
Feb 19, 7-8 AM (0)
Feb 19, 8-9 AM (0)
Feb 19, 9-10 AM (0)
Feb 19, 10-11 AM (1)
Feb 19, 11-12 PM (1)
Feb 19, 12-1 PM (2)
Feb 19, 1-2 PM (2)
Feb 19, 2-3 PM (12)
Feb 19, 3-4 PM (1)
Feb 19, 4-5 PM (13)
Feb 19, 5-6 PM (0)
Feb 19, 6-7 PM (0)
Feb 19, 7-8 PM (0)
Feb 19, 8-9 PM (0)
Feb 19, 9-10 PM (0)
Feb 19, 10-11 PM (0)
Feb 19, 11-12 AM (0)
Feb 20, 12-1 AM (0)
Feb 20, 1-2 AM (0)
Feb 20, 2-3 AM (0)
Feb 20, 3-4 AM (0)
Feb 20, 4-5 AM (0)
Feb 20, 5-6 AM (0)
Feb 20, 6-7 AM (0)
Feb 20, 7-8 AM (6)
Feb 20, 8-9 AM (1)
Feb 20, 9-10 AM (2)
Feb 20, 10-11 AM (8)
Feb 20, 11-12 PM (8)
Feb 20, 12-1 PM (1)
Feb 20, 1-2 PM (1)
Feb 20, 2-3 PM (0)
Feb 20, 3-4 PM (0)
Feb 20, 4-5 PM (0)
Feb 20, 5-6 PM (0)
Feb 20, 6-7 PM (1)
Feb 20, 7-8 PM (0)
Feb 20, 8-9 PM (0)
Feb 20, 9-10 PM (0)
Feb 20, 10-11 PM (0)
Feb 20, 11-12 AM (0)
Feb 21, 12-1 AM (0)
Feb 21, 1-2 AM (0)
Feb 21, 2-3 AM (0)
Feb 21, 3-4 AM (0)
Feb 21, 4-5 AM (0)
Feb 21, 5-6 AM (0)
Feb 21, 6-7 AM (0)
Feb 21, 7-8 AM (0)
Feb 21, 8-9 AM (0)
Feb 21, 9-10 AM (1)
Feb 21, 10-11 AM (4)
Feb 21, 11-12 PM (0)
Feb 21, 12-1 PM (1)
Feb 21, 1-2 PM (1)
Feb 21, 2-3 PM (3)
Feb 21, 3-4 PM (1)
Feb 21, 4-5 PM (4)
Feb 21, 5-6 PM (1)
Feb 21, 6-7 PM (0)
Feb 21, 7-8 PM (0)
Feb 21, 8-9 PM (0)
Feb 21, 9-10 PM (0)
Feb 21, 10-11 PM (0)
Feb 21, 11-12 AM (0)
Feb 22, 12-1 AM (0)
Feb 22, 1-2 AM (0)
Feb 22, 2-3 AM (0)
Feb 22, 3-4 AM (0)
122 commits this week
Feb 15, 2025
-
Feb 22, 2025
Add and use new snapshotIncommingRun to improve encapsulation
So the snapshot code doesn't have to poke at the representation directly.
Make MergingRun.newCompleted set the spent credits correctly
They should equal the merge debt. This should enable a full round trip of all the table handle structure and metadata including merge credits, including in the case of preserving known credits of completed merges. This is not currently tested, but it ought to be.
Convert immediatelyCompleteIncomingRun to use SupplyAbsolute
Make the code pass HLint
Extend supplyCredits to support relative or absolute values
We can specify a deposit relative to the existing balance, or specify a target new absolute balance. The latter will be useful once we do scaling from nominal ro physical credits. Also update comments about credits and the prototype (now that the prototype got updated).
Make the code pass HLint
Remove compact-index key bias where it is not needed
QLS: add `prop_noSwallowedExceptions`
This property runs a sequence of state machine actions where the last action definitely injects errors, at which point we can check if no errors are swallowed. See the documentation of `prop_noSwallowedExceptions` for more information. The property is currently expected to fail.
Switch class law tests of `SerialisedKey` to `RawBytes`
WIP: improve shrinking, fix bugs exposed by new swallowed exceptions test
QLS: make property cleanup checks configurable.
If injected errors left the database in an inconsistent state, then property cleanup might throw exceptions. In the "swallow error" tests that will be added in the next commits, this inconsistent state is allowed, leading to exceptions, but we do not want these exceptions to cause the property to fail. The 'CheckCleanup' flag makes it configurable to ignore these exceptions.
QLS: make file system and reference checks configurable
When we start testing that errors are not swallowed by `lsm-tree`, we'll be injecting errors into bits of code that are not exception safe (yet). As a result, the file system and reference checks would lead to property failures. However, we just want to test that errors are not swallowed, so we make these checks configurable. File system checks and reference checks can enabled/disabled independently.
SUGGESTION: tabulate tree size and depth
SUGGESTION: tabulate tree size and depth
QLS: give all actions errors
Instead of adding `Maybe Errors` to each constructor, which would probably lead to quite a bit of duplicated code, I opted to add a single top-level constructor that contains a `Maybe Errors` and an `Action'`. This `Action'` is a new data type that contains the interesting constructors, like `New` and `Updates`. As a result of this change, there quite a few mechanical changes, but not much of it is interesting. However, having made this change, we are now ready to enable fault injection for all the actions whenever we want to.
WIP: improve shrinking, fix bugs exposed by new swallowed exceptions test
Further extend and tweak the credit tracking commentary
Remove two SuppliedCredits newtypes that were not pulling their weight
Introduce a MergeDebt newtype and use it instead of NumEntries
In particular, change MergingRun from storing NumEntries to storing MergeDebt, and use this in constructors and snapshot functions. This also changes the snapshot representation to use MergeDebt instead of NumEntries.
Merge pull request #564 from IntersectMBO/wenkokke/issue558
feat(issue558): test silent snapshot corruption
fix: make requested changes from PR review
In addition to minor changes, this commit makes the following changes: - Add classification of snapshot corruption exceptions in tests. - Fix snapshot corruption to be hardlink safe. - Clamp choice of bit-to-corrupt to avoid overflow. - Add more specific tagging in statemachine tests.
feat(issue558): add corruptSnapshot to IsTable
feat(issue558): add snapshot corruption to state machine tests
refactor(issue558): extract flipRandomBitInRandomFile from prop_flipSnapshotBit