activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nathan Mittler (JIRA)" <>
Subject [jira] Commented: (AMQCPP-150) ActiveMQ-CPP consumer client hanging after receiving 32767 messages.
Date Sat, 27 Oct 2007 13:32:25 GMT


Nathan Mittler commented on AMQCPP-150:

I've put a patch in trunk that I think does the trick.  With tight-encoding, when we were
unmarshalling compressed long long values, we were not casting the int/short to unsigned before
assigning it to the long long.  So if the sign bit was set on the int or short, it would also
be set on the resulting long long.  Changed this to cast the int/short to their unsigned counterparts
before assigning to the long long.  The unit tests all pass now.

Tim, could you double check the change to verify?

> ActiveMQ-CPP consumer client hanging after receiving 32767 messages.
> --------------------------------------------------------------------
>                 Key: AMQCPP-150
>                 URL:
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>    Affects Versions: 2.1
>         Environment: Ubuntu 6.10
>            Reporter: Omar Bashir
>            Assignee: Timothy Bish
>             Fix For: 2.1.1
>         Attachments: CppQueueReceiver.cpp, CppQueueTransmitterOrig.cpp
> I was stress-testing an ActiveMQ-CPP consumer client by transmitting to it a large burst
of messages (100 per second). I realised that the client hangs after receiving 32767 messages
and the broker has a log message 
> INFO PrefetchSubscription - Could not correlate acknowledgment with dispatched message:
MessageAck ... 
> I changed the size of the message from 40 bytes to over 600 bytes but it still behaved
the same way. Behaviour remained the same when I reduced message frequency to one per second.
I am using ActiveMQ-CPP-2.1 and ActiveMQ broker 4.1.1. 
> I replaced the C++ consumer with the Java consumer and the problem disappeared. Then
I ran both the Java and C++ consumers concurrently both listening to the same queue, the C++
client froze after 16 messages whereas the Java client continued to receive and process messages.
> Now, I have the C++ producer client that disconnects after sending 32000 messages, reconnects
and then starts transmitting again. The problem disappears with this configuration. Both Java
and C++ clients have now received in excess of 230k messages and are still running perfectly

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message