From b55df5c62648ceaae5bd8558c7a3ebaecfe5f3a2 Mon Sep 17 00:00:00 2001 From: Christian Decker Date: Tue, 26 Jul 2022 13:20:03 +0200 Subject: [PATCH] msggen: Use tempfile + rename to make changes to .msggen.json atomic This was causing issues when multiple instances of msggen were running in parallel on CI. Changelog-None --- contrib/msggen/msggen/__main__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib/msggen/msggen/__main__.py b/contrib/msggen/msggen/__main__.py index e6257efcf..cb221f3b6 100644 --- a/contrib/msggen/msggen/__main__.py +++ b/contrib/msggen/msggen/__main__.py @@ -1,4 +1,5 @@ import json +import os from msggen.gen.grpc import GrpcGenerator, GrpcConverterGenerator, GrpcUnconverterGenerator, GrpcServerGenerator from msggen.gen.grpc2py import Grpc2PyGenerator from msggen.gen.rust import RustGenerator @@ -41,8 +42,10 @@ def load_msggen_meta(): def write_msggen_meta(meta): - with open('.msggen.json', 'w') as f: + pid = os.getpid() + with open(f'.msggen.json.tmp.{pid}', 'w') as f: json.dump(meta, f, sort_keys=True, indent=4) + os.rename(f'.msggen.json.tmp.{pid}', '.msggen.json') def run():