diff options
-rw-r--r-- | src/fabric/src/fabric2_fdb.erl | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/fabric/src/fabric2_fdb.erl b/src/fabric/src/fabric2_fdb.erl index 926b28cc9..1d40f4f39 100644 --- a/src/fabric/src/fabric2_fdb.erl +++ b/src/fabric/src/fabric2_fdb.erl @@ -1305,6 +1305,7 @@ ensure_current(#{} = Db0, CheckDbVersion) -> Db2 = case {MDVersionChanged, CheckDbVersion} of {true, true} -> + ok = check_layer_prefix(Db0), ok = check_db_version(Db0), % Don't update check_current_ts if it doesn't exist @@ -1321,7 +1322,7 @@ ensure_current(#{} = Db0, CheckDbVersion) -> % This means we've only been asked to check that the % MDVersion has changed when operating at the database % level for creation and deletion operations. - ok; + ok = check_layer_prefix(Db0); {false, _} -> % The MDVersion hasn't changed which means we can % skip the db version check. However, we want to @@ -1380,6 +1381,22 @@ check_metadata_version(#{} = Db) -> end. +check_layer_prefix(#{} = Db) -> + #{ + tx := Tx, + layer_prefix := OldLayerPrefix + } = Db, + + Root = erlfdb_directory:root(), + Dir = fabric2_server:fdb_directory(), + CouchDB = erlfdb_directory:create_or_open(Tx, Root, Dir), + CurrLayerPrefix = erlfdb_directory:get_name(CouchDB), + + if OldLayerPrefix == CurrLayerPrefix -> ok; true -> + throw({?MODULE, reopen}) + end. + + bump_db_version(#{} = Db) -> #{ tx := Tx, |