diff --git a/node-daemon/pvcnoded/Daemon.py b/node-daemon/pvcnoded/Daemon.py index d5778738..48fb9927 100644 --- a/node-daemon/pvcnoded/Daemon.py +++ b/node-daemon/pvcnoded/Daemon.py @@ -197,7 +197,9 @@ def entrypoint(): os.execv(sys.argv[0], sys.argv) # Validate the schema - pvcnoded.util.zookeeper.validate_schema(logger, zkhandler) + with zkhandler.writelock("base.schema.version"): + sleep(0.5) + pvcnoded.util.zookeeper.validate_schema(logger, zkhandler) # Define a cleanup function def cleanup(failure=False): diff --git a/node-daemon/pvcnoded/util/zookeeper.py b/node-daemon/pvcnoded/util/zookeeper.py index 17e896ef..5afe04d9 100644 --- a/node-daemon/pvcnoded/util/zookeeper.py +++ b/node-daemon/pvcnoded/util/zookeeper.py @@ -94,7 +94,10 @@ def validate_schema(logger, zkhandler): # Validate our schema against the active version if not zkhandler.schema.validate(zkhandler, logger): logger.out("Found schema violations, applying", state="i") - zkhandler.schema.apply(zkhandler) + try: + zkhandler.schema.apply(zkhandler) + except Exception as e: + logger.out(f"Failed to apply schema updates: {e}", state="w") else: logger.out("Schema successfully validated", state="o")