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
I was doing a rolling upgrade of my test cluster broker from RabbitMQ version 3.8.14 to 3.8.16 and found a behaviour change in the management API. For an incoming 3.8.16 node, it’s /api/queues response is missing several fields, such as state (examples at the bottom). This missing fields, however, can still be seen with:
Versions prior to 3.8.16 do not have pg and versions starting with 3.8.16 are not guaranteed to have pg2. I'm afraid there isn't much we can do. We very intentionally did not try to develop a bridge module: our team has reinvented enough things that modern OTP has that we try to avoid doing that as much as possible. We are willing to accept this behavior and focus on other things.
The two versions are interoperable in other ways (e.g. a client would not know what version it is connected to). As soon
as all nodes are upgraded, the behavior is consistent again as all nodes use the same group membership module,
and all queue stats are available from any node again.
This issue is specific to metric collection that uses the management plugin. If metrics are collected using Prometheus, every node will only serve its own stats. Therefore it should not matter what process group membership module is used on its cluster peers.
Hi there,
I was doing a rolling upgrade of my test cluster broker from RabbitMQ version 3.8.14 to 3.8.16 and found a behaviour change in the management API. For an incoming 3.8.16 node, it’s
/api/queues
response is missing several fields, such as state (examples at the bottom). This missing fields, however, can still be seen with:rabbitmqctl list_queues name state ...
rabbitmqctl eval '{ok, Q} = rabbit_amqqueue:lookup(rabbit_misc:r(<<"/">>, queue, <<"test">>)), rabbit_amqqueue:info(Q).'
/api/queues
on a remaining 3.8.14 nodeAs a note, I did not encounter this when upgrading my broker from 3.8.13 to 3.8.14.
Diving into the code, I’ve traced the source of the difference as far as
pg2:get_members/1
vs.pg:get_members/2
(updated for OTP 24 support)It looks like previously, pg2 would have returned a remote PID. Now it returns a local PID of a process that does not seem to have this data.
Once the 3.8.14 node is removed, then the management API returns the expected result.
Reproduction
ha-sync-mode: automatic
Example
/api/queues
responsesNew 3.8.16 node:
Existing 3.8.14 node:
The text was updated successfully, but these errors were encountered: