-
Notifications
You must be signed in to change notification settings - Fork 266
P-Tree mutatation operations must hand in ValueReader (if any) to sequenceChunker.Done() #2220
Comments
@rafael-atticlabs you might want to take a look |
looking now. |
So far I'm failing to get nomsfs working. I get "Mount failed: no FUSE devices found". I've tried installing the osxfuse installer (https://osxfuse.github.io/) (both 2.8.3 & 3.4.1) as well as homebrew osxfuse-beta. I must be missing some simple step. Any idea, ahl? |
I'll be in tomorrow morning. Let's look at it then? Miraculously this fuse stuff has basically just worked for me to this point.
|
sgtm. |
The issue here is that the chunking code was errorenously only handling two cases: (1) when a p-tree is constructed and eagerly written to a ValueStore and (2) when constructed in memory. The third case of being mutated and possibly not entirely loaded into memory isn't correctly handled. In List/Set/Map/Blob, the sequenceChunker which is created must be handed any existing ValueReader available on the root sequence into Done(). Not that the following assert is wrong and should be removed: https://github.com/attic-labs/noms/blob/master/go/types/sequence_chunker.go#L205 I haven't tried it but I'm fairly sure that the following test will currently fail and doing the above should fix:
|
This is reproducible but requires this dataset http://demo.noms.io/ahl::bug2213 and my fuse branch https://github.com/ahl/noms/tree/nomsfs as well as fuse (e.g. osxfuse).
removing
b
from the root of that filesystem causes the following panic:The relevant call chain is
Map.Remove()
->Map.splice()
->sequenceChunker.Done()
and thevr ValueReader
parameter toDone()
isnil
. We crash in the recursive call tosequenceChunker.Done()
at line 241 sincevr
isnil
.The text was updated successfully, but these errors were encountered: