Hi,

continuing with my refactorings, I think I might have found additional failure 
scenarios that could happen with deserialization + multi transactions. 

first failure scenario:

MultiTxn creates two nodes, serialization sees only the first node but not the 
second. The zxid of the deserialized DataTree however is set to the MultiTxn, 
because deserialization saw the first created node and its zxid.

second failure scenario:

FileTxnSnapLog.restore contains a code block handling a NODEEXISTS failure 
during deserialization. The problem is explained there in a code comment. The 
code block however is only executed for a CREATE txn, not for a multiTxn 
containing a CREATE.

second failure scenario extended:

Even if the mentioned code block would also be executed for multi 
transactions, it needs adaption for multi transactions. What, if after the 
first failed transaction in a multi txn during deserialization, there would be 
subsequent transactions in the same multi that would also have failed?
We don't know, since the first failed transaction hides the information about 
the remaining transactions.

Regards,

Thomas Koch, http://www.koch.ro

Reply via email to