The patch i provided doesn't solve the ordering. But i have tested a real fix. This problem is also causing the topic session test to fail. Will fix all branches tomorrow.
On 13/09/2007, Rafael H. Schloming (JIRA) <[email protected]> wrote: > > [ > https://issues.apache.org/jira/browse/QPID-572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12527194 > ] > > Rafael H. Schloming commented on QPID-572: > ------------------------------------------ > > I'm now seeing the same failur on the M2 branch as I saw on the trunk when I > tried the same fix originally. In particular I am now reliably seeing the > following failure in TopicSessionTest: > > junit.framework.AssertionFailedError > at junit.framework.Assert.fail(Assert.java:47) > at junit.framework.Assert.assertTrue(Assert.java:20) > at junit.framework.Assert.assertNotNull(Assert.java:220) > at junit.framework.Assert.assertNotNull(Assert.java:213) > at > org.apache.qpid.test.unit.topic.TopicSessionTest.testNoLocal(TopicSessionTest.java:338) > > It occurs reliably when I run the full suite of client tests, however it > does not occur when I run TopicSessionTest on its own. I believe this is > because selectors do not function properly when there are messages queued > for asynchronous delivery, and this change makes that situation more likely. > > > broker delivers messages out of order > > ------------------------------------- > > > > Key: QPID-572 > > URL: https://issues.apache.org/jira/browse/QPID-572 > > Project: Qpid > > Issue Type: Bug > > Components: Java Broker > > Affects Versions: M2, M2.1, M3 > > Reporter: Rafael H. Schloming > > Attachments: QPID-572-testcase.patch > > > > > > ConcurrentSelectorDeliveryManager will sometimes deliver messages out of > order. This is caused by the code in deliver(...) that attempts to > short-circuit message queuing when there is an available subscription. This > code can result in the currently published message skipping ahead of queued > messages causing out of order delivery. Although unrelated to transactions, > I have observed this failure occuring in TransactedTest both in testCommit > and testRollback. Normally it does not happen very frequently, however > placing a Thread.sleep(500) in the async delivery thread will cause the > failure to occur almost all the time. > > I tried fixing the problem by only attempting synchronous delivery when > there are no queued messages, however this appears to break other tests that > use selectors. This makes me suspect that the selector implementation is > somehow incorrectly coupled to synchronous delivery. > > I have only verfied this issue on the trunk, however I believe it effects > M2 as well. > > -- > This message is automatically generated by JIRA. > - > You can reply to this email to add a comment to the issue online. > > -- Martin Ritchie
