Activity log for bug #1661510

Date Who What changed Old value New value Message
2017-02-03 07:05:47 JiaJunsu bug added bug
2017-02-08 01:59:31 JiaJunsu description If neutron agent get started before server, the agents' report_state messages may be trashed by RabbitMQ server. Oslo.messaging only declare exchange but not queue when send a 'topic' message[1]. In RabbitMQ-server's tutorials, it said 'If we send a message to non-existing location, RabbitMQ will just trash the message'[2]. We've found this may make agents' messages get lost when server is not started. The worse thing is that the agents will wait for those messges until getting timeout. We hope agents to report_state as soon as server getting started. There are three optional way to solve this: 1.Do not declare exchange when sending 'topic' messages, we will get exception if msg is sent to non-existing exchange. 2.Make sure the queue is exist before sending messages, and raise QueueNotFound exception if we found queue non-existing. 3.Declare the queue before sending messages, just like what notify_send do. [1]https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/_drivers/impl_rabbit.py#L1276 [2]https://www.rabbitmq.com/tutorials/tutorial-one-python.html If neutron agents get started before server, the agents' messages(sent to server) may be trashed by RabbitMQ. Oslo.messaging only declare exchange but not queue when send a 'topic' message[1]. In RabbitMQ-server's tutorials, it said 'If we send a message to non-existing location, RabbitMQ will just trash the message'[2]. We've found that may make agents' messages get lost when server is not started. The worse thing is that agents will wait for reply of those messges until timeout, that means agents could not provide service until they get waiting timeout and resend messages to server. We expect agents to receive reply messages and ready to work as soon as the server getting started. There may be three optional way to solve this: 1.Do not declare exchange when sending 'topic' messages, we will get exception if msg is sent to non-existing exchange. 2.Make sure the queue is exist before sending messages, and raise QueueNotFound exception if we found queue non-existing. 3.Declare the queue before sending messages, just like what notify_send do. [1]https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/_drivers/impl_rabbit.py#L1276 [2]https://www.rabbitmq.com/tutorials/tutorial-one-python.html
2018-07-09 19:51:19 Ken Giusti oslo.messaging: status New Confirmed
2018-07-09 19:51:32 Ken Giusti oslo.messaging: importance Undecided Medium
2019-04-29 13:12:59 Ken Giusti oslo.messaging: assignee Gabriele Santomaggio (gsantomaggio)
2019-05-14 14:31:25 OpenStack Infra oslo.messaging: status Confirmed In Progress
2019-06-03 09:38:16 Gabriele Santomaggio bug watch added https://github.com/celery/kombu/issues/1050