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

Jiri Daněk reopened PROTON-1789:
--------------------------------

I realized the fix is still wrong in that in AMQP property keys are supposed to 
be strings, not symbols. Therefore symbol_keys! function should not be used.

When I replaced

{noformat}
    def pre_encode
      # encode elements from the message
      Codec::Data.from_object(Cproton::pn_message_properties(@impl),
                              [email protected]? && 
Types.symbol_keys!(@properties))
{noformat}

by

{noformat}
      pn_message_properties = 
Codec::Data.new(Cproton::pn_message_properties(@impl))
      pn_message_properties.clear
      pn_message_properties.map = [email protected]? && @properties
{noformat}

I got my selectors finally working.

{quote}
http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-properties

3.2.5 Application Properties
<type name="application-properties" class="restricted" source="map" 
provides="section">
    <descriptor name="amqp:application-properties:map" 
code="0x00000000:0x00000074"/>
</type>

[...]

The keys of this map are restricted to be of type string (which excludes the 
possibility of a null key) and the values are restricted to be of simple types 
only, that is, excluding map, list, and array types.
{quote}


> [ruby] `pre_encode': undefined method `symbol_keys!' for 
> Qpid::Proton::Types:Module (NoMethodError)
> ---------------------------------------------------------------------------------------------------
>
>                 Key: PROTON-1789
>                 URL: https://issues.apache.org/jira/browse/PROTON-1789
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: ruby-binding
>    Affects Versions: proton-c-0.22.0
>         Environment: $ ruby --version
> ruby 2.5.0p0 (2017-12-25) [x86_64-linux]
> commit f1100fea2b67538b277d2f4c60f795de1320c6a3 (upstream/master)
> Author: Alan Conway <[email protected]>
> Date:   Wed Mar 7 23:48:25 2018 -0500
>     NO-JIRA: [ruby] extra URI tests, better exception message.
>            Reporter: Jiri Daněk
>            Assignee: Alan Conway
>            Priority: Major
>             Fix For: proton-c-0.22.0
>
>
> When sending a message with message properties set, the following exception 
> is thrown
> {noformat}
> % ruby bin/cli-proton-ruby-sender --msg-property=key1~10.5 :(
> Traceback (most% ruby bin/cli-proton-ruby-sender --msg-property=key1~10.5 :(
> Traceback (most recent call last):
> 15: from bin/cli-proton-ruby-sender:21:in `<main>'
> 14: from bin/cli-proton-ruby-sender:21:in `new'
> 13: from /home/jdanek/Work/repos/cli-proton-ruby/lib/sender_client.rb:52:in 
> `initialize'
> 12: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/container.rb:263:in
>  `run'
> 11: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:196:in
>  `process'
> 10: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:180:in
>  `dispatch'
> 9: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:78:in
>  `each_event'
> 8: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:185:in
>  `block in dispatch'
> 7: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/event.rb:94:in 
> `dispatch'
> 6: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/handler/messaging_adapter.rb:131:in
>  `on_link_flow'
> 5: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/handler/messaging_adapter.rb:27:in
>  `delegate'
> 4: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/handler/adapter.rb:74:in
>  `forward'
> 3: from 
> /home/jdanek/Work/repos/cli-proton-ruby/lib/handlers/sender_handler.rb:165:in 
> `on_sendable'
> 2: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/sender.rb:76:in 
> `send'
> 1: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/message.rb:60:in
>  `encode'
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/message.rb:77:in
>  `pre_encode': undefined method `symbol_keys!' for Qpid::Proton::Types:Module 
> (NoMethodError)
>  recent call last):
> 15: from bin/cli-proton-ruby-sender:21:in `<main>'
> 14: from bin/cli-proton-ruby-sender:21:in `new'
> 13: from /home/jdanek/Work/repos/cli-proton-ruby/lib/sender_client.rb:52:in 
> `initialize'
> 12: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/container.rb:263:in
>  `run'
> 11: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:196:in
>  `process'
> 10: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:180:in
>  `dispatch'
> 9: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:78:in
>  `each_event'
> 8: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/connection_driver.rb:185:in
>  `block in dispatch'
> 7: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/event.rb:94:in 
> `dispatch'
> 6: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/handler/messaging_adapter.rb:131:in
>  `on_link_flow'
> 5: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/handler/messaging_adapter.rb:27:in
>  `delegate'
> 4: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/handler/adapter.rb:74:in
>  `forward'
> 3: from 
> /home/jdanek/Work/repos/cli-proton-ruby/lib/handlers/sender_handler.rb:165:in 
> `on_sendable'
> 2: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/sender.rb:76:in 
> `send'
> 1: from 
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/message.rb:60:in
>  `encode'
> /home/jdanek/.gem/ruby/2.5.0/gems/qpid_proton-0.22.0/lib/core/message.rb:77:in
>  `pre_encode': undefined method `symbol_keys!' for Qpid::Proton::Types:Module 
> (NoMethodError)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to