summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <klishinm@vmware.com>2023-01-30 06:37:24 -0500
committerGitHub <noreply@github.com>2023-01-30 06:37:24 -0500
commit251be71ebe5aaad17c89a13f23aa911eaffc8f01 (patch)
treeeee02a12dc857ebc292bccdd8e8013f7da230ec0
parent5dc2d9b828250d2514a664d4dd6516bd776b2fb6 (diff)
parent590fa68fdc501b9bbca0ace56a3941461e62fce7 (diff)
downloadrabbitmq-server-git-251be71ebe5aaad17c89a13f23aa911eaffc8f01.tar.gz
Merge pull request #7079 from rabbitmq/gh-7068
Fix direct_exchange_routing_v2 migration
-rw-r--r--deps/rabbit/src/rabbit_core_ff.erl13
-rw-r--r--deps/rabbit/src/rabbit_table.erl5
2 files changed, 11 insertions, 7 deletions
diff --git a/deps/rabbit/src/rabbit_core_ff.erl b/deps/rabbit/src/rabbit_core_ff.erl
index 2be2bd23b3..825fb11c80 100644
--- a/deps/rabbit/src/rabbit_core_ff.erl
+++ b/deps/rabbit/src/rabbit_core_ff.erl
@@ -133,19 +133,22 @@
Args :: rabbit_feature_flags:enable_callback_args(),
Ret :: rabbit_feature_flags:enable_callback_ret().
direct_exchange_routing_v2_enable(#{feature_name := FeatureName}) ->
- TableName = rabbit_index_route,
- ok = rabbit_table:wait([rabbit_route, rabbit_exchange], _Retry = true),
+ DependantTables = [rabbit_route, rabbit_exchange],
+ ok = rabbit_table:wait(DependantTables, _Retry = true),
+ [ok = rabbit_table:create_local_copy(Tab, ram_copies) || Tab <- DependantTables],
+
+ NewTable = rabbit_index_route,
try
ok = rabbit_table:create(
- TableName, rabbit_table:rabbit_index_route_definition()),
- case rabbit_table:ensure_table_copy(TableName, node(), ram_copies) of
+ NewTable, rabbit_table:rabbit_index_route_definition()),
+ case rabbit_table:ensure_table_copy(NewTable, node(), ram_copies) of
ok ->
ok = rabbit_binding:populate_index_route_table();
{error, Err} = Error ->
?LOG_ERROR(
"Feature flags: `~ts`: failed to add copy of table ~ts to "
"node ~tp: ~tp",
- [FeatureName, TableName, node(), Err],
+ [FeatureName, NewTable, node(), Err],
#{domain => ?RMQLOG_DOMAIN_FEAT_FLAGS}),
Error
end
diff --git a/deps/rabbit/src/rabbit_table.erl b/deps/rabbit/src/rabbit_table.erl
index b5d2307171..6418f68c1d 100644
--- a/deps/rabbit/src/rabbit_table.erl
+++ b/deps/rabbit/src/rabbit_table.erl
@@ -9,7 +9,7 @@
-export([
create/0, create/2, ensure_local_copies/1, ensure_table_copy/3,
- wait_for_replicated/1, wait/1, wait/2,
+ create_local_copy/2, wait_for_replicated/1, wait/1, wait/2,
force_load/0, is_present/0, is_empty/0, needs_default_data/0,
check_schema_integrity/1, clear_ram_only_tables/0, retry_timeout/0,
wait_for_replicated/0, exists/1]).
@@ -74,7 +74,7 @@ ensure_secondary_index(Table, Field) ->
{aborted, {already_exists, Table, _}} -> ok
end.
--spec ensure_table_copy(atom(), node(), ram_copies | disc_copies) ->
+-spec ensure_table_copy(mnesia:table(), node(), mnesia:storage_type()) ->
ok | {error, any()}.
ensure_table_copy(TableName, Node, StorageType) ->
rabbit_log:debug("Will add a local schema database copy for table '~ts'", [TableName]),
@@ -239,6 +239,7 @@ create_local_copies(Type) ->
end, definitions(Type)),
ok.
+-spec create_local_copy(mnesia:table(), mnesia:storage_type()) -> ok.
create_local_copy(Tab, Type) ->
StorageType = mnesia:table_info(Tab, storage_type),
{atomic, ok} =