You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Philip Preston <ph...@mac.com> on 2015/07/22 00:44:19 UTC

Proton issue with large Messages to Java QPID Broker

Hey 

I was testing the broker implementation that is currently being worked on in OpenMAMA and came across an issue, which I have been able to recreate with proton send / recv example apps.  

The issue is seen with sending large payloads to Java QPID Broker using the proton send application as follows:

./send -a topic://127.0.0.1/MAMA/PHIL <topic://127.0.0.1/MAMA/PHIL>  <string from file - in this case 47104 bytes>

And the receive as per below:

./recv  topic://127.0.0.1/MAMA/PHIL <topic://127.0.0.1/MAMA/PHIL>

I am running the Java QPID Broker v0.32 running with java v1.8.0_45 - vanilla setup (although I have ran this java broker on Centos 7 along with the clients to be sure not a mac thing).  The message makes it to the recv client and throws an assertion:

Assertion failed: (msg && bytes && size), function pn_message_decode, file /Users/ppreston/Developer/Libraries/Source/qpid-proton/proton-c/src/message/message.c, line 656.
Abort trap: 6

I am running proton v0.8 (debug build).  Running in lldb I can see whats failing:

frame #0: 0x000000010002cef4 libqpid-proton.2.dylib`pn_message_decode(msg=0x0000000100204c00, bytes=0x000000010101d800, size=0) + 36 at message.c:656
   653 
   654  int pn_message_decode(pn_message_t *msg, const char *bytes, size_t size)
   655  {
-> 656    assert(msg && bytes && size);
   657 
   658    pn_message_clear(msg);
   659 
(lldb) p msg
(pn_message_t *) $0 = 0x0000000100204c00
(lldb) p bytes
(const char *) $1 = 0x000000010101d800 ""
(lldb) p size
(size_t) $2 = 0
(lldb)

When I inspect the messages in Wireshark I can see it flags malformed packet.  Following is from the send client to the broker.



Running the same clients to a C++ Qpid Broker v0.32, however, there are no issues and the data is received in the recv client fine.  The qpidd is running vanilla with —topic-pattern parameter.

Have checked the following combinations with large payloads (ruling out different MTU on loopback vs active interfaces)

send (mac) 	—> 	Java Broker (loopback mac) 	—> 	recv (mac)	:	Fail
send (mac) 	—> 	Java Broker (vnic linux) 	—> 	recv (mac)	:	Fail
send (linux)	—> 	Java Broker (loopback linux)	—> 	recv (linux)	:	Fail
send (mac) 	—> 	C++ Broker (vnic linux) 	—>	recv (mac)	:	Pass
send (linux) 	—>	C++ Broker (loopback linux) 	—> 	recv (linux)	:	Pass

Wanted to check whether anyone else has experienced this?  Something configuration based?  I am not that familiar with QPID brokers so not ruling out something I haven’t setup in Java that’s not needed in C++.

Any help or guidance would be greatly appreciated before I go down a rabbit hole.  

Thanks

Phil




Re: Proton issue with large Messages to Java QPID Broker

Posted by Rob Godfrey <ro...@gmail.com>.
I've commented on the JIRA[1] with my initial analysis... If we can confirm
that the frames on the wire / what Proton is receiving match what the Java
Broker log is saying it sent, then I think the problem is definitely on the
Proton side of things.

-- Rob

[1]
https://issues.apache.org/jira/browse/QPID-6651?focusedCommentId=14637684&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14637684

On 22 July 2015 at 23:09, Philip Preston <ph...@mac.com> wrote:

> Raised https://issues.apache.org/jira/browse/QPID-6651 <
> https://issues.apache.org/jira/browse/QPID-6651>
>
>
> > On 22 Jul 2015, at 19:33, Philip Preston <ph...@mac.com> wrote:
> >
> > Hey
> >
> > Yeah - as I said it was all pretty vanilla - so thought it was unusual.
> >
> > I’ll get the logs and open issue.
> >
> > I’ll kick the tires on later releases.
> >
> > Thanks
> >
> > Phil
> >
> >
> >> On 22 Jul 2015, at 13:22, Rob Godfrey <ro...@gmail.com> wrote:
> >>
> >> Hi Phil,
> >>
> >> this seems odd - I know people have been sending and receiving to/from
> the Java Broker successfully using Proton.  Can you turn on debug logging
> in the Java Broker (edit your log4j.xml config file and move all the
> thresholds down to DEBUG for instance)?  If you can create a JIRA for this
> issue (https://issues.apache.org/jira/browse/QPID <
> https://issues.apache.org/jira/browse/QPID>) and attach any DEBUG log as
> attachments that would be really helpful.
> >>
> >> Out of interest - have you tried with newer versions of Proton?
> >>
> >> -- Rob
> >>
> >> On 22 July 2015 at 00:44, Philip Preston <philippreston@mac.com
> <ma...@mac.com>> wrote:
> >> Hey
> >>
> >> I was testing the broker implementation that is currently being worked
> on in OpenMAMA and came across an issue, which I have been able to recreate
> with proton send / recv example apps.
> >>
> >> The issue is seen with sending large payloads to Java QPID Broker using
> the proton send application as follows:
> >>
> >> ./send -a topic://127.0.0.1/MAMA/PHIL <>  <string from file - in this
> case 47104 bytes>
> >>
> >> And the receive as per below:
> >>
> >> ./recv  topic://127.0.0.1/MAMA/PHIL <>
> >>
> >> I am running the Java QPID Broker v0.32 running with java v1.8.0_45 -
> vanilla setup (although I have ran this java broker on Centos 7 along with
> the clients to be sure not a mac thing).  The message makes it to the recv
> client and throws an assertion:
> >>
> >> Assertion failed: (msg && bytes && size), function pn_message_decode,
> file
> /Users/ppreston/Developer/Libraries/Source/qpid-proton/proton-c/src/message/message.c,
> line 656.
> >> Abort trap: 6
> >>
> >> I am running proton v0.8 (debug build).  Running in lldb I can see
> whats failing:
> >>
> >> frame #0: 0x000000010002cef4
> libqpid-proton.2.dylib`pn_message_decode(msg=0x0000000100204c00,
> bytes=0x000000010101d800, size=0) + 36 at message.c:656
> >>   653
> >>   654  int pn_message_decode(pn_message_t *msg, const char *bytes,
> size_t size)
> >>   655  {
> >> -> 656    assert(msg && bytes && size);
> >>   657
> >>   658    pn_message_clear(msg);
> >>   659
> >> (lldb) p msg
> >> (pn_message_t *) $0 = 0x0000000100204c00
> >> (lldb) p bytes
> >> (const char *) $1 = 0x000000010101d800 ""
> >> (lldb) p size
> >> (size_t) $2 = 0
> >> (lldb)
> >>
> >> When I inspect the messages in Wireshark I can see it flags malformed
> packet.  Following is from the send client to the broker.
> >>
> >>
> >>
> >> Running the same clients to a C++ Qpid Broker v0.32, however, there are
> no issues and the data is received in the recv client fine.  The qpidd is
> running vanilla with —topic-pattern parameter.
> >>
> >> Have checked the following combinations with large payloads (ruling out
> different MTU on loopback vs active interfaces)
> >>
> >> send (mac)   —>      Java Broker (loopback mac)      —>      recv
> (mac)      :       Fail
> >> send (mac)   —>      Java Broker (vnic linux)        —>      recv
> (mac)      :       Fail
> >> send (linux) —>      Java Broker (loopback linux)    —>      recv
> (linux)    :       Fail
> >> send (mac)   —>      C++ Broker (vnic linux)         —>      recv
> (mac)      :       Pass
> >> send (linux)         —>      C++ Broker (loopback linux)     —>
> recv (linux)    :       Pass
> >>
> >> Wanted to check whether anyone else has experienced this?  Something
> configuration based?  I am not that familiar with QPID brokers so not
> ruling out something I haven’t setup in Java that’s not needed in C++.
> >>
> >> Any help or guidance would be greatly appreciated before I go down a
> rabbit hole.
> >>
> >> Thanks
> >>
> >> Phil
> >>
> >>
> >>
> >>
> >
>
>

Re: Proton issue with large Messages to Java QPID Broker

Posted by Philip Preston <ph...@mac.com>.
Raised https://issues.apache.org/jira/browse/QPID-6651 <https://issues.apache.org/jira/browse/QPID-6651> 


> On 22 Jul 2015, at 19:33, Philip Preston <ph...@mac.com> wrote:
> 
> Hey 
> 
> Yeah - as I said it was all pretty vanilla - so thought it was unusual.
> 
> I’ll get the logs and open issue.
> 
> I’ll kick the tires on later releases.
> 
> Thanks
> 
> Phil
> 
> 
>> On 22 Jul 2015, at 13:22, Rob Godfrey <ro...@gmail.com> wrote:
>> 
>> Hi Phil,
>> 
>> this seems odd - I know people have been sending and receiving to/from the Java Broker successfully using Proton.  Can you turn on debug logging in the Java Broker (edit your log4j.xml config file and move all the thresholds down to DEBUG for instance)?  If you can create a JIRA for this issue (https://issues.apache.org/jira/browse/QPID <https://issues.apache.org/jira/browse/QPID>) and attach any DEBUG log as attachments that would be really helpful.
>> 
>> Out of interest - have you tried with newer versions of Proton?
>> 
>> -- Rob
>> 
>> On 22 July 2015 at 00:44, Philip Preston <philippreston@mac.com <ma...@mac.com>> wrote:
>> Hey 
>> 
>> I was testing the broker implementation that is currently being worked on in OpenMAMA and came across an issue, which I have been able to recreate with proton send / recv example apps.  
>> 
>> The issue is seen with sending large payloads to Java QPID Broker using the proton send application as follows:
>> 
>> ./send -a topic://127.0.0.1/MAMA/PHIL <>  <string from file - in this case 47104 bytes>
>> 
>> And the receive as per below:
>> 
>> ./recv  topic://127.0.0.1/MAMA/PHIL <>
>> 
>> I am running the Java QPID Broker v0.32 running with java v1.8.0_45 - vanilla setup (although I have ran this java broker on Centos 7 along with the clients to be sure not a mac thing).  The message makes it to the recv client and throws an assertion:
>> 
>> Assertion failed: (msg && bytes && size), function pn_message_decode, file /Users/ppreston/Developer/Libraries/Source/qpid-proton/proton-c/src/message/message.c, line 656.
>> Abort trap: 6
>> 
>> I am running proton v0.8 (debug build).  Running in lldb I can see whats failing:
>> 
>> frame #0: 0x000000010002cef4 libqpid-proton.2.dylib`pn_message_decode(msg=0x0000000100204c00, bytes=0x000000010101d800, size=0) + 36 at message.c:656
>>   653 
>>   654  int pn_message_decode(pn_message_t *msg, const char *bytes, size_t size)
>>   655  {
>> -> 656    assert(msg && bytes && size);
>>   657 
>>   658    pn_message_clear(msg);
>>   659 
>> (lldb) p msg
>> (pn_message_t *) $0 = 0x0000000100204c00
>> (lldb) p bytes
>> (const char *) $1 = 0x000000010101d800 ""
>> (lldb) p size
>> (size_t) $2 = 0
>> (lldb)
>> 
>> When I inspect the messages in Wireshark I can see it flags malformed packet.  Following is from the send client to the broker.
>> 
>> 
>> 
>> Running the same clients to a C++ Qpid Broker v0.32, however, there are no issues and the data is received in the recv client fine.  The qpidd is running vanilla with —topic-pattern parameter.
>> 
>> Have checked the following combinations with large payloads (ruling out different MTU on loopback vs active interfaces)
>> 
>> send (mac) 	—> 	Java Broker (loopback mac) 	—> 	recv (mac)	:	Fail
>> send (mac) 	—> 	Java Broker (vnic linux) 	—> 	recv (mac)	:	Fail
>> send (linux)	—> 	Java Broker (loopback linux)	—> 	recv (linux)	:	Fail
>> send (mac) 	—> 	C++ Broker (vnic linux) 	—>	recv (mac)	:	Pass
>> send (linux) 	—>	C++ Broker (loopback linux) 	—> 	recv (linux)	:	Pass
>> 
>> Wanted to check whether anyone else has experienced this?  Something configuration based?  I am not that familiar with QPID brokers so not ruling out something I haven’t setup in Java that’s not needed in C++.
>> 
>> Any help or guidance would be greatly appreciated before I go down a rabbit hole.  
>> 
>> Thanks
>> 
>> Phil
>> 
>> 
>> 
>> 
> 


Re: Proton issue with large Messages to Java QPID Broker

Posted by Philip Preston <ph...@mac.com>.
Hey 

Yeah - as I said it was all pretty vanilla - so thought it was unusual.

I’ll get the logs and open issue.

I’ll kick the tires on later releases.

Thanks

Phil


> On 22 Jul 2015, at 13:22, Rob Godfrey <ro...@gmail.com> wrote:
> 
> Hi Phil,
> 
> this seems odd - I know people have been sending and receiving to/from the Java Broker successfully using Proton.  Can you turn on debug logging in the Java Broker (edit your log4j.xml config file and move all the thresholds down to DEBUG for instance)?  If you can create a JIRA for this issue (https://issues.apache.org/jira/browse/QPID <https://issues.apache.org/jira/browse/QPID>) and attach any DEBUG log as attachments that would be really helpful.
> 
> Out of interest - have you tried with newer versions of Proton?
> 
> -- Rob
> 
> On 22 July 2015 at 00:44, Philip Preston <philippreston@mac.com <ma...@mac.com>> wrote:
> Hey 
> 
> I was testing the broker implementation that is currently being worked on in OpenMAMA and came across an issue, which I have been able to recreate with proton send / recv example apps.  
> 
> The issue is seen with sending large payloads to Java QPID Broker using the proton send application as follows:
> 
> ./send -a topic://127.0.0.1/MAMA/PHIL <>  <string from file - in this case 47104 bytes>
> 
> And the receive as per below:
> 
> ./recv  topic://127.0.0.1/MAMA/PHIL <>
> 
> I am running the Java QPID Broker v0.32 running with java v1.8.0_45 - vanilla setup (although I have ran this java broker on Centos 7 along with the clients to be sure not a mac thing).  The message makes it to the recv client and throws an assertion:
> 
> Assertion failed: (msg && bytes && size), function pn_message_decode, file /Users/ppreston/Developer/Libraries/Source/qpid-proton/proton-c/src/message/message.c, line 656.
> Abort trap: 6
> 
> I am running proton v0.8 (debug build).  Running in lldb I can see whats failing:
> 
> frame #0: 0x000000010002cef4 libqpid-proton.2.dylib`pn_message_decode(msg=0x0000000100204c00, bytes=0x000000010101d800, size=0) + 36 at message.c:656
>    653 
>    654  int pn_message_decode(pn_message_t *msg, const char *bytes, size_t size)
>    655  {
> -> 656    assert(msg && bytes && size);
>    657 
>    658    pn_message_clear(msg);
>    659 
> (lldb) p msg
> (pn_message_t *) $0 = 0x0000000100204c00
> (lldb) p bytes
> (const char *) $1 = 0x000000010101d800 ""
> (lldb) p size
> (size_t) $2 = 0
> (lldb)
> 
> When I inspect the messages in Wireshark I can see it flags malformed packet.  Following is from the send client to the broker.
> 
> 
> 
> Running the same clients to a C++ Qpid Broker v0.32, however, there are no issues and the data is received in the recv client fine.  The qpidd is running vanilla with —topic-pattern parameter.
> 
> Have checked the following combinations with large payloads (ruling out different MTU on loopback vs active interfaces)
> 
> send (mac) 	—> 	Java Broker (loopback mac) 	—> 	recv (mac)	:	Fail
> send (mac) 	—> 	Java Broker (vnic linux) 	—> 	recv (mac)	:	Fail
> send (linux)	—> 	Java Broker (loopback linux)	—> 	recv (linux)	:	Fail
> send (mac) 	—> 	C++ Broker (vnic linux) 	—>	recv (mac)	:	Pass
> send (linux) 	—>	C++ Broker (loopback linux) 	—> 	recv (linux)	:	Pass
> 
> Wanted to check whether anyone else has experienced this?  Something configuration based?  I am not that familiar with QPID brokers so not ruling out something I haven’t setup in Java that’s not needed in C++.
> 
> Any help or guidance would be greatly appreciated before I go down a rabbit hole.  
> 
> Thanks
> 
> Phil
> 
> 
> 
> 


Re: Proton issue with large Messages to Java QPID Broker

Posted by Michael Ivanov <iv...@logit-ag.de>.
Hallo,

Sorry, this might be the issue I have discovered some time ago and reported to jira
as issue PROTON-892
(https://issues.apache.org/jira/browse/PROTON-892?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel).

Best regards.
-- 
 \   / |			           |
 (OvO) |  Mikhail Iwanow                   |
 (^^^) |      Voice:   +7 (911) 223-1300   |
  \^/  |      E-mail:  ivans@logit-ag.de   |
  ^ ^  |                                   |

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org


Re: Proton issue with large Messages to Java QPID Broker

Posted by Rob Godfrey <ro...@gmail.com>.
Hi Phil,

this seems odd - I know people have been sending and receiving to/from the
Java Broker successfully using Proton.  Can you turn on debug logging in
the Java Broker (edit your log4j.xml config file and move all the
thresholds down to DEBUG for instance)?  If you can create a JIRA for this
issue (https://issues.apache.org/jira/browse/QPID) and attach any DEBUG log
as attachments that would be really helpful.

Out of interest - have you tried with newer versions of Proton?

-- Rob

On 22 July 2015 at 00:44, Philip Preston <ph...@mac.com> wrote:

> Hey
>
> I was testing the broker implementation that is currently being worked on
> in OpenMAMA and came across an issue, which I have been able to recreate
> with proton send / recv example apps.
>
> The issue is seen with sending large payloads to Java QPID Broker using
> the proton send application as follows:
>
> ./send -a topic://127.0.0.1/MAMA/PHIL  <string from file - in this case
> 47104 bytes>
>
> And the receive as per below:
>
> ./recv  topic://127.0.0.1/MAMA/PHIL
>
> I am running the Java QPID Broker v0.32 running with java v1.8.0_45 -
> vanilla setup (although I have ran this java broker on Centos 7 along with
> the clients to be sure not a mac thing).  The message makes it to the recv
> client and throws an assertion:
>
> Assertion failed: (msg && bytes && size), function pn_message_decode, file
> /Users/ppreston/Developer/Libraries/Source/qpid-proton/proton-c/src/message/message.c,
> line 656.
> Abort trap: 6
>
> I am running proton v0.8 (debug build).  Running in lldb I can see whats
> failing:
>
> frame #0: 0x000000010002cef4
> libqpid-proton.2.dylib`pn_message_decode(msg=0x0000000100204c00, bytes=0x000000010101d800,
> size=0) + 36 at message.c:656
>    653
>    654  int pn_message_decode(pn_message_t *msg, const char *bytes, size_t
> size)
>    655  {
> -> 656    assert(msg && bytes && size);
>    657
>    658    pn_message_clear(msg);
>    659
> (lldb) p msg
> (pn_message_t *) $0 = 0x0000000100204c00
> (lldb) p bytes
> (const char *) $1 = 0x000000010101d800 ""
> (lldb) p size
>
> *(size_t) $2 = 0*(lldb)
>
> When I inspect the messages in Wireshark I can see it flags malformed
> packet.  Following is from the send client to the broker.
>
>
> *Running the same clients to a C++ Qpid Broker v0.32, however, there are
> no issues and the data is received in the recv client fine*.  The qpidd
> is running vanilla with —topic-pattern parameter.
>
> Have checked the following combinations with large payloads (ruling out
> different MTU on loopback vs active interfaces)
>
> send (mac) —> Java Broker (loopback mac) —> recv (mac) : Fail
> send (mac) —> Java Broker (vnic linux) —> recv (mac) : Fail
> send (linux) —>  Java Broker (loopback linux) —>  recv (linux) : Fail
> send (mac) —>  C++ Broker (vnic linux) —> recv (mac) : Pass
> send (linux) —> C++ Broker (loopback linux) —>  recv (linux) : Pass
>
> Wanted to check whether anyone else has experienced this?  Something
> configuration based?  I am not that familiar with QPID brokers so not
> ruling out something I haven’t setup in Java that’s not needed in C++.
>
> Any help or guidance would be greatly appreciated before I go down a
> rabbit hole.
>
> Thanks
>
> Phil
>
>
>
>