Comment 0 for bug 2073932

Revision history for this message
Jorge Merlino (jorge-merlino) wrote :

[Impact]

When a client terminates uncleanly, the global counters for publishers and consumers do not handle this gracefully.

For the consumer metric, the value of the gauge does not decrease after the termination, and so the value ever-increases.
For the publisher metric, the value of the gauge decreases below zero and does not recover, leading to a ever-decreasing negative value on the gauge.

[Test plan]

lxc launch ubuntu:jammy rabbitmq-jammy-test

lxc shell rabbitmq-jammy-test

apt install -y rabbitmq-server

echo '[rabbitmq_prometheus].' > /etc/rabbitmq/enabled_plugins

systemctl restart rabbitmq-server.service

wget https://github.com/rabbitmq/rabbitmq-perf-test/releases/download/v2.21.0/perf-test-2.21.0.jar

apt install -y default-jre

for i in $(seq 1 5); do java -jar perf-test-2.21.0.jar --time 5; curl -s 127.0.0.1:15692/metrics | grep -E 'rabbitmq_global_(consumers|publishers){'; done

The output of this command shows the value of the rabbitmq_global_consumers and rabbitmq_global_publishers after each execution of the test. The problem described of monotonically increasing and decreasing values will be observed. As we are connecting and disconnecting a single client the expected value should be 0 for both counters.

[Where problems could occur]

This is a simple patch that calls the functions for deleting consumers and publishers in the correct places. It should not break anything else than the counters themselves but they were broken to begin with.

[Other Info]

This was patched upstream from version 3.10 so this patch is already applied to Noble and Oracular that use version 3.12.