The message says that the exchange type was not registered at the time a client attempted to use it, not that
an exchange could not be recovered. In the log, the client attempts to perform an operation even before feature flags are settled,
which is early during boot.
While plugin activation and a lot of other node startup time bits were heavily refactored in 3.8.4,
It was always a possibility that a client tried to do something in parallel with plugin activation.
Can you confirm that the plugin is enabled and becomes functional at some point?
--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
rabbitmq-user...@googlegroups.com.
To view this discussion on the web, visit
https://groups.google.com/d/msgid/rabbitmq-users/9c68ea9e-d36d-435d-bda5-7229ce585ba4%40googlegroups.com.
Assuming that your development environment starts a node then immediately connects to it,
simply introducing a 2-3 second delay before clients start any activity will help as the plugin
will start and register its exchange type before the node services its first connection.
To view this discussion on the web, visit
https://groups.google.com/d/msgid/rabbitmq-users/6C6D01BC-6551-4CDE-81EC-3A23C3AA373F%40vmware.com.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitm...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitm...@googlegroups.com.
To view this discussion on the web, visit https://groups.google.com/d/msgid/rabbitmq-users/9c68ea9e-d36d-435d-bda5-7229ce585ba4%40googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "rabbitmq-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rabbitm...@googlegroups.com.
This is a reasonable hypothesis. We will find out next week. Debug logging should reveal a fair amount of information, so even tracing
the node likely won’t be necessary. However, if data recovery failed for the plugin I’d actually expect this to be a lasting condition. It is very
likely that a single client operation fails, the channel is closed, and the rest of the system doesn’t even notice. Then the following connections
succeed. We have seen this in different scenarios before, e.g. when a virtual host was not started on some nodes but a client already tried to use
it on others.
It’s not that we tried to parallelize plugin activation. RabbitMQ nodes do quite a bit on boot (any data service does) and simply by the virtue of
being an Erlang-based system, given enough CPU cores some of these operations will naturally run in parallel. Most of the time this is fine.
Other things are made explicitly sequential. Data recovery and plugin activation have a bit of a chicken-and-egg problem (and we have many more
during node boot).
However, we do not control client connections or CLI tool activity during boot. We can and try enable client listeners at a very late point in the boot.
Looks like recent refactoring of configuration and environment variable setup/discovery has affected boot step execution. But the problem
has always existed one way or another. Unless we synchronise absolutely everything to finish before we start client connection listeners,
there’s always a probability that a client connection and operation can happen “too early”. Improvements in this area
can require changes too extensive to justify for our small team.
So I’d assume that a node cannot be used immediately after it can accept client TCP connections. Usually a delay in a second or two would not make
any practical difference.
To unsubscribe from this group and stop receiving emails from it, send an email to
rabbitmq-user...@googlegroups.com.
To view this discussion on the web, visit
https://groups.google.com/d/msgid/rabbitmq-users/f21bf3a1-aeac-4af9-a1b4-05420aebc400%40googlegroups.com.
See
rabbitmqctl help await_startup
It may or may not be sufficiently different but at the very least it is aware of the node’s boot process (it returns when
an internal “I am booting” marker on the node is removed), unlike something that tests for a TCP acceptor to be up.
Listening on a port does not mean the service is fully ready to serve traffic on it (in general, not just in case of RabbitMQ)
To unsubscribe from this group and stop receiving emails from it, send an email to
rabbitmq-user...@googlegroups.com.
To view this discussion on the web, visit
https://groups.google.com/d/msgid/rabbitmq-users/e4eb5c22-6236-4c49-997a-1d46a43796af%40googlegroups.com.