@@ -696,6 +696,7 @@ def __init__(
696696 stdout : TextIO ,
697697 stderr : TextIO ,
698698 error_formatter : ErrorFormatter | None = None ,
699+ parallel_worker : bool = False ,
699700 ) -> None :
700701 self .stats : dict [str , Any ] = {} # Values are ints or floats
701702 self .stdout = stdout
@@ -769,7 +770,7 @@ def __init__(
769770 ]
770771 )
771772
772- self .metastore = create_metastore (options )
773+ self .metastore = create_metastore (options , parallel_worker )
773774
774775 # a mapping from source files to their corresponding shadow files
775776 # for efficient lookup
@@ -818,7 +819,7 @@ def __init__(
818819 # A global adding order for SCC queue, see comment above.
819820 self .queue_order : int = 0
820821 # Is this an instance used by a parallel worker?
821- self .parallel_worker = False
822+ self .parallel_worker = parallel_worker
822823
823824 def dump_stats (self ) -> None :
824825 if self .options .dump_build_stats :
@@ -1397,10 +1398,13 @@ def exclude_from_backups(target_dir: str) -> None:
13971398 pass
13981399
13991400
1400- def create_metastore (options : Options ) -> MetadataStore :
1401+ def create_metastore (options : Options , parallel_worker : bool = False ) -> MetadataStore :
14011402 """Create the appropriate metadata store."""
14021403 if options .sqlite_cache :
1403- mds : MetadataStore = SqliteMetadataStore (_cache_dir_prefix (options ))
1404+ # We use this flag in both coordinator and workers to seep up commits,
1405+ # see mypy.metastore.connect_db() for details.
1406+ sync_off = options .num_workers > 0 or parallel_worker
1407+ mds : MetadataStore = SqliteMetadataStore (_cache_dir_prefix (options ), sync_off = sync_off )
14041408 else :
14051409 mds = FilesystemMetadataStore (_cache_dir_prefix (options ))
14061410 return mds
0 commit comments