Closed fayvaz closed 6 years ago
Hi, thanks for the report. Looks like there is a bug in the binary serialisation of amqp arrays.
Many thanks Karl for your quick reply. Is there any workaround solution to move forward?
I can't think of a workaround unless you can get the client not to emit the array.
@fayvaz can you please put together a small example that can be used to reproduce? That would help us a lot. Thanks.
@michaelklishin My scenario and setup are given below step by step: -QPID JMS client installed on Windows environment. -RabbitMQ installed on Ubuntu 16.04 with AMQP 1.0 plugin. -durable in Terminus class under QPID PROTON-J library changed to CONFIGURATION and it is built (the aim is to set the durable at Source and Target to CONFIGURATION) -removed Modified outcome value in AmqpProducerBuild under org.apache.qpid.jms.provider.amqp.builders (since AMQP 1.0 plugin does not support Modified value).
I have run the HelloWorld example in QPID JMS example to make a AMQP 1.0 connection between the client and RabbitMQ and the problem happens.
I hope this explanation is quite clear.
thanks, -fatih
I suspect just trying to roundtrip an array from and to binary will trigger the error. It should be fixed in https://github.com/rabbitmq/rabbitmq-amqp1.0-common and this repo should be updated to take common as a dependency and use the serializers in there.
@kjnilsson I will be appreacited if you could provide more info how to try this proposal.
@fayvaz I think this is more of something we need to address. We extracted the serializers out into a common library when we write the amqp 1.0 client but we missed to update this repo to also use the common lib.
@kjnilsson Do you have a plan to fix this? How can I use that in my scenario?
@fayvaz we do have a plan to fix this, please be patient.
@michaelklishin @kjnilsson many thanks for your support.
@fayvaz did you have to modify proton itself to remove the request for the modified outcome or can it be done some other way? if so could you provide an example? Cheers.
@kjnilsson I did change in the qpid.jms.provider.amqp.builders.AmqpProducerBuilder class and comment out the modified outcome in Serder method.
Hello @kjnilsson , I'm also experiencing this issue (I think) but via Informatica AMQP connector. The connection is attempting to send a test static test message to queue 'writetest' but Informatica faults with:
"Error executing cloud process [hostRuntimeCall] with id [12505]: Session is closed while creating link, target: writetest"
And here is the log entry:
"2018-04-11 15:23:04.749 [info] <0.5.0> Server startup complete; 4 plugins started.
* rabbitmq_management
* rabbitmq_management_agent
* rabbitmq_web_dispatch
* rabbitmq_amqp1_0
2018-04-11 15:30:06.007 [info] <0.638.0> accepting AMQP connection <0.638.0> (127.0.0.1:60509 -> 127.0.0.1:5672)
2018-04-11 15:30:07.444 [info] <0.638.0> closing AMQP connection <0.638.0> (127.0.0.1:60509 -> 127.0.0.1:5672)
2018-04-11 15:30:09.757 [info] <0.592.0> closing AMQP connection <0.592.0> (127.0.0.1:60350 -> 127.0.0.1:5672)
2018-04-11 15:30:09.804 [info] <0.680.0> accepting AMQP connection <0.680.0> (127.0.0.1:60512 -> 127.0.0.1:5672)
2018-04-11 15:31:49.767 [info] <0.711.0> accepting AMQP connection <0.711.0> (127.0.0.1:60549 -> 127.0.0.1:5672)
2018-04-11 15:31:49.876 [error] <0.716.0> CRASH REPORT Process <0.716.0> with 0 neighbours crashed with reason: no function clause matching rabbit_amqp1_0_binary_generator:generate({array,[{symbol,<<"amqp:accepted:list">>},{symbol,<<"amqp:rejected:list">>}]}) line 42
2018-04-11 15:31:49.876 [error] <0.715.0> Supervisor {<0.715.0>,rabbit_amqp1_0_session_sup} had child writer started with rabbit_amqp1_0_writer:start_link(#Port<0.30933>, 0, 65528, rabbit_amqp1_0_framing, <0.711.0>) at <0.716.0> exit with reason no function clause matching rabbit_amqp1_0_binary_generator:generate({array,[{symbol,<<"amqp:accepted:list">>},{symbol,<<"amqp:rejected:list">>}]}) line 42 in context child_terminated
2018-04-11 15:31:49.876 [error] <0.715.0> Supervisor {<0.715.0>,rabbit_amqp1_0_session_sup} had child writer started with rabbit_amqp1_0_writer:start_link(#Port<0.30933>, 0, 65528, rabbit_amqp1_0_framing, <0.711.0>) at <0.716.0> exit with reason reached_max_restart_intensity in context shutdown
2018-04-11 15:31:49.876 [error] <0.711.0> CRASH REPORT Process <0.711.0> with 0 neighbours crashed with reason: no match of right hand value shutdown in rabbit_amqp1_0_reader:handle_dependent_exit/3 line 253
2018-04-11 15:31:49.876 [error] <0.709.0> Supervisor {<0.709.0>,rabbit_connection_sup} had child reader started with rabbit_reader:start_link(<0.710.0>, {acceptor,{0,0,0,0},5672}, #Port<0.30933>) at <0.711.0> exit with reason no match of right hand value shutdown in rabbit_amqp1_0_reader:handle_dependent_exit/3 line 253 in context child_terminated
2018-04-11 15:31:49.876 [error] <0.709.0> Supervisor {<0.709.0>,rabbit_connection_sup} had child reader started with rabbit_reader:start_link(<0.710.0>, {acceptor,{0,0,0,0},5672}, #Port<0.30933>) at <0.711.0> exit with reason reached_max_restart_intensity in context shutdown
This seems to occur with both 3.6.10 and 3.7.3 (I have two separate instances, both are failing). Is there any more information I can provide?
This also seems similar to closed issue #31.
@easystreet I take it the Informatica AMQP connector uses the QPid JMS client? Anyhow we're currently working on this issue together with #57 to provide better JMS compatibilty.
@kjnilsson We did comment out the outcome values in AmqpMessageProducer and AmqpMessageConsumer classes and it works as a workaround. We could send messages from QPID JMS client to RabbitMQ right now. When the plugin fix is ready, we will enable the codes again.
Hello -
I am trying to connect and send message from QPID JMS client to RabbitMQ with AMQP 1.0 plugin. However, I could create a durable queue but not achieve to send message and observe the following logs:
At QPID JMS client side (running HelloWorld example in the QPID JMS example repo):
At RabbitMQ side: