File 1243-fix-merge-nodes-for-external_copies-cstruct.patch of Package erlang
From 9357748d39e76d55b11f450db9d6b6c3567d8a9a Mon Sep 17 00:00:00 2001
From: zmstone <zmstone@gmail.com>
Date: Thu, 6 Mar 2025 09:16:34 +0100
Subject: [PATCH 1/2] fix: merge nodes for external_copies cstruct
---
lib/mnesia/src/mnesia_schema.erl | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/mnesia/src/mnesia_schema.erl b/lib/mnesia/src/mnesia_schema.erl
index c73e0f7ed4..f34d7c88e5 100644
--- a/lib/mnesia/src/mnesia_schema.erl
+++ b/lib/mnesia/src/mnesia_schema.erl
@@ -3674,7 +3674,13 @@ change_storage_type(N, disc_copies, Cs) ->
Cs#cstruct{disc_copies = mnesia_lib:uniq(Nodes)};
change_storage_type(N, disc_only_copies, Cs) ->
Nodes = [N | Cs#cstruct.disc_only_copies],
- Cs#cstruct{disc_only_copies = mnesia_lib:uniq(Nodes)}.
+ Cs#cstruct{disc_only_copies = mnesia_lib:uniq(Nodes)};
+change_storage_type(N, {ext, Alias, Mod}, Cs) ->
+ Key = {Alias, Mod},
+ {_, Nodes0} = lists:keyfind(Key, 1, Cs#cstruct.external_copies),
+ Nodes = mnesia_lib:uniq([N | Nodes0]),
+ ExternalCopies = lists:keyreplace(Key, 1, Cs#cstruct.external_copies, {Key, Nodes}),
+ Cs#cstruct{external_copies = ExternalCopies}.
%% BUGBUG: Verify match of frag info; equalit demanded for all but add_node
--
2.43.0