rabbitmq: don't wait for message ack/requeue
I don't see any obvious reason why we should wait ack/requeue is done.
This waiter have already be removed from amqp1.
https://git.openstack.org/cgit/openstack/oslo.messaging/tree/oslo_messaging/_drivers/amqp1_driver/controller.py#n242
So, this change remove it from rabbitmq driver too.
Closes-bug: #1734788
Change-Id: I5ecedc762596181be19410b863851a0054fd6579
(cherry picked from commit c38857e110
)
This commit is contained in:
parent
761f4fc02b
commit
e1ac7f8862
@ -82,26 +82,14 @@ class MessageOperationsHandler(object):
|
|||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
task, event = self._tasks.get(block=False)
|
task = self._tasks.get(block=False)
|
||||||
except moves.queue.Empty:
|
except moves.queue.Empty:
|
||||||
break
|
break
|
||||||
try:
|
task()
|
||||||
task()
|
|
||||||
finally:
|
|
||||||
event.set()
|
|
||||||
|
|
||||||
def do(self, task):
|
def do(self, task):
|
||||||
"Put the task in the queue and waits until the task is completed."
|
"Put the task in the queue."
|
||||||
if self._executor is None:
|
self._tasks.put(task)
|
||||||
raise RuntimeError("Unexpected error, no executor is setuped")
|
|
||||||
elif self._executor == "blocking":
|
|
||||||
# NOTE(sileht): Blocking will hang forever if we waiting the
|
|
||||||
# polling thread
|
|
||||||
task()
|
|
||||||
else:
|
|
||||||
event = threading.Event()
|
|
||||||
self._tasks.put((task, event))
|
|
||||||
event.wait()
|
|
||||||
|
|
||||||
|
|
||||||
class AMQPIncomingMessage(base.RpcIncomingMessage):
|
class AMQPIncomingMessage(base.RpcIncomingMessage):
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
other:
|
||||||
|
- |
|
||||||
|
On rabbitmq, in the past, acknownlegement of messages was done within the
|
||||||
|
application callback thread/greenlet. This thread was blocked until the
|
||||||
|
message was ack. In newton, we rewrote the message acknownlegement to
|
||||||
|
ensure we haven't two threads writting the the socket at the same times.
|
||||||
|
Now all pendings ack are done by the main thread. They are no more reason
|
||||||
|
to block the application callback thread until the message is ack. Other
|
||||||
|
driver already release the application callback threads before the message
|
||||||
|
is acknownleged. This is also the case for rabbitmq, now.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user