[ https://issues.apache.org/jira/browse/QPID-6213?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gordon Sim updated QPID-6213: ----------------------------- Attachment: QPID-6213_suggested_further_fix.patch Since the purge() call may be called while still iterating over the queues in fired(), the task can indeed still be added more than once, though the window is now much smaller than before the initial fix. The attached patch should prevent this. It also incorporates the changes made by Chuck, though instead of a null pointer, I've just added a test as to whether any queues were in fact pushed. Andrew's suggested change would also work, but it would schedule the purging again whether or not the initial purge had completed in time (which was something I had wanted to avoid). I'm running through tests with this patch, but could not actually reproduce the problem. > qpidd misses heartbeats > ----------------------- > > Key: QPID-6213 > URL: https://issues.apache.org/jira/browse/QPID-6213 > Project: Qpid > Issue Type: Bug > Components: C++ Broker > Affects Versions: 0.30 > Reporter: Gordon Sim > Assignee: Gordon Sim > Fix For: 0.31 > > Attachments: > 0001-QPID-6213-Fix-misuse-of-Timer-in-Queue-cleaning-code.patch, > QPID-6213_suggested_further_fix.patch, qpid-6213-svn-01.patch, qpidd.log.gz > > > Caused by https://issues.apache.org/jira/browse/QPID-5758. Reproducer from > Pavel Moravec: create many heartbeat enabled connections and queues (e.g. 500 > idle receivers, each with their own queue) and have the purge interval > relatively short (to speed up reproducing). > The broker misses heartbeats and connections get timed out. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org