aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/zenserver.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-11-16 18:47:04 +0100
committerGitHub <[email protected]>2023-11-16 18:47:04 +0100
commit58cf8407214177bd9b2accd98f0b9284f044e14b (patch)
tree07eb03483a1dc99f403cf4fd34eb7ba6f27e4109 /src/zenserver/zenserver.cpp
parentfurther posix event improvements (#549) (diff)
downloadzen-58cf8407214177bd9b2accd98f0b9284f044e14b.tar.xz
zen-58cf8407214177bd9b2accd98f0b9284f044e14b.zip
add wipe prevention via file in data root dir (#548)
* if a file named root_manifest.ignore_schema_mismatch exists in the root data dir, ignore schema mismatch
Diffstat (limited to 'src/zenserver/zenserver.cpp')
-rw-r--r--src/zenserver/zenserver.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp
index b87679b7d..8359f5088 100644
--- a/src/zenserver/zenserver.cpp
+++ b/src/zenserver/zenserver.cpp
@@ -363,9 +363,24 @@ ZenServer::InitializeState(const ZenServerOptions& ServerOptions)
if (ManifestVersion != ZEN_CFG_SCHEMA_VERSION)
{
- WipeState = true;
- WipeReason =
- fmt::format("Manifest schema version: {}, differs from required: {}", ManifestVersion, ZEN_CFG_SCHEMA_VERSION);
+ std::filesystem::path ManifestSkipSchemaChangePath = m_DataRoot / "root_manifest.ignore_schema_mismatch";
+ if (ManifestVersion != 0 && std::filesystem::is_regular_file(ManifestSkipSchemaChangePath))
+ {
+ ZEN_INFO(
+ "Schema version {} found in '{}' does not match {}, ignoring mismatch due to existance of '{}' and updating "
+ "schema version",
+ ManifestVersion,
+ ManifestPath,
+ ZEN_CFG_SCHEMA_VERSION,
+ ManifestSkipSchemaChangePath);
+ UpdateManifest = true;
+ }
+ else
+ {
+ WipeState = true;
+ WipeReason =
+ fmt::format("Manifest schema version: {}, differs from required: {}", ManifestVersion, ZEN_CFG_SCHEMA_VERSION);
+ }
}
}
}