Skip to content

Commit 1f31485

Browse files
committed
[DCV-3765] Fallback to full reparse when partial parse fails
1 parent f835332 commit 1f31485

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

src/dbt_core_interface/project.py

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)