Good evening from Germany.
The LMDB "Caveats" documentation mentions:
> Avoid suspending a process with active transactions. These would then be
> "long-lived" as above. Also read transactions suspended when writers commit
> could sometimes see wrong data.
Questions:
- What does "wrong data" mean? What guarantees are broken?
Is potentially undefined behaviour ("read returns junk"), or isolation
weakening ("transaction reads value actually written after the transaction
started"), or something else?
- If I do find myself in that unfortunate situation, how screwed am I?
For example, say someone spelled SIGSTP wrong, and suspended my program with
an uncatchable SIGSTOP instead, and so I could not wait for transactions to
complete before being suspended. My program simply catches a SIGCONT, with
transactions in flight. What can it do to maintain correctness?
Guidance kindly appreciated.
-- Antti