Description
XATransactionID hash function may generate duplicates.
Scenario:
XID formatId, GlobalTransaction, and BranchQualifier values are identical for many entries. We need to use a better hash function to avoid populating a map with many entries in the same bucket (results in bucket having O performance on recovery).
Example using existing Hash Function:
2018-07-18 06:13:29,866 | INFO | Recovering from the journal @1:28 | org.apache.activemq.store.kahadb.MessageDatabase | main
2018-07-18 06:23:04,070 | INFO | @2:484592, 100000 entries recovered .. | org.apache.activemq.store.kahadb.MessageDatabase | main
2018-07-18 06:23:04,099 | INFO | Recovery replayed 100453 operations from the journal in 574.233 seconds. | org.apache.activemq.store.kahadb.MessageDatabase | main
Using JenkinsHash:
2018-07-18 10:58:43,713 | INFO | Recovering from the journal @1:28 | org.apache.activemq.store.kahadb.MessageDatabase | main
2018-07-18 10:58:51,302 | INFO | @2:484592, 100000 entries recovered .. | org.apache.activemq.store.kahadb.MessageDatabase | main
2018-07-18 10:58:51,329 | INFO | Recovery replayed 100453 operations from the journal in 7.618 seconds. | org.apache.activemq.store.kahadb.MessageDatabase | main