[
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: [email protected]
For additional commands, e-mail: [email protected]