Skip to content

Commit f9feb8b

Browse files
Sanjays2402StuffbyYuki
authored andcommitted
fix(engine_adapter): preserve pre_ping in with_settings
EngineAdapter.with_settings() did not forward the current _pre_ping value to the cloned adapter, and the constructor defaults pre_ping to False. Context.snapshot_evaluator clones the adapter this way, so pre_ping: true silently did not apply to model evaluation or the before_all/after_all environment statements, and a stale connection after a long run failed instead of being re-established. pre_ping is now carried over like the other settings, and remains overridable via an explicit keyword argument. Adds a regression test asserting the cloned adapter keeps pre_ping. Signed-off-by: Sanjay Santhanam <51058514+Sanjays2402@users.noreply.github.com>
1 parent 40a24dd commit f9feb8b

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

sqlmesh/core/engine_adapter/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ def with_settings(self, **kwargs: t.Any) -> EngineAdapter:
178178
"query_execution_tracker": kwargs.pop(
179179
"query_execution_tracker", self._query_execution_tracker
180180
),
181+
"pre_ping": kwargs.pop("pre_ping", self._pre_ping),
181182
**self._extra_config,
182183
**kwargs,
183184
}

tests/core/engine_adapter/test_base.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3522,6 +3522,15 @@ def test_pre_ping(mocker: MockerFixture, make_mocked_engine_adapter: t.Callable)
35223522
adapter._connection_pool.get().close.assert_called_once()
35233523

35243524

3525+
def test_with_settings_preserves_pre_ping(make_mocked_engine_adapter: t.Callable):
3526+
adapter = make_mocked_engine_adapter(EngineAdapter, pre_ping=True)
3527+
assert adapter.with_settings()._pre_ping is True
3528+
assert adapter.with_settings(pre_ping=False)._pre_ping is False
3529+
3530+
adapter = make_mocked_engine_adapter(EngineAdapter)
3531+
assert adapter.with_settings()._pre_ping is False
3532+
3533+
35253534
@pytest.mark.parametrize(
35263535
"partitioned_by",
35273536
[

0 commit comments

Comments
 (0)