You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jl...@apache.org on 2026/09/17 19:22:43 UTC
(superset) branch ultraset-master-health-db2-timeout created (now 7bfb9c97406)
This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a change to branch ultraset-master-health-db2-timeout
in repository https://gitbox.apache.org/repos/asf/superset.git
at 7bfb9c97406 Merge remote-tracking branch 'origin/master' into ultraset-master-health-db2-timeout
This branch includes the following new commits:
new 467d00a1070 fix(ci): give the db2 testcontainer boot real wait headroom
new 7bfb9c97406 Merge remote-tracking branch 'origin/master' into ultraset-master-health-db2-timeout
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(superset) 02/02: Merge remote-tracking branch 'origin/master' into ultraset-master-health-db2-timeout
Posted by jl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a commit to branch ultraset-master-health-db2-timeout
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 7bfb9c974063effbb5f72add019d6bad0a0b527a
Merge: 467d00a1070 77dbaafc2af
Author: sadpandajoe <47...@users.noreply.github.com>
AuthorDate: Thu Sep 17 19:21:59 2026 +0000
Merge remote-tracking branch 'origin/master' into ultraset-master-health-db2-timeout
.github/labeler.yml | 12 +
.github/workflows/asf-allowlist-check.yml | 2 +-
.github/workflows/bump-python-package.yml | 2 +-
UPDATING.md | 13 +
docs/static/resources/openapi.json | 19 +-
superset-embedded-sdk/package-lock.json | 8 +-
superset-embedded-sdk/package.json | 2 +-
superset-frontend/package-lock.json | 73 ++--
superset-frontend/package.json | 10 +-
.../packages/superset-ui-core/package.json | 2 +-
.../src/time-format/utils/stringifyTimeInput.ts | 21 +-
.../time-format/utils/stringifyTimeInput.test.ts | 28 ++
.../plugins/plugin-chart-echarts/package.json | 2 +-
.../src/react-pivottable/TableRenderers.tsx | 15 +-
.../test/react-pivottable/tableRenders.test.tsx | 21 +
.../PropertiesModal.lateFieldMount.test.tsx | 94 ++++
.../dashboard/components/PropertiesModal/index.tsx | 5 +-
superset-websocket/package-lock.json | 8 +-
superset-websocket/package.json | 2 +-
superset/commands/chart/importers/v1/utils.py | 12 +-
superset/daos/version.py | 4 +
superset/datasets/api.py | 123 +++++-
superset/migrations/shared/migrate_viz/base.py | 7 +
.../migrations/shared/migrate_viz/processors.py | 6 +
superset/security/manager.py | 39 +-
superset/translations/messages.pot | 4 +
superset/versioning/activity/queries.py | 11 +-
superset/versioning/api_helpers.py | 28 +-
superset/versioning/changes/listener.py | 176 ++++++--
superset/versioning/db_errors.py | 75 ++++
superset/versioning/metrics.py | 37 +-
superset/versioning/queries.py | 74 +++-
.../versioning/activity_write_after_read_tests.py | 124 ++++++
.../versioning/conditional_token_lock_tests.py | 363 ++++++++++++++++
.../charts/commands/importers/v1/utils_test.py | 69 +++
.../dashboards/semantic_view_access_test.py | 80 +++-
tests/unit_tests/datasets/api_tests.py | 216 +++++++++-
.../subjects/test_report_executor_remediation.py | 148 +++++++
tests/unit_tests/versioning/test_db_errors.py | 205 ++++++++-
tests/unit_tests/versioning/test_listener.py | 475 ++++++++++++++++++++-
.../versioning/test_version_info_locking.py | 108 +++++
41 files changed, 2545 insertions(+), 178 deletions(-)
(superset) 01/02: fix(ci): give the db2 testcontainer boot real wait headroom
Posted by jl...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
sadpandajoe pushed a commit to branch ultraset-master-health-db2-timeout
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 467d00a10707778ef4eca45e2b1279f99194dc6a
Author: sadpandajoe <47...@users.noreply.github.com>
AuthorDate: Thu Sep 17 05:53:33 2026 +0000
fix(ci): give the db2 testcontainer boot real wait headroom
The nightly `testcontainers (db2, 25)` leg fails intermittently with
`Wait time (120.0s) exceeded for _connect`.
`Db2Container._connect` calls `wait_for_logs(self, predicate="Setup has
completed")` with no explicit timeout, so it inherits testcontainers'
global default -- `max_tries` (120) x `sleep_time` (1s) = 120s -- which
is bound as a default argument when `core/waiting_utils` is imported and
is not configurable through `Db2Container`'s constructor.
A full Db2 instance bring-up varies widely. Across the retained nightly
runs, the pytest session for this module measured 88s to 153s end to
end, so a hard 120s cap on the boot wait alone has near-zero margin. In
the failing run the container was still `running` and had just logged
`(*) Creating database testdb ...` when the timer expired -- a slow
boot, not a broken container or a stale predicate. The 25-minute job
budget was never close to binding: that job used 4m02s.
Attach an explicit wait strategy before starting the container, matching
the idiom already used by test_databend.py, test_monetdb.py,
test_oceanbase.py, test_risingwave.py and test_yugabytedb.py.
`DbContainer.start()` delegates to `DockerContainer.start()`, which
honors `_wait_strategy`, so this runs to completion before `_connect` is
called; `_connect` then finds the line already present in the
accumulated logs and returns on its first poll, leaving its own 120s
window permanently off the critical path.
Co-Authored-By: Claude Opus 5 <no...@anthropic.com>
---
tests/testcontainers/db_engine_specs/test_db2.py | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/tests/testcontainers/db_engine_specs/test_db2.py b/tests/testcontainers/db_engine_specs/test_db2.py
index 7fbf4ec1b64..bdff13f6998 100644
--- a/tests/testcontainers/db_engine_specs/test_db2.py
+++ b/tests/testcontainers/db_engine_specs/test_db2.py
@@ -48,6 +48,7 @@ from ._driver import require_driver # noqa: E402
require_driver("testcontainers.community.db2")
from testcontainers.community.db2 import Db2Container # noqa: E402
+from testcontainers.core.wait_strategies import LogMessageWaitStrategy # noqa: E402
from ._pagination import ( # noqa: E402
assert_paginated_query_returns_correct_rows_in_order,
@@ -56,7 +57,20 @@ from ._pagination import ( # noqa: E402
@pytest.fixture(scope="module")
def engine() -> Iterator[Engine]:
- with Db2Container() as container:
+ container = Db2Container()
+ # Db2Container._connect waits for this same line, but hardcodes
+ # testcontainers' global 120s default (max_tries 120 x sleep_time 1s) and
+ # exposes no argument to widen it. A full Db2 instance bring-up varies
+ # widely -- nightly sessions for this module measure 88s to 153s -- so
+ # 120s has near-zero margin, and has timed out mid-"Creating database
+ # testdb" against a container that was still running and progressing.
+ # Matching the line here first means _connect finds it already logged.
+ # 900s stays well inside the job's 25-minute budget.
+ container.waiting_for(
+ LogMessageWaitStrategy("Setup has completed").with_startup_timeout(900)
+ )
+
+ with container:
yield create_engine(container.get_connection_url())