Home / IntersectMBO / lsm-tree
Sep 12, 12-1 PM (0)
Sep 12, 1-2 PM (0)
Sep 12, 2-3 PM (0)
Sep 12, 3-4 PM (0)
Sep 12, 4-5 PM (0)
Sep 12, 5-6 PM (1)
Sep 12, 6-7 PM (0)
Sep 12, 7-8 PM (0)
Sep 12, 8-9 PM (0)
Sep 12, 9-10 PM (0)
Sep 12, 10-11 PM (0)
Sep 12, 11-12 AM (0)
Sep 13, 12-1 AM (0)
Sep 13, 1-2 AM (0)
Sep 13, 2-3 AM (0)
Sep 13, 3-4 AM (0)
Sep 13, 4-5 AM (0)
Sep 13, 5-6 AM (0)
Sep 13, 6-7 AM (0)
Sep 13, 7-8 AM (0)
Sep 13, 8-9 AM (0)
Sep 13, 9-10 AM (0)
Sep 13, 10-11 AM (0)
Sep 13, 11-12 PM (0)
Sep 13, 12-1 PM (0)
Sep 13, 1-2 PM (0)
Sep 13, 2-3 PM (1)
Sep 13, 3-4 PM (0)
Sep 13, 4-5 PM (0)
Sep 13, 5-6 PM (0)
Sep 13, 6-7 PM (0)
Sep 13, 7-8 PM (0)
Sep 13, 8-9 PM (0)
Sep 13, 9-10 PM (0)
Sep 13, 10-11 PM (0)
Sep 13, 11-12 AM (0)
Sep 14, 12-1 AM (0)
Sep 14, 1-2 AM (0)
Sep 14, 2-3 AM (0)
Sep 14, 3-4 AM (0)
Sep 14, 4-5 AM (0)
Sep 14, 5-6 AM (0)
Sep 14, 6-7 AM (0)
Sep 14, 7-8 AM (0)
Sep 14, 8-9 AM (0)
Sep 14, 9-10 AM (0)
Sep 14, 10-11 AM (0)
Sep 14, 11-12 PM (0)
Sep 14, 12-1 PM (0)
Sep 14, 1-2 PM (0)
Sep 14, 2-3 PM (0)
Sep 14, 3-4 PM (0)
Sep 14, 4-5 PM (0)
Sep 14, 5-6 PM (0)
Sep 14, 6-7 PM (0)
Sep 14, 7-8 PM (0)
Sep 14, 8-9 PM (0)
Sep 14, 9-10 PM (0)
Sep 14, 10-11 PM (0)
Sep 14, 11-12 AM (0)
Sep 15, 12-1 AM (0)
Sep 15, 1-2 AM (0)
Sep 15, 2-3 AM (0)
Sep 15, 3-4 AM (0)
Sep 15, 4-5 AM (0)
Sep 15, 5-6 AM (0)
Sep 15, 6-7 AM (0)
Sep 15, 7-8 AM (0)
Sep 15, 8-9 AM (0)
Sep 15, 9-10 AM (0)
Sep 15, 10-11 AM (0)
Sep 15, 11-12 PM (0)
Sep 15, 12-1 PM (0)
Sep 15, 1-2 PM (0)
Sep 15, 2-3 PM (0)
Sep 15, 3-4 PM (0)
Sep 15, 4-5 PM (0)
Sep 15, 5-6 PM (0)
Sep 15, 6-7 PM (0)
Sep 15, 7-8 PM (0)
Sep 15, 8-9 PM (0)
Sep 15, 9-10 PM (0)
Sep 15, 10-11 PM (0)
Sep 15, 11-12 AM (0)
Sep 16, 12-1 AM (0)
Sep 16, 1-2 AM (0)
Sep 16, 2-3 AM (0)
Sep 16, 3-4 AM (0)
Sep 16, 4-5 AM (0)
Sep 16, 5-6 AM (0)
Sep 16, 6-7 AM (0)
Sep 16, 7-8 AM (0)
Sep 16, 8-9 AM (0)
Sep 16, 9-10 AM (0)
Sep 16, 10-11 AM (0)
Sep 16, 11-12 PM (0)
Sep 16, 12-1 PM (0)
Sep 16, 1-2 PM (1)
Sep 16, 2-3 PM (0)
Sep 16, 3-4 PM (0)
Sep 16, 4-5 PM (0)
Sep 16, 5-6 PM (0)
Sep 16, 6-7 PM (0)
Sep 16, 7-8 PM (0)
Sep 16, 8-9 PM (0)
Sep 16, 9-10 PM (0)
Sep 16, 10-11 PM (0)
Sep 16, 11-12 AM (0)
Sep 17, 12-1 AM (0)
Sep 17, 1-2 AM (0)
Sep 17, 2-3 AM (0)
Sep 17, 3-4 AM (0)
Sep 17, 4-5 AM (0)
Sep 17, 5-6 AM (0)
Sep 17, 6-7 AM (0)
Sep 17, 7-8 AM (0)
Sep 17, 8-9 AM (0)
Sep 17, 9-10 AM (1)
Sep 17, 10-11 AM (0)
Sep 17, 11-12 PM (0)
Sep 17, 12-1 PM (1)
Sep 17, 1-2 PM (0)
Sep 17, 2-3 PM (0)
Sep 17, 3-4 PM (0)
Sep 17, 4-5 PM (0)
Sep 17, 5-6 PM (0)
Sep 17, 6-7 PM (0)
Sep 17, 7-8 PM (0)
Sep 17, 8-9 PM (0)
Sep 17, 9-10 PM (0)
Sep 17, 10-11 PM (0)
Sep 17, 11-12 AM (0)
Sep 18, 12-1 AM (0)
Sep 18, 1-2 AM (0)
Sep 18, 2-3 AM (0)
Sep 18, 3-4 AM (0)
Sep 18, 4-5 AM (0)
Sep 18, 5-6 AM (0)
Sep 18, 6-7 AM (0)
Sep 18, 7-8 AM (0)
Sep 18, 8-9 AM (0)
Sep 18, 9-10 AM (0)
Sep 18, 10-11 AM (0)
Sep 18, 11-12 PM (0)
Sep 18, 12-1 PM (4)
Sep 18, 1-2 PM (0)
Sep 18, 2-3 PM (0)
Sep 18, 3-4 PM (0)
Sep 18, 4-5 PM (0)
Sep 18, 5-6 PM (0)
Sep 18, 6-7 PM (0)
Sep 18, 7-8 PM (0)
Sep 18, 8-9 PM (0)
Sep 18, 9-10 PM (0)
Sep 18, 10-11 PM (0)
Sep 18, 11-12 AM (0)
Sep 19, 12-1 AM (0)
Sep 19, 1-2 AM (0)
Sep 19, 2-3 AM (0)
Sep 19, 3-4 AM (0)
Sep 19, 4-5 AM (0)
Sep 19, 5-6 AM (0)
Sep 19, 6-7 AM (0)
Sep 19, 7-8 AM (0)
Sep 19, 8-9 AM (0)
Sep 19, 9-10 AM (1)
Sep 19, 10-11 AM (0)
Sep 19, 11-12 PM (0)
Sep 19, 12-1 PM (0)
10 commits this week Sep 12, 2024 - Sep 19, 2024
Enable Blobs in many tests, including StateMachine tests
Only one fix in the code is needed, for the NoThunks test.

The state machine test found two non-trivial differences between the
spec and the model in relation to blobs:
1. blob retrieval after snapshot fails
2. blob retrieval after failed-snapshot (due to duplicate name) fails

The reason for both of these is that the implementation currently works
by modifying flushing the write buffer to disk, and modifing the table
handle to use the updated set of runs and now-empty write buffer. This
invalidates all blob references from the write buffer itself.

For the moment I have "fixed" this difference by changing the model to
behave like the implementation. For the TODO task to fix this, see
https://github.com/IntersectMBO/lsm-tree/issues/392
Wire up BlobRefs from write buffer lookups
Previously WB.lookup would return type WeakBlobRef m h (which is the
convenient type), but would actually throw an error. Now it returns
BlobSpan but works. The caller then needs to convert from BlobSpan to
WeakBlobRef (and then wrap that into the public API's BlobRef type).

Also adjust the WBB.mkBlobRef to be a monadic action returning a pure
function. This makes it more convenient to use in the lookup code to
convert results using BlobSpan into results using WeakBlobRef. This
works but it's not terribly pretty.

Some reorganisation here would be good, to reduce and combine
conversions to reduce allocations.