qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Conway (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PROTON-1466) Container.create_receiver() does not create all receivers with certain names
Date Tue, 09 May 2017 18:11:04 GMT

    [ https://issues.apache.org/jira/browse/PROTON-1466?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16003207#comment-16003207
] 

Alan Conway commented on PROTON-1466:
-------------------------------------

The bug is on the qpidd broker side. It appears that creating a receiver with a name that
is a prefix of a previously created receiver's name (on the same connection/session) somehow
gets ignored. You can workaround by avoiding names that are prefixes of each other e.g. change
resource_manager to resource_managerX in the example. However this is not normal behavior,
a fix will be forthcoming...

> Container.create_receiver() does not create all receivers with certain names
> ----------------------------------------------------------------------------
>
>                 Key: PROTON-1466
>                 URL: https://issues.apache.org/jira/browse/PROTON-1466
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: python-binding
>    Affects Versions: 0.17.0
>            Reporter: Brian Bouterse
>            Assignee: Alan Conway
>
> On an empty broker create three queues:
> {noformat}
> qpid-config add queue resource_manager@dev.celery.pidbox
> qpid-config add queue resource_manager
> qpid-config add queue resource_manager@dev.dq
> {noformat}
> Run the reproducer below `python three_consumers.py`
> {code:title=three_consumers.py|borderStyle=solid}
> from __future__ import print_function
> from proton.handlers import MessagingHandler
> from proton.reactor import Container
> class ThreeConsumers(MessagingHandler):
>     def __init__(self):
>         super(ThreeConsumers, self).__init__()
>     def on_start(self, event):
>         self.conn = event.container.connect('localhost:5672')
>         event.container.create_receiver(self.conn, 'resource_manager@dev.celery.pidbox')
>         event.container.create_receiver(self.conn, 'resource_manager')
>         event.container.create_receiver(self.conn, 'resource_manager@dev.dq')
>     def on_message(self, event):
>         print(event.message.body)
> try:
>     Container(ThreeConsumers()).run()
> except KeyboardInterrupt:
>     pass
> {code}
> Show the queue stats with:
> {noformat}qpid-stat -q{noformat}
> Observe that each queue created should have a consumer but it does not. See the "cons"
column.
> {noformat}
> Queues
>   queue                                     dur  autoDel  excl  msg   msgIn  msgOut 
bytes  bytesIn  bytesOut  cons  bind
>   =========================================================================================================================
>   51b5638e-cddc-4301-a0d8-73e44849cf01:0.0       Y        Y        0     0      0   
   0      0        0         1     2
>   resource_manager                          Y                      0     2      2   
   0   2.25k    2.25k        1     2
>   resource_manager@dev.celery.pidbox                               0     0      0   
   0      0        0         0     1
>   resource_manager@dev.dq                                          0     0      0   
   0      0        0         1     1
> {noformat}
> Note that reordering the create_receiver calls or commenting them out causes different
consumer counts.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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


Mime
View raw message