TransactionLogger Not Unlocked/Disabled
---------------------------------------
Key: ISPN-1100
URL:
https://issues.jboss.org/browse/ISPN-1100
Project: Infinispan
Issue Type: Bug
Components: Distributed Cache
Affects Versions: 4.2.1.FINAL
Reporter: Shane Johnson
Assignee: Manik Surtani
If rehashing is DISABLED, the transaction logger is NOT unlocked and disabled for sender /
receivers.
Typically the process is as follows:
1) Enable the transaction logger. (DistributionManagerImpl.rehash)
2) Submit InvertedLeaveTask. (DistributionManagerImpl.rehash)
3) Block new transactions if this is a receiver. (InvertedLeaveTask.performRehash)
4) Process / Drain transaction log if this is a sender. (InvertedLeaveTask.performRehash)
5) Unblock new transactions if this is a receiver.
The problem is that step 4 is only performed if rehashing is enabled. This is the step
that eventually unlocks and disables the transaction logger.
Our temporary fix was to add an 'else' block that called
'processAndDrainTxLog'.
if (configuration.isRehashEnabled()) {
...
}
else {
processAndDrainTxLog(oldCH, newCH, replCount);
}
So far, it seems to be working. Our cluster is stable.
Of note is that we did not keep the 'isSender' check. When we used it, the
transaction log remained enabled on any node that was ONLY a receiver.
I suspect this is because during a standard rehash the RemoteTransactionLogger sends a
RehashControlCommand that ultimately unlocks and disables the transaction logger? This
would place the responsibility on the sender and ensure that ALL receivers do so.
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira