Bugzilla will be upgraded to version 5.0 on a still to be determined date in the near future. The original upgrade date has been delayed.
Bug 591287 - MRG session object does not seem to be able to recover from resource limit exceeded exception
MRG session object does not seem to be able to recover from resource limit ex...
Status: CLOSED INSUFFICIENT_DATA
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
1.2
All Linux
high Severity high
: ---
: ---
Assigned To: messaging-bugs
MRG Quality Engineering
:
Depends On: 694895
Blocks:
  Show dependency treegraph
 
Reported: 2010-05-11 15:45 EDT by Scott Spurrier
Modified: 2013-02-24 19:48 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2013-02-24 19:48:18 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Scott Spurrier 2010-05-11 15:45:22 EDT
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 15:46:39 EDT
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.