← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1386810] [NEW] Keystone should not create a queue. Or it should empty the queue

 

Public bug reported:

If you enable "messaging"  keystone creates a queue "notificaiton.info"
and sends a message with the routing key "notification.info" to the
queue.

As per rabbitmq,  producer sends a message to an "Exchange" and
Consumer creates a queue and attaches to the exchange to receve the
message.  Producer never creates a queue unless it follows RPC semantics
to get a response.

Also keystone clients notificaiton  consumption pattern is different
from  other services such as nova.  Keystone consumers needs exclusive
access to the queue.

Consider the followign scenario where "glance" , "nova" is interrested
in "project.deleted" event.

Case 1: Consumer doesn't create a queue  instead takes the message from
"notificaiton.info" queue created by keystone

   1)   If glance picks  up the "project.deleted" event,   then the
message is lost. Nova can't get that message since the queue is not
exclusive.  Basically only one consumer can get the message  if they
connect to "notification.info" queue


Case 2:  Consumer creates "exclusive" queue and  attaches to the exchanges

     1) Glance creates a queue with random name and attaches to the exchange saying it is intersted in message with routing key "notification.info"
     2) Nova creates a queue with random name and attaches to the exchange saying it is intersted in message with routing key "notification.info"
     3) Since the queues are exclusive, each will get "project.deleted" event.
     4) This is the general consumtion pattern for "topic" exchange
     5)  But no one is emptying the message from "notification.info" queue that is created by "keystone". It will keep on accumulating.


So there are  2 ways to fix it. EIther don't create a queue  or add an listener which empties the queue.

Oslo by default creates a queue which is applicable to nova  but not to
keystone.

https://github.com/openstack/oslo.messaging/blob/master/oslo/messaging/_drivers/impl_rabbit.py#L411

** Affects: keystone
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Keystone.
https://bugs.launchpad.net/bugs/1386810

Title:
  Keystone should not create a queue. Or it should empty the queue

Status in OpenStack Identity (Keystone):
  New

Bug description:
  If you enable "messaging"  keystone creates a queue
  "notificaiton.info" and sends a message with the routing key
  "notification.info" to the queue.

  As per rabbitmq,  producer sends a message to an "Exchange" and
  Consumer creates a queue and attaches to the exchange to receve the
  message.  Producer never creates a queue unless it follows RPC
  semantics to get a response.

  Also keystone clients notificaiton  consumption pattern is different
  from  other services such as nova.  Keystone consumers needs exclusive
  access to the queue.

  Consider the followign scenario where "glance" , "nova" is interrested
  in "project.deleted" event.

  Case 1: Consumer doesn't create a queue  instead takes the message
  from "notificaiton.info" queue created by keystone

     1)   If glance picks  up the "project.deleted" event,   then the
  message is lost. Nova can't get that message since the queue is not
  exclusive.  Basically only one consumer can get the message  if they
  connect to "notification.info" queue

  
  Case 2:  Consumer creates "exclusive" queue and  attaches to the exchanges

       1) Glance creates a queue with random name and attaches to the exchange saying it is intersted in message with routing key "notification.info"
       2) Nova creates a queue with random name and attaches to the exchange saying it is intersted in message with routing key "notification.info"
       3) Since the queues are exclusive, each will get "project.deleted" event.
       4) This is the general consumtion pattern for "topic" exchange
       5)  But no one is emptying the message from "notification.info" queue that is created by "keystone". It will keep on accumulating.

  
  So there are  2 ways to fix it. EIther don't create a queue  or add an listener which empties the queue.

  Oslo by default creates a queue which is applicable to nova  but not
  to keystone.

  https://github.com/openstack/oslo.messaging/blob/master/oslo/messaging/_drivers/impl_rabbit.py#L411

To manage notifications about this bug go to:
https://bugs.launchpad.net/keystone/+bug/1386810/+subscriptions


Follow ups

References