Description:
When TCKEY_FAILCONF arrives it sometimes meet a situation where the
NdbReceiver is already released, this leads to
goto InvalidSignal;
and no TC_COMMIT_ACK is sent.
This in turn can later lead to a new transaction with the same id
being executed and finds that the CommitAckMarker is still in the
hash table.
The reason that NdbReceiver is released seem to be that the API somehow
comes to the conclusion that the transaction is aborted whereas the
node failure handling discovers a transaction that committed although
a node failure happened.
How to repeat:
Run test case
ndb_binlog.ndb_binlog_testevent_rd with --repeat=30 --parallel=8
Suggested fix:
Ensure that TC_COMMIT_ACK is sent even when magic number is not correct
to ensure that the CommitAckMarker is released from hash table to avoid
a future crash.