-
Type:
Bug
-
Status: Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 5.10.0
-
Fix Version/s: 5.11.0
-
Component/s: Message Store
With multiple concurrent producer transactions and active fast consumers it is possible to get out of order db insertions and scans resulting in a skipped dispatch. This scenario is exacerbated when the cursor cache is disabled because every dispatch will potentially result in a scan.
the JDBC store maps jms transaction to jdbc connection transactions at the point of a commit and these can occur in parallel. The broker tracks a sequenceId to ensure ordering relative to a jms connection and scans respect that order but there is currently nothing to stop a scan seeing a later sequence before an earlier sequence is stored. In other words, inserts can race, but the reader needs to limit a read to the lowest outstanding sequence.
On a restart, any stuck messages will be replayed correctly, because the cursor transient state w.r.t to the last sequence id read will be reset.
- relates to
-
AMQ-6164 queue sendLock prevents concurrent journal updates
-
- Resolved
-