You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Nathan Mittler (JIRA)" <ji...@apache.org> on 2007/12/12 05:00:28 UTC

[jira] Created: (AMQCPP-157) Interoperability issues between C++ and .NET

Interoperability issues between C++ and .NET
--------------------------------------------

                 Key: AMQCPP-157
                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
             Project: ActiveMQ C++ Client
          Issue Type: Bug
            Reporter: Nathan Mittler
            Assignee: Nathan Mittler
             Fix For: 2.2
         Attachments: ActiveMQ+Issue.ZIP

Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412

As promised I have created a c++ test program (TestProducerBug) that will
create up to X producers. The class that does the work is
(TestProducers.cpp).

I am created a C# test program (TestConsumerBugCSharp) that will create up
to X consumers using a MessageListener.  The class that does the work is
(TestConsumers.cs).

I have created a C++ test program (TestConsumerBug) that will create up to X
consumers.  The class that does the work(TestConsumers.cpp).

Here is some information on my setup.

Compiler MS 2005.

ActiveMQ
Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
Server 64 Bit.
Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
on a 32 bit version of JAVA).

ActiveMQ Settings
Broker Settings (persistent="false" advisorySupport="false")

Topic Policy
<policyEntry topic="Test.>" producerFlowControl="true">

           <!-- lets force old messages to be discarded for slow consumers
-->
           <pendingMessageLimitStrategy>
             <constantPendingMessageLimitStrategy limit="5"/>
           </pendingMessageLimitStrategy>
 <messageEvictionStrategy> 
 <oldestMessageEvictionStrategy /> 
 </messageEvictionStrategy> 

         </policyEntry>


Client API's

CPP activemq-cpp-2.1.2-src
C# ApacheActiveMQ (Not sure the version but latest trunk).


When running these test remember to stop and restart the broker each test as
the test can and will cause the broker to hang.

Tests 1 -3 will show what is happening between the CPP and C# API.

Test 4 will show what happens to a producer when a consumer is in a break
point in the MessageListener.

Test 1
To recreate the issue build and run 
TestProducerBug
TestConsumerBugCSharp.

If you set the number of producers and clients to 10 you should see the
problem happen in less then 5 min (About 2,000 messages per consumer).
The producer will throw an exception place a breakpoint on the catch block
in the ThreadProc.  you will see the following information.
No valid response received for command: Begin Class = ActiveMQBytesMessage

Begin Class = ActiveMQMessageBase

Value of ackHandler = 00000000

Value of redeliveryCount = 0

Value of properties = Begin Class PrimitiveMap:

Begin Class PrimitiveMap:

Begin Class = Message

Value of Message::ID_MESSAGE = 0

Value of ProducerId is Below:

Begin Class = ProducerId

Value of ProducerId::ID_PRODUCERID = 123

Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199

Value of Value = 19

Value of SessionId = 0

No Data for Class BaseDataStructure

End Class = ProducerId

Value of Destination is Below:

Begin Class = ActiveMQTopic

Begin Class = ActiveMQDestination

Value of exclusive = false

Value of ordered = false

Value of advisory = false

Value of orderedTarget = coordinator

Value of physicalName = Test.20

Value of options = Begin Class activemq::util::Properties:

End Class activemq::util::Properties:

No Data for Class BaseDataStructure

End Class = ActiveMQDestination

End Class = ActiveMQTopic

Value of TransactionId is Below:

Object is NULL

Value of OriginalDestination is Below:

Object is NULL

Value of MessageId is Below:

Begin Class = MessageId

Value of MessageId::ID_MESSAGEID = 110

Value of ProducerId is Below:

Begin Class = ProducerId

Value of ProducerId::ID_PRODUCERID = 123

Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199

Value of Value = 19

Value of SessionId = 0

No Data for Class BaseDataStructure

End Class = ProducerId

Value of ProducerSequenceId = 19025

Value of BrokerSequenceId = 0

No Data for Class BaseDataStructure

End Class = MessageId

Value of OriginalTransactionId is Below:

Object is NULL

Value of GroupID = 

Value of GroupSequence = 0

Value of CorrelationId = 

Value of Persistent = 0

Value of Expiration = 1197392556357

Value of Priority = 4

Value of ReplyTo is Below:

Object is NULL

Value of Timestamp = 1197392551357

Value of Type = 

Value of Content[0] = 

Value of Content[1] = , check broker.

FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
146

FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
154

FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
LINE: 105

FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
1371

FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
848

FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675

FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194

FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149

FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108


Test 2
Now if you build and run
TestProducerBug
TestConsumerBug

These tests both use the C++ API and works as expected


Test 3
In the CPP program TestProducerBug you will find a sleep commented out in
the ThreadProc uncomment this line.  Build Program.
Build TestConsumerCSharp.

You will find with the 100 ms sleep the application is stable.


Test 4
Build TestProducerBug remember to comment out the sleep
Build TestConsumerCSharp.

Place a breakpoint on the MessageListner in the C# program.

In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Robert Winslow (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40852 ] 

Robert Winslow commented on AMQCPP-157:
---------------------------------------

Guys it might not be clear from my wall of text however, I did retest on a 32 bit machine with the same results.

I also was thinking it might be an issue with that.  However same results.

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Robert Winslow (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40886 ] 

Robert Winslow commented on AMQCPP-157:
---------------------------------------

Here are the results of my testing.

Ok,

After spending hours testing I can report the following.



ActiveMQ Version/OS
5.0.0 Active MQ running on Suse linux 10.0 32 Bit
5.0.0 ActiveMQ running on Windows 2003 Server 32 Bit
5.0.0 Active MQ running on Suse linux 10.0 64 Bit
5.0.0 ActiveMQ running on Windows 2003 Server 64 Bit



The results of the tests were the same for all ActiveMQ Version/OS

AcitiveMQ API
C# Not sure of the version of this.  Latest from trunk.
C++ activemq-cpp-2.1.3-src
Java


Producer Machine
Windows 2000 Server

Consumer Machine
Windows 2000 Server

Java Consumer Java Producer
Test runs with no issues.

Java Consumer C++ Producer
Test runs with no issues.

Java Consumer C# Producer.
Test runs with no issues.

C++ Consumer C++ Producer.
Test runs with no issues.

C++ Consumer C# Producer
Test runs with no issues.

C++ Consumer Java Producer
Test runs with no issues.

C++ Consumer C++ Producer
Test runs with no issues.

C# Consumer C# Producer
Test runs one issue noted after about 1 hour the producer would issue a send and would never come out of the send.  In another run of this test the producer would send the consumer would stop receiving however in the admin console it would show the messages being delivered.  Will be doing more testing with this to try and see why.

C# Consumer Java Producer
Test runs with no issues.

C# Consumer C++ Producer.
Test Fails after less then 1 min  Producer sees the following exception.
//Exception
No valid response received for command: Begin Class = ActiveMQBytesMessage
Begin Class = ActiveMQMessageBase
Value of ackHandler = 00000000
Value of redeliveryCount = 0
Value of properties = Begin Class PrimitiveMap:
Begin Class PrimitiveMap:
Begin Class = Message
Value of Message::ID_MESSAGE = 0
Value of ProducerId is Below:
Begin Class = ProducerId
Value of ProducerId::ID_PRODUCERID = 123
Value of ConnectionId = 762913dd-39ec-4229-b6c3-3ae0ea46e35a
Value of Value = 18
Value of SessionId = 0
No Data for Class BaseDataStructure
End Class = ProducerId
Value of Destination is Below:
Begin Class = ActiveMQTopic
Begin Class = ActiveMQDestination
Value of exclusive = false
Value of ordered = false
Value of advisory = false
Value of orderedTarget = coordinator
Value of physicalName = Test.19
Value of options = Begin Class activemq::util::Properties:
End Class activemq::util::Properties:
No Data for Class BaseDataStructure
End Class = ActiveMQDestination
End Class = ActiveMQTopic
Value of TransactionId is Below:
Object is NULL
Value of OriginalDestination is Below:
Object is NULL
Value of MessageId is Below:
Begin Class = MessageId
Value of MessageId::ID_MESSAGEID = 110
Value of ProducerId is Below:
Begin Class = ProducerId
Value of ProducerId::ID_PRODUCERID = 123
Value of ConnectionId = 762913dd-39ec-4229-b6c3-3ae0ea46e35a
Value of Value = 18
Value of SessionId = 0
No Data for Class BaseDataStructure
End Class = ProducerId
Value of ProducerSequenceId = 29252
Value of BrokerSequenceId = 0
No Data for Class BaseDataStructure
End Class = MessageId
Value of OriginalTransactionId is Below:
Object is NULL
Value of GroupID = 
Value of GroupSequence = 0
Value of CorrelationId = 
Value of Persistent = 0
Value of Expiration = 1197993033914
Value of Priority = 4
Value of ReplyTo is Below:
Object is NULL
Value of Timestamp = 1197993028914
Value of Type = 
Value of Content[0] = 
Value of Content[1] = , check broker.
FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE: 146
FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE: 154
FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp, LINE: 105
FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE: 1371
FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE: 848
FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
//End Exception





> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Robert Winslow (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40885 ] 

Robert Winslow commented on AMQCPP-157:
---------------------------------------

Nathan,

I have not been able to get the time to run the other tests.  However, I did try changing the timeoutwait.  I set it to 10000 as suggested.  The test failed as it did before.  I then decided to change it to an unrealistic number 60000.  The program died as it did before.  Whats interesting with this test is that it did not even run for a minute.  As such I dont think changing this value had any impact on the problem.

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Issue Comment Edited: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Robert Winslow (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40867 ] 

hellweek edited comment on AMQCPP-157 at 12/17/07 6:07 AM:
-----------------------------------------------------------------

Nathan.

Your tests were centered on Java.  Java, was not my issue as I am using C# and CPP.  I will retest as asked however, the MFC stuff should not be an issue as the worker class was platform independent.

I will take your code and rerun using the versions yo uhave listed.  I suspect I will find the issue is still present as nothing has changed.

I am not a JAVA guy however, I wil try and execute the test under JAVA.

I suggest that you try with the C# CPP code as you will see the issue I am talking about.

      was (Author: hellweek):
    Nathan.

Your tests were centered on Java.  Java, was not my issue as I am using C# and CPP.  I will retest as asked however, the MFC stuff should not be an issue as the worker class was platform independent.

I will take your code and rerun using the versions yo uhave listed.  I suspect I will find the issue is still present as nothing has changed.


I will not be able to test the Java code as I am not a Java guy.

  
> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Nathan Mittler (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40837 ] 

Nathan Mittler commented on AMQCPP-157:
---------------------------------------

Unfortunately, I don't have access to a 64-bit box and am not a .NET guy :(

I'm planning to look into this over the weekend by running the tests between Java and C++ to see if I can replicate the problem on 32-bit OS X (Intel)

Could someone help me out by running these tests between Java and C#.  This might help to determine if the problem is, at least, not isolated to the C++ client.

Thanks,
Nate

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Closed: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Nathan Mittler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nathan Mittler closed AMQCPP-157.
---------------------------------

    Resolution: Cannot Reproduce

I wasn't able to reproduce it - if it comes up again, we can re-open this issue.

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test.tar.gz, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Nathan Mittler (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40838 ] 

Nathan Mittler commented on AMQCPP-157:
---------------------------------------

One more thing to try ...

Running the same tests on a 32-bit machine.  It may be possible that the C++ client has a bug in the marshalling/unmarshalling code on 64-bit.

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Updated: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Nathan Mittler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nathan Mittler updated AMQCPP-157:
----------------------------------

    Attachment: amq_test_c_java.zip

Hi Robert,
I've modified the C++ consumer and producer to be platform independent (got rid of MFC stuff).  I've also created a Java consumer and producer (I'm not a C# guy).

I ran the following tests using ActiveMQ CPP v2.1.3 and ActiveMQ 5.0.0 on OS X (intel 32-bit):

1) C++->C++
2) C++->Java
3) Java->C++

All tests ran successfully, without any errors at either the broker or any clients.  In addition, a restart of the broker was never required.

Could you re-run your tests with this version of the code?  Feel free to tweak the arguments to the constructors, if changing them re-creates the problem.

Also, if you can still recreate the problem between C# and C++, could you see if you can recreate with Java and C++?  Maybe we're dealing with a platform issue (windows vs *nix)

Thanks,
Nate


> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Timothy Bish (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=41212#action_41212 ] 

Timothy Bish commented on AMQCPP-157:
-------------------------------------

Has there been any further discoveries made on this issue?

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test.tar.gz, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Updated: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Nathan Mittler (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Nathan Mittler updated AMQCPP-157:
----------------------------------

    Attachment: amq_test.tar.gz

I finally got a .NET environment up and was able to run the C++->.NET test, but was unable to reproduce the problem on OS X with Mono v1.2.6.  I set up the test to run continuously for 2 minutes, but everything seemed to work fine on both ends.

I've added a new attachment (amq_test.tar.gz) that includes all of the tests for java, C++, and .NET.  

One thing to note:   I am running with both clients and the broker on the same machine.  Can you make the problem occur with everything on localhost?

Regards,
Nate

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test.tar.gz, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Nathan Mittler (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40868 ] 

Nathan Mittler commented on AMQCPP-157:
---------------------------------------

Robert,
One other thing to try is to bump up the maxResponseTimeoutWait variable in src/main/activemq/transport/filters/ResponseCorrelator.cpp.

It defaults to 3 seconds, which means that after sending a message, the producer will wait for up to 3 seconds for the acknowledgement of the message to come back from the broker.  If the app is stressing the machine, it may not be getting the ack in time.  You might try changing this value to something bigger, say 10 seconds.

> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Robert Winslow (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40853 ] 

Robert Winslow commented on AMQCPP-157:
---------------------------------------

My computer lab at home has all the hardware needed for testing this.  I have 2 64 bit machines and 3 32 bit machines.  If you need help testing please let me know what you want done.

I can tell you that 32 or 64 issue is the same.


> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Commented: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Robert Winslow (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40867 ] 

Robert Winslow commented on AMQCPP-157:
---------------------------------------

Nathan.

Your tests were centered on Java.  Java, was not my issue as I am using C# and CPP.  I will retest as asked however, the MFC stuff should not be an issue as the worker class was platform independent.

I will take your code and rerun using the versions yo uhave listed.  I suspect I will find the issue is still present as nothing has changed.



> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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


[jira] Issue Comment Edited: (AMQCPP-157) Interoperability issues between C++ and .NET

Posted by "Robert Winslow (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/activemq/browse/AMQCPP-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_40867 ] 

hellweek edited comment on AMQCPP-157 at 12/17/07 6:05 AM:
-----------------------------------------------------------------

Nathan.

Your tests were centered on Java.  Java, was not my issue as I am using C# and CPP.  I will retest as asked however, the MFC stuff should not be an issue as the worker class was platform independent.

I will take your code and rerun using the versions yo uhave listed.  I suspect I will find the issue is still present as nothing has changed.


I will not be able to test the Java code as I am not a Java guy.


      was (Author: hellweek):
    Nathan.

Your tests were centered on Java.  Java, was not my issue as I am using C# and CPP.  I will retest as asked however, the MFC stuff should not be an issue as the worker class was platform independent.

I will take your code and rerun using the versions yo uhave listed.  I suspect I will find the issue is still present as nothing has changed.


  
> Interoperability issues between C++ and .NET
> --------------------------------------------
>
>                 Key: AMQCPP-157
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-157
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>            Reporter: Nathan Mittler
>            Assignee: Nathan Mittler
>             Fix For: 2.2
>
>         Attachments: ActiveMQ+Issue.ZIP, amq_test_c_java.zip
>
>
> Taken from http://www.nabble.com/ActiveMQ-thoughts-to14262131s2354.html#a14278412
> As promised I have created a c++ test program (TestProducerBug) that will
> create up to X producers. The class that does the work is
> (TestProducers.cpp).
> I am created a C# test program (TestConsumerBugCSharp) that will create up
> to X consumers using a MessageListener.  The class that does the work is
> (TestConsumers.cs).
> I have created a C++ test program (TestConsumerBug) that will create up to X
> consumers.  The class that does the work(TestConsumers.cpp).
> Here is some information on my setup.
> Compiler MS 2005.
> ActiveMQ
> Running ActiveMQ 5.0 Dated Dec 7th 2007.  It is running on windows 2003
> Server 64 Bit.
> Running Java 1.6.0_02 this version of Java is 64 bit. (Problem happens even
> on a 32 bit version of JAVA).
> ActiveMQ Settings
> Broker Settings (persistent="false" advisorySupport="false")
> Topic Policy
> <policyEntry topic="Test.>" producerFlowControl="true">
>            <!-- lets force old messages to be discarded for slow consumers
> -->
>            <pendingMessageLimitStrategy>
>              <constantPendingMessageLimitStrategy limit="5"/>
>            </pendingMessageLimitStrategy>
>  <messageEvictionStrategy> 
>  <oldestMessageEvictionStrategy /> 
>  </messageEvictionStrategy> 
>          </policyEntry>
> Client API's
> CPP activemq-cpp-2.1.2-src
> C# ApacheActiveMQ (Not sure the version but latest trunk).
> When running these test remember to stop and restart the broker each test as
> the test can and will cause the broker to hang.
> Tests 1 -3 will show what is happening between the CPP and C# API.
> Test 4 will show what happens to a producer when a consumer is in a break
> point in the MessageListener.
> Test 1
> To recreate the issue build and run 
> TestProducerBug
> TestConsumerBugCSharp.
> If you set the number of producers and clients to 10 you should see the
> problem happen in less then 5 min (About 2,000 messages per consumer).
> The producer will throw an exception place a breakpoint on the catch block
> in the ThreadProc.  you will see the following information.
> No valid response received for command: Begin Class = ActiveMQBytesMessage
> Begin Class = ActiveMQMessageBase
> Value of ackHandler = 00000000
> Value of redeliveryCount = 0
> Value of properties = Begin Class PrimitiveMap:
> Begin Class PrimitiveMap:
> Begin Class = Message
> Value of Message::ID_MESSAGE = 0
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of Destination is Below:
> Begin Class = ActiveMQTopic
> Begin Class = ActiveMQDestination
> Value of exclusive = false
> Value of ordered = false
> Value of advisory = false
> Value of orderedTarget = coordinator
> Value of physicalName = Test.20
> Value of options = Begin Class activemq::util::Properties:
> End Class activemq::util::Properties:
> No Data for Class BaseDataStructure
> End Class = ActiveMQDestination
> End Class = ActiveMQTopic
> Value of TransactionId is Below:
> Object is NULL
> Value of OriginalDestination is Below:
> Object is NULL
> Value of MessageId is Below:
> Begin Class = MessageId
> Value of MessageId::ID_MESSAGEID = 110
> Value of ProducerId is Below:
> Begin Class = ProducerId
> Value of ProducerId::ID_PRODUCERID = 123
> Value of ConnectionId = 752afa01-c256-45c2-84ad-c74b0578f199
> Value of Value = 19
> Value of SessionId = 0
> No Data for Class BaseDataStructure
> End Class = ProducerId
> Value of ProducerSequenceId = 19025
> Value of BrokerSequenceId = 0
> No Data for Class BaseDataStructure
> End Class = MessageId
> Value of OriginalTransactionId is Below:
> Object is NULL
> Value of GroupID = 
> Value of GroupSequence = 0
> Value of CorrelationId = 
> Value of Persistent = 0
> Value of Expiration = 1197392556357
> Value of Priority = 4
> Value of ReplyTo is Below:
> Object is NULL
> Value of Timestamp = 1197392551357
> Value of Type = 
> Value of Content[0] = 
> Value of Content[1] = , check broker.
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 146
> FILE: ..\src\main\activemq\transport\filters\ResponseCorrelator.cpp, LINE:
> 154
> FILE: ..\src\main\activemq\connector\openwire\OpenWireFormatNegotiator.cpp,
> LINE: 105
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 1371
> FILE: ..\src\main\activemq\connector\openwire\OpenWireConnector.cpp, LINE:
> 848
> FILE: ..\src\main\activemq\core\ActiveMQSession.cpp, LINE: 675
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 194
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 149
> FILE: ..\src\main\activemq\core\ActiveMQProducer.cpp, LINE: 108
> Test 2
> Now if you build and run
> TestProducerBug
> TestConsumerBug
> These tests both use the C++ API and works as expected
> Test 3
> In the CPP program TestProducerBug you will find a sleep commented out in
> the ThreadProc uncomment this line.  Build Program.
> Build TestConsumerCSharp.
> You will find with the 100 ms sleep the application is stable.
> Test 4
> Build TestProducerBug remember to comment out the sleep
> Build TestConsumerCSharp.
> Place a breakpoint on the MessageListner in the C# program.
> In very little time the producer will throw an exception.

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