@@ -546,10 +546,29 @@ def parse_project(
546546 self .__manifest_loader .manifest .state_check = (
547547 self .__manifest_loader .build_manifest_state_check ()
548548 )
549- self ._manifest = self .__manifest_loader .saved_manifest = self .__manifest_loader .load ()
550- if not self .__manifest_loader .skip_parsing :
551- self ._manifest .build_flat_graph ()
552- self ._manifest .build_group_map ()
549+ try :
550+ self ._manifest = self .__manifest_loader .saved_manifest = (
551+ self .__manifest_loader .load ()
552+ )
553+ if not self .__manifest_loader .skip_parsing :
554+ self ._manifest .build_flat_graph ()
555+ self ._manifest .build_group_map ()
556+ except Exception :
557+ if self .__manifest_loader .saved_manifest is not None :
558+ logger .warning ("Partial parse failed, forcing full reparse" )
559+ self .__manifest_loader .saved_manifest = None
560+ self .__manifest_loader .manifest = Manifest ()
561+ self .__manifest_loader .manifest .state_check = (
562+ self .__manifest_loader .build_manifest_state_check ()
563+ )
564+ self ._manifest = self .__manifest_loader .saved_manifest = (
565+ self .__manifest_loader .load ()
566+ )
567+ if not self .__manifest_loader .skip_parsing :
568+ self ._manifest .build_flat_graph ()
569+ self ._manifest .build_group_map ()
570+ else :
571+ raise
553572
554573 self ._sql_parser = None
555574 self ._macro_parser = None
0 commit comments