I'm trying to understand the behavior of memtable when writes/flush operations
are going on in parallel.
In my understanding, once a memtable is full it is queued for flushing and a
new memtable is created for ongoing write operations.
However, I was looking at the code and it looks like the OpOrder class is used
(don't understand all details) to ensure the synchronization between producers
(writes) and consumers (batch flushes).
So I am a bit confused about when exactly it is needed. There will always be
only one latest memtable for write operations and all old memtables are flushed
so where this producer/consumer interaction on the same memtable is needed?