Просмотр исходного кода

fix(dsraft): ensure DB config compat with earlier releases

Andrew Mayorov 1 год назад
Родитель
Сommit
c11872c30e
1 измененных файлов с 10 добавлено и 0 удалено
  1. 10 0
      apps/emqx_ds_builtin_raft/src/emqx_ds_replication_layer_meta.erl

+ 10 - 0
apps/emqx_ds_builtin_raft/src/emqx_ds_replication_layer_meta.erl

@@ -518,6 +518,16 @@ open_db_trans(DB, CreateOpts) ->
             mnesia:write(#?META_TAB{db = DB, db_props = CreateOpts}),
             CreateOpts;
         [#?META_TAB{db_props = Opts}] ->
+            case maps:merge(CreateOpts, Opts) of
+                Opts ->
+                    ok;
+                UpdatedOpts ->
+                    %% NOTE
+                    %% Preserve any new options not yet present in the DB. This is
+                    %% most likely because `Opts` is outdated, written by earlier
+                    %% EMQX version.
+                    mnesia:write(#?META_TAB{db = DB, db_props = UpdatedOpts})
+            end,
             Opts
     end.