116116 run_tests ,
117117)
118118from sqlmesh .core .user import User
119- from sqlmesh .utils import UniqueKeyDict , Verbosity , CorrelationId
119+ from sqlmesh .utils import UniqueKeyDict , Verbosity
120120from sqlmesh .utils .concurrency import concurrent_apply_to_values
121121from sqlmesh .utils .dag import DAG
122122from sqlmesh .utils .date import (
@@ -417,7 +417,7 @@ def __init__(
417417 self .config .get_state_connection (self .gateway ) or self .connection_config
418418 )
419419
420- self ._snapshot_evaluators : t .Dict [ t . Optional [CorrelationId ], SnapshotEvaluator ] = {}
420+ self ._snapshot_evaluator : t .Optional [SnapshotEvaluator ] = None
421421
422422 self .console = get_console ()
423423 setattr (self .console , "dialect" , self .config .dialect )
@@ -445,22 +445,18 @@ def engine_adapter(self) -> EngineAdapter:
445445 self ._engine_adapter = self .connection_config .create_engine_adapter ()
446446 return self ._engine_adapter
447447
448- def snapshot_evaluator (
449- self , correlation_id : t .Optional [CorrelationId ] = None
450- ) -> SnapshotEvaluator :
451- # Cache snapshot evaluators by correlation_id to avoid old correlation_ids being attached to future Context operations
452- if correlation_id not in self ._snapshot_evaluators :
453- self ._snapshot_evaluators [correlation_id ] = SnapshotEvaluator (
448+ @property
449+ def snapshot_evaluator (self ) -> SnapshotEvaluator :
450+ if not self ._snapshot_evaluator :
451+ self ._snapshot_evaluator = SnapshotEvaluator (
454452 {
455- gateway : adapter .with_settings (
456- log_level = logging .INFO , correlation_id = correlation_id
457- )
453+ gateway : adapter .with_settings (log_level = logging .INFO )
458454 for gateway , adapter in self .engine_adapters .items ()
459455 },
460456 ddl_concurrent_tasks = self .concurrent_tasks ,
461457 selected_gateway = self .selected_gateway ,
462458 )
463- return self ._snapshot_evaluators [ correlation_id ]
459+ return self ._snapshot_evaluator
464460
465461 def execution_context (
466462 self ,
@@ -541,9 +537,7 @@ def scheduler(self, environment: t.Optional[str] = None) -> Scheduler:
541537
542538 return self .create_scheduler (snapshots )
543539
544- def create_scheduler (
545- self , snapshots : t .Iterable [Snapshot ], correlation_id : t .Optional [CorrelationId ] = None
546- ) -> Scheduler :
540+ def create_scheduler (self , snapshots : t .Iterable [Snapshot ]) -> Scheduler :
547541 """Creates the built-in scheduler.
548542
549543 Args:
@@ -554,7 +548,7 @@ def create_scheduler(
554548 """
555549 return Scheduler (
556550 snapshots ,
557- self .snapshot_evaluator ( correlation_id ) ,
551+ self .snapshot_evaluator ,
558552 self .state_sync ,
559553 default_catalog = self .default_catalog ,
560554 max_workers = self .concurrent_tasks ,
@@ -719,7 +713,7 @@ def run(
719713 NotificationEvent .RUN_START , environment = environment
720714 )
721715 analytics_run_id = analytics .collector .on_run_start (
722- engine_type = self .snapshot_evaluator () .adapter .dialect ,
716+ engine_type = self .snapshot_evaluator .adapter .dialect ,
723717 state_sync_type = self .state_sync .state_type (),
724718 )
725719 self ._load_materializations ()
@@ -1081,7 +1075,7 @@ def evaluate(
10811075 and not parent_snapshot .categorized
10821076 ]
10831077
1084- df = self .snapshot_evaluator () .evaluate_and_fetch (
1078+ df = self .snapshot_evaluator .evaluate_and_fetch (
10851079 snapshot ,
10861080 start = start ,
10871081 end = end ,
@@ -1593,12 +1587,7 @@ def apply(
15931587 default_catalog = self .default_catalog ,
15941588 console = self .console ,
15951589 )
1596- explainer .evaluate (
1597- plan .to_evaluatable (),
1598- snapshot_evaluator = self .snapshot_evaluator (
1599- correlation_id = CorrelationId .from_plan_id (plan .plan_id )
1600- ),
1601- )
1590+ explainer .evaluate (plan .to_evaluatable ())
16021591 return
16031592
16041593 self .notification_target_manager .notify (
@@ -2121,7 +2110,7 @@ def audit(
21212110 errors = []
21222111 skipped_count = 0
21232112 for snapshot in snapshots :
2124- for audit_result in self .snapshot_evaluator () .audit (
2113+ for audit_result in self .snapshot_evaluator .audit (
21252114 snapshot = snapshot ,
21262115 start = start ,
21272116 end = end ,
@@ -2153,7 +2142,7 @@ def audit(
21532142 self .console .log_status_update (f"Got { error .count } results, expected 0." )
21542143 if error .query :
21552144 self .console .show_sql (
2156- f"{ error .query .sql (dialect = self .snapshot_evaluator () .adapter .dialect )} "
2145+ f"{ error .query .sql (dialect = self .snapshot_evaluator .adapter .dialect )} "
21572146 )
21582147
21592148 self .console .log_status_update ("Done." )
@@ -2345,14 +2334,12 @@ def print_environment_names(self) -> None:
23452334
23462335 def close (self ) -> None :
23472336 """Releases all resources allocated by this context."""
2348- for evaluator in self ._snapshot_evaluators . values () :
2349- evaluator .close ()
2337+ if self ._snapshot_evaluator :
2338+ self . _snapshot_evaluator .close ()
23502339
23512340 if self ._state_sync :
23522341 self ._state_sync .close ()
23532342
2354- self ._snapshot_evaluators .clear ()
2355-
23562343 def _run (
23572344 self ,
23582345 environment : str ,
@@ -2403,11 +2390,7 @@ def _run(
24032390
24042391 def _apply (self , plan : Plan , circuit_breaker : t .Optional [t .Callable [[], bool ]]) -> None :
24052392 self ._scheduler .create_plan_evaluator (self ).evaluate (
2406- plan .to_evaluatable (),
2407- snapshot_evaluator = self .snapshot_evaluator (
2408- correlation_id = CorrelationId .from_plan_id (plan .plan_id )
2409- ),
2410- circuit_breaker = circuit_breaker ,
2393+ plan .to_evaluatable (), circuit_breaker = circuit_breaker
24112394 )
24122395
24132396 @python_api_analytics
@@ -2700,7 +2683,7 @@ def _run_janitor(self, ignore_ttl: bool = False) -> None:
27002683 )
27012684
27022685 # Remove the expired snapshots tables
2703- self .snapshot_evaluator () .cleanup (
2686+ self .snapshot_evaluator .cleanup (
27042687 target_snapshots = cleanup_targets ,
27052688 on_complete = self .console .update_cleanup_progress ,
27062689 )
0 commit comments