Even if transaction timeout is configured, transaction will not timeout if it's already in prepare state. It will be shown in log as pending transaction and can cause the whole cluster hang.
We need to add a mechanism that will properly timeout prepare and (if possible) finish futures.
Also we can create an event that will be fired if there is a transaction pending for a long time, showing which nodes we are waiting responses from. This will allow user to recover by stopping only these nodes instead of restarting the whole cluster.