We had this bug in production. Attached file is a stress test I wrote to
reproduce and understand the issue.
import asyncore, logging, os, signal, shutil, sys, tempfile, time
import transaction
import ZODB
from ZODB.FileStorage import FileStorage
from ZODB.POSException import ConflictError
from ZO
Multi-threaded IO support, which is new to ZODB 3.10, allows clients to read
data (load & loadBefore) even after tpc_vote has started to write a new
transaction to disk. This is done by using different 'file' objects.
Issues start when a transaction is rolled back after data has been appended
(usi