summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-06-26 04:01:10 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-06-26 04:01:10 +0300
commit9aead56e29e5d660623f6a22a9765e7f8c83965b (patch)
tree0466859ecf748c4c5af66a19c24dc429aaca758b /src
parentf8c36c2cf57e5932ab04cca4b714525e46f48231 (diff)
downloadrabbitmq-server-git-9aead56e29e5d660623f6a22a9765e7f8c83965b.tar.gz
Export definitions on boot after all plugins have been enabled
This way definitions that depend on a plugin, such as federation upstreams or exchanges of custom types, can be imported successfully. Closes #2384
Diffstat (limited to 'src')
-rw-r--r--src/rabbit.erl17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 83f9e4a02a..934e527ae2 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -104,17 +104,7 @@
-rabbit_boot_step({definition_import_worker_pool,
[{description, "dedicated worker pool for definition import"},
{mfa, {rabbit_definitions, boot, []}},
- {requires, external_infrastructure},
- {enables, load_core_definitions}]}).
-
-%% We want to A) make sure we apply definitions before the node begins serving
-%% traffic and B) in fact do it before empty_db_check (so the defaults will not
-%% get created if we don't need 'em).
--rabbit_boot_step({load_core_definitions,
- [{description, "imports definitions"},
- {mfa, {rabbit_definitions, maybe_load_definitions, []}},
- {requires, [recovery, definition_import_worker_pool]},
- {enables, empty_db_check}]}).
+ {requires, external_infrastructure}]}).
-rabbit_boot_step({external_infrastructure,
[{description, "external infrastructure ready"}]}).
@@ -935,7 +925,10 @@ do_run_postlaunch_phase() ->
ok = rabbit_lager:broker_is_started(),
ok = log_broker_started(
- rabbit_plugins:strictly_plugins(rabbit_plugins:active()))
+ rabbit_plugins:strictly_plugins(rabbit_plugins:active())),
+ %% export definitions after all plugins have been enabled,
+ %% see rabbitmq/rabbitmq-server#2384
+ rabbit_definitions:maybe_load_definitions()
catch
throw:{error, _} = Error ->
rabbit_prelaunch_errors:log_error(Error),