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

Reply via email to