You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rabbit_db: Eliminate the delete_queue Khepri transaction
... by using `keep_while` conditions on bindings and auto-delete
exchanges.
[Why]
The `delete_queue` transaction's anonymous function has to be be
extracted by Horus, like any Khepri transaction. This is an expensive
operation, but Horus uses caching to avoid most work after the first
extraction.
The problem is when there are many concurrent executions of the same
transaction, before it has been executed once: the cache is not hot and
Horus has to extract the same transaction many times in parallel
currently.
An example of this situation is when there are massive disconnections
from RabbitMQ clients that trigger massive queue deletions. This can put
a lot of load on RabbitMQ.
[How]
This patch removes the entire transaction. Instead, it uses `keep_while`
conditions on bindings and auto-delete exchanges to let Khepri handle
the deletion of semantically related tree nodes. RabbitMQ just has to
make a simle "delete this queue" command.
0 commit comments