Skip to content

Commit 928e870

Browse files
authored
Fix: nothing to run message should not appear during plan (#3708)
1 parent 8ce4068 commit 928e870

2 files changed

Lines changed: 19 additions & 16 deletions

File tree

sqlmesh/core/context.py

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@
9494
SnapshotFingerprint,
9595
to_table_mapping,
9696
)
97+
from sqlmesh.core.snapshot.definition import get_next_model_interval_start
9798
from sqlmesh.core.state_sync import (
9899
CachingStateSync,
99100
StateReader,
@@ -111,7 +112,7 @@
111112
from sqlmesh.core.user import User
112113
from sqlmesh.utils import UniqueKeyDict, sys_path
113114
from sqlmesh.utils.dag import DAG
114-
from sqlmesh.utils.date import TimeLike, now_ds, to_timestamp
115+
from sqlmesh.utils.date import TimeLike, now_ds, to_timestamp, format_tz_datetime
115116
from sqlmesh.utils.errors import (
116117
CircuitBreakerError,
117118
ConfigError,
@@ -1951,7 +1952,7 @@ def _run(
19511952
select_models, no_auto_upstream, snapshots.values()
19521953
)
19531954

1954-
return scheduler.run(
1955+
completion_status = scheduler.run(
19551956
environment,
19561957
start=start,
19571958
end=end,
@@ -1962,6 +1963,22 @@ def _run(
19621963
auto_restatement_enabled=environment.lower() == c.PROD,
19631964
)
19641965

1966+
if completion_status.is_nothing_to_do:
1967+
next_run_ready_msg = ""
1968+
1969+
next_ready_interval_start = get_next_model_interval_start(snapshots.values())
1970+
if next_ready_interval_start:
1971+
utc_time = format_tz_datetime(next_ready_interval_start)
1972+
local_time = format_tz_datetime(next_ready_interval_start, use_local_timezone=True)
1973+
time_msg = local_time if local_time == utc_time else f"{local_time} ({utc_time})"
1974+
next_run_ready_msg = f"\n\nNext run will be ready at {time_msg}."
1975+
1976+
self.console.log_status_update(
1977+
f"No models are ready to run. Please wait until a model `cron` interval has elapsed.{next_run_ready_msg}"
1978+
)
1979+
1980+
return completion_status
1981+
19651982
def _apply(self, plan: Plan, circuit_breaker: t.Optional[t.Callable[[], bool]]) -> None:
19661983
self._scheduler.create_plan_evaluator(self).evaluate(
19671984
plan.to_evaluatable(), circuit_breaker=circuit_breaker

sqlmesh/core/scheduler.py

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
from sqlmesh.core.snapshot.definition import (
2727
Interval,
2828
expand_range,
29-
get_next_model_interval_start,
3029
parent_snapshots_by_name,
3130
)
3231
from sqlmesh.core.state_sync import StateSync
@@ -35,7 +34,6 @@
3534
from sqlmesh.utils.dag import DAG
3635
from sqlmesh.utils.date import (
3736
TimeLike,
38-
format_tz_datetime,
3937
now_timestamp,
4038
to_timestamp,
4139
validate_date_range,
@@ -313,18 +311,6 @@ def run(
313311
)
314312

315313
if not merged_intervals:
316-
next_run_ready_msg = ""
317-
318-
next_ready_interval_start = get_next_model_interval_start(self.snapshots.values())
319-
if next_ready_interval_start:
320-
utc_time = format_tz_datetime(next_ready_interval_start)
321-
local_time = format_tz_datetime(next_ready_interval_start, use_local_timezone=True)
322-
time_msg = local_time if local_time == utc_time else f"{local_time} ({utc_time})"
323-
next_run_ready_msg = f"\n\nNext run will be ready at {time_msg}."
324-
325-
self.console.log_status_update(
326-
f"No models are ready to run. Please wait until a model `cron` interval has elapsed.{next_run_ready_msg}"
327-
)
328314
return CompletionStatus.NOTHING_TO_DO
329315

330316
errors, skipped_intervals = self.run_merged_intervals(

0 commit comments

Comments
 (0)