Restarting a node with unconfirmed txs - fault tolerance

+5 votes
We are testing Multichain as a DB for a system that will receive high load from IoT devices and I'm looking into testing its data fault tolerance.

When txs are received in a node (talking about streams) but not broadcasted yet (not confirmed/mined) and the node is stopped - what happens? When the node is started again - is the data still there (in the mempool) and does it get broadcasted automatically?

I would like to test these scenarios, but I am unsure how exactly, since the txs get confirmed and broadcasted immediately.

Could you give me some short answer on the questions above and maybe suggest how to test this scenario and its fault-tolerance?
asked Apr 11, 2018 by milkncookiez

1 Answer

+3 votes
Best answer
As soon as a node creates a transaction, that transaction is propagated across the network, even before it is confirmed/mined in a block. So this would only be an issue if the node stops in the split second between the new transaction entering the local memory pool, and it propagating to other nodes' memory pools.

Transactions are also stored locally on disk at the moment of creation, even before they are propagated, and will be reloaded from this store when the node restarts. However for performance reasons this on-disk storage is not flushed after every transaction, so if there's an OS-level issue (e.g. a power cut) it could still be lost.
answered Apr 15, 2018 by MultiChain
selected Apr 16, 2018 by milkncookiez
Thanks for the great answer. I like Multichain more and more, gathering such info. :D
I've got 2 questions though:
1. Is there some detailed info in the official tech documentation about how the transactions process flow, data storage and all that stuff works (like, a place where I could've read this info w/o the need of you telling me)?
2. I am not sure I understood the last part: the on-disk storage is not flushed but it can still be lost?