fjall icon indicating copy to clipboard operation
fjall copied to clipboard

Insert-during-iterate deadlock

Open marvin-j97 opened this issue 6 months ago • 0 comments

Discussed in https://github.com/fjall-rs/fjall/discussions/73

Originally posted by dbbnrl August 3, 2024 In my application I sometimes generate DB entries from existing entries. The pattern is that I iterate over a range of existing keys, occasionally creating new entries (outside the iterator range) as I go.

It looks like Fjall is deadlocking in this scenario after some number of insertions. I thought perhaps using the snapshot feature would help, but it makes no difference.

Glancing at the code, I can see that create_iter takes a bunch of Read locks which it holds until the iterator is dropped. Presumably the insert code is attempting to grab a Write lock at some point (memtable flush?) so this isn't a surprising outcome...

I thought about reporting this as an issue but if this kind of usage is an explicit non-goal of Fjall I didn't want to do that.

Is this supported? Supportable?

marvin-j97 avatar Aug 03 '24 12:08 marvin-j97