Bug 591287 - MRG session object does not seem to be able to recover from resource limit exceeded exception
Summary: MRG session object does not seem to be able to recover from resource limit ex...
Keywords:
Status: CLOSED INSUFFICIENT_DATA
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: 1.2
Hardware: All
OS: Linux
high
high
Target Milestone: ---
: ---
Assignee: messaging-bugs
QA Contact: MRG Quality Engineering
URL:
Whiteboard:
Depends On: 694895
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-05-11 19:45 UTC by Scott Spurrier
Modified: 2018-10-27 15:19 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-02-25 00:48:18 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Scott Spurrier 2010-05-11 19:45:22 UTC
Description of problem:
MRG session object does not seem to be able to recover from resource limit exceeded exception.  After the session receives this exception we unable to send any further messages through this session to the broker.

How reproducible:
Easily.

Steps to Reproduce:
Sequence of events:
1) Create a single Exchange,
    a) At this time, there are no active Producers, and no active Consumers
    b) Direct Exchange
2) Start a Consumer that creates its own Queue, and creates a Binding to the existing Exchange
    a) Dynamic Queue (i.e., AutoDelete)
    b) Consumer written in either JAVA or C++
    c) Currently no traffic on the Queue (there are no active Producers)
3) Several Consumers are started
    a) Each Consumer creates its own, separate Queue
    b) Same binding to the same Exchange
4) Start Several Producers
    a) Sending Messages to the Exchange created in Step 1
    b) With the correct Binding Key
    c) Low messge rate, 1 msg every 5 seconds from each Producer
5) The Consumer begins to fall behind, completely filling the Queue
6) Producers begin receiving 'ResourceLimitExceededException'

We understand this is the expected operation, so we attempt to recover...

i) We shutdown the 'offending' Consumer, which deletes the full Queue
    Producers continue to receive the 'ResourceLimitExceededException'
QUESTION: Why does the Producer continue to receive the error message? The error condition has been removed.



Actual results:

Expected results:
The session should recover, meaning we should be able to send messages to the exchange without exceptions being thrown when the error condition has been removed from within the broker.

Comment 1 Scott Spurrier 2010-05-11 19:46:39 UTC
We attempted to create a new session, but after doing so the application cored after attempting to send a message.

We are sending messages asynchronously to the broker through the MessageReplayTracker class.  After the session was recreated it was passed to the MessageReplayTracker through the method replay().  We then called the send() method and the core occured when the MessageReplayTracker object made a call to the checkCompletion() method.  This resulted in a segmentation fault.


Note You need to log in before you can comment on or make changes to this bug.