activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sean J Donovan (JIRA)" <>
Subject [jira] [Created] (AMQCPP-441) Incorrect propagation of AMQ-2489 to CMS/C++ (causes performance degradation) in r833769.
Date Tue, 20 Nov 2012 19:16:58 GMT
Sean J Donovan created AMQCPP-441:

             Summary: Incorrect propagation of AMQ-2489 to CMS/C++ (causes performance degradation)
in r833769.
                 Key: AMQCPP-441
             Project: ActiveMQ C++ Client
          Issue Type: Bug
          Components: CMS Impl
    Affects Versions: 3.4.5
         Environment: This should repeat in any environment using V3.4.5.
            Reporter: Sean J Donovan
            Assignee: Timothy Bish

With CMS/C++ V3.4.5 (and a snapshot of V3.5.0) I was getting the symptom reported in AMQ-2489.
 I found that this occurs in CMS/C++ when you have a consumer prefetch value of 1 or 2.  The
exception doesn't happen when prefetch is > 2.  Although the exception can be ignored,
it **does** affect performance significantly.  

I did some research, I think there is a bug in how AMQ-2489 was propagated to CMS/C++.

The problem was introduced here:

   src/main/activemq/core/ActiveMQConsumer.cpp (r833769)

The link to that version of the file is here:

I think that line #595 **shouldn't** exist.  That line is:

   ackLater( message, ActiveMQConstants::ACK_TYPE_DELIVERED );

This link contains details on the original Java fix:

. . . in the code changes to, you'll notice 
that the following line was **removed**:

      -                ackLater(md, MessageAck.DELIVERED_ACK_TYPE);

Thus, I believe the propogation was incorrect.  Fortunately, the fix is simple.  The code
has been refactored for V3.5.0 and I'm not sure where the logic has moved to -- should be
easy to find.


As proof, compare to the original fix to done in r833458.  In
the notes you'll see the following:

-                ackLater(md, MessageAck.DELIVERED_ACK_TYPE);


This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:

View raw message