[
https://issues.apache.org/jira/browse/QPID-8577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17494759#comment-17494759
]
ASF GitHub Bot commented on QPID-8577:
--------------------------------------
pjfawcett commented on pull request #29:
URL: https://github.com/apache/qpid-cpp/pull/29#issuecomment-1044902513
I haven't been able to determine the specific reason why the tests were
failing. I am having difficulty running the HA tests locally (Perhaps my
machine is a little underpowered for running a failover cluster).
However, if I removed the code I had put in to call `abort_pending()` then
the tests passed. Perhaps it those calls were interfering with the
synchronisation between members of the HA cluster.
I have left in the check for NULL when processing the pending
acknowledgements and so this PR still achieves the original aim of preventing
the SegFaults I had encountered.
I hope it can now be considered for merging. I will squash the commits in
preparation.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
> problems when delivering to full queues using AMQP 1.0
> ------------------------------------------------------
>
> Key: QPID-8577
> URL: https://issues.apache.org/jira/browse/QPID-8577
> Project: Qpid
> Issue Type: Bug
> Components: C++ Broker
> Affects Versions: qpid-cpp-1.39.0
> Reporter: Pete Fawcett
> Priority: Major
>
> Problems have been observed when sending messages to the broker using AMQP
> 1.0.
> The problems occur if the the messages being sent are routed to an output
> queue but cannot be delivered to the queue because of size limits defined on
> the queue.
> In certain circumstances this scenario can result in the broker crashing with
> a segmentation fault.
> When a message cannot be delivered to a queue, due to insufficient space, an
> exception is thrown. This results in the link being closed and an error
> returned to the client.
> If previous messages sent from the client have activated "flow control" (due
> to the queue getting close to full) then the acknowledgments (acks) for those
> messages are held as "pending" in the owning session. When messages are
> removed from the destination queue, and flow control allows flow to restart,
> the session attempts to deliver the pending acks.
> If there has been a link failure, then the pending acks are no longer valid -
> the pointer to the owning link has been reset to NULL. The current code
> doesn't check the validity of the link pointer and causes a Seg Fault when it
> tries to send the acks,
> The proposal is to address this problem in two phases:
> * Phase One
> ** Add defensive code to prevent Seg Fault
> ** Remove pending acks from session if the link is being closed
> * Phase Two
> ** Investigate 'returning' the problematic message rather than closing the
> link with an error code
> Avoiding closing the link seems preferable as it could reduce the number of
> messages that might otherwise be resent by the client.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]