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
This commit is contained in:
Christian Decker 2022-07-26 13:20:03 +02:00 committed by neil saitug
parent 17b9bd5ca3
commit b55df5c626

View file

@ -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():