diff options
| author | Dan Engelbrecht <[email protected]> | 2023-11-16 18:47:04 +0100 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-11-16 18:47:04 +0100 |
| commit | 58cf8407214177bd9b2accd98f0b9284f044e14b (patch) | |
| tree | 07eb03483a1dc99f403cf4fd34eb7ba6f27e4109 /src/zenserver/zenserver.cpp | |
| parent | further posix event improvements (#549) (diff) | |
| download | zen-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.cpp | 21 |
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); + } } } } |