You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Sean J Donovan (JIRA)" <ji...@apache.org> on 2012/11/20 20:18:58 UTC

[jira] [Updated] (AMQCPP-441) Incorrect propagation of AMQ-2489 to CMS/C++ (causes performance degradation) in r833769.

     [ https://issues.apache.org/jira/browse/AMQCPP-441?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sean J Donovan updated AMQCPP-441:
----------------------------------

    Description: 
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:

http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConsumer.cpp?revision=883469&view=markup

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:

http://mail-archives.apache.org/mod_mbox/activemq-commits/200911.mbox/%3C20091123184303.EBB2D23889C5@eris.apache.org%3E

. . . in the code changes to ActiveMQMessageConsumer.java, 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.

Sean



  was:
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:

http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConsumer.cpp?revision=883469&view=markup

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:

http://mail-archives.apache.org/mod_mbox/activemq-commits/200911.mbox/%3C20091123184303.EBB2D23889C5@eris.apache.org%3E

. . . in the code changes to ActiveMQMessageConsumer.java, 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.

Sean







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

-                ackLater(md, MessageAck.DELIVERED_ACK_TYPE);




Sean



    
> Incorrect propagation of AMQ-2489 to CMS/C++ (causes performance degradation) in r833769.
> -----------------------------------------------------------------------------------------
>
>                 Key: AMQCPP-441
>                 URL: https://issues.apache.org/jira/browse/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:
> http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/core/ActiveMQConsumer.cpp?revision=883469&view=markup
> 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:
> http://mail-archives.apache.org/mod_mbox/activemq-commits/200911.mbox/%3C20091123184303.EBB2D23889C5@eris.apache.org%3E
> . . . in the code changes to ActiveMQMessageConsumer.java, 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.
> Sean

--
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: http://www.atlassian.com/software/jira