Skip to content

[Backport perf-v17] fix(integration-tests): stop pinning artifact URLs that get garbage collected - #15682

Merged
fruch merged 2 commits into
scylladb:branch-perf-v17from
scylladbbot:backport/15671/to-perf-v17
Aug 11, 2026
Merged

[Backport perf-v17] fix(integration-tests): stop pinning artifact URLs that get garbage collected#15682
fruch merged 2 commits into
scylladb:branch-perf-v17from
scylladbbot:backport/15671/to-perf-v17

Conversation

@scylladbbot

Copy link
Copy Markdown

Fixes the three remaining integration test failures from PR-15647 build 1 (unrelated to that PR — a renovate gemini bump). All three are pinned artifact URLs that have since been garbage collected or retired upstream. Companion to #15670, which covers the Secrets Manager failures.

What was failing

Test Error
test_config_get_version_based_on_conf::test_unified_package FileNotFoundError: Unified package not found or failed to download: .../2023-11-13T03:04:27Z/scylla-unified-5.5.0~dev-...tar.gz
test_external_backtrace_service::test_decode_via_external_service_returns_symbols 404 ... for url: https://backtrace.scylladb.com/api/backtrace
test_version_utils::test_get_specific_tag_of_docker_image[scylladb/scylla-enterprise-nightly] 404 ... /unstable/scylla-enterprise/enterprise/relocatable/latest/00-Build.txt

Fixes

Unified package. The test pinned a master relocatable from November 2023. Unlike its sibling tests, which only run config validation, this one calls get_version_based_on_conf(), which downloads and unpacks the package to read SCYLLA-VERSION-FILE — so the URL has to actually exist, and unstable relocatables are collected within months. Now resolved through the existing latest_unified_package() helper, with the expected version derived from the returned filename.

Backtrace service. The pinned build id (527bc254…, 2026.1.0~dev) is still indexed, but the unstripped package it needs is gone, so the API answers:

{"detail":"Unstripped package does not exist (https://downloads.scylladb.com/unstable/scylla/master/
relocatable/2026-01-22T20:32:01Z/scylla-unstripped-2026.1.0~dev-...tar.gz) for 527bc254..."}

Now resolved from unstable/scylla/master/relocatable/latest/00-Build.txt. Newer builds exist in S3 but the service does not index them until they are promoted (checked: today's 14:11 and 16:36 builds return Could not find any build with BuildID, while latest/ resolves and symbolizes), so latest/ is the freshest reliably-known id. If it happens not to be indexed yet the test skips rather than reporting a failure that says nothing about SCT.

Enterprise nightly. get_specific_tag_of_docker_image resolved scylladb/scylla-enterprise-nightly under the enterprise rolling branch. That branch is gone from downloads.scylladb.com — unstable/scylla-enterprise/ now holds only enterprise-2024.1/, which is still building (last build June 2026) and still publishes exactly those images:

docker-image-name-x86_64: scylla-enterprise-nightly:2024.1.22-0.20260125.edbbdaf63453-x86_64

So the lookup points there. This is a production fix, not just a test fix — sct_config calls this function to resolve scylla_docker_image for enterprise versions and it was raising for every caller.

Testing

unit_tests/integration/test_external_backtrace_service.py
unit_tests/integration/test_version_utils.py                            14 passed
unit_tests/integration/test_config_get_version_based_on_conf.py -k unified
                                                                 8 passed, 25 deselected
unit_tests/unit/test_version_utils.py unit_tests/unit/test_config.py   417 passed
  • (cherry picked from commit c481dd1)
  • (cherry picked from commit 0716d88)
  • (cherry picked from commit 4698ab6)

Parent PR: #15671

@scylladbbot

Copy link
Copy Markdown
Author

@fruch - This PR has conflicts, therefore it was moved to draft
Please resolve them and mark this PR as ready for review by removing the conflicts label

@fruch fruch added the test-integration Enable running the integration tests suite label Aug 4, 2026
@fruch
fruch force-pushed the backport/15671/to-perf-v17 branch from 67d1175 to 8ded0ca Compare August 4, 2026 19:24
@fruch fruch removed the conflicts label Aug 4, 2026
@fruch
fruch marked this pull request as ready for review August 4, 2026 19:24
@fruch

fruch commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Resolved the cherry-pick conflicts and dropped one commit on purpose — please don't restore it.

Dropped: fix(integration-tests): resolve a live build id for the backtrace service (master 4698ab66d8).

On master that commit edits unit_tests/integration/test_external_backtrace_service.py; the file does not exist here, so the cherry-pick turned it into a whole-new-file add. That file cannot work on branch-perf-v17:

  • BaseNode._decode_via_external_service — the method under test — does not exist on this branch. perf-v17 still decodes backtraces locally (copy_scylla_debug_info + decode_raw_backtrace); the external-service decode path was never backported.
  • sdcm/utils/session.py (create_retry_session) does not exist here either, so the module fails at import: ModuleNotFoundError: No module named 'sdcm.utils.session'.
  • The remaining imports point at master's layout (unit_tests.lib.dummy_remote, unit_tests.lib.fake_cluster); on this branch they live at unit_tests/dummy_remote.py and unit_tests/nemesis/fake_cluster.py, and there is no unit_tests/integration/ package at all.

Backporting the test would mean backporting the external-decode feature too, which is well outside the scope of "stop pinning artifact URLs". So it is dropped, and the branch no longer adds unit_tests/integration/.

Kept — both verified against this branch's code and layout:

  1. fix(version_utils): resolve enterprise-nightly tags from enterprise-2024.1 — applies cleanly. Verified unstable/scylla-enterprise/enterprise/relocatable/latest/00-Build.txt → 404 and .../enterprise-2024.1/... → 200 with a docker-image-name key; test_get_specific_tag_of_docker_image[scylladb/scylla-enterprise-nightly] passes.
  2. fix(integration-tests): resolve the unified package URL at run time — landed in this branch's real file, unit_tests/test_config_get_version_based_on_conf.py (rename detection followed master's move into unit_tests/integration/, so no duplicate copy was created). latest_unified_package() already exists in sdcm/utils/version_utils.py here, so no helper had to come along. test_unified_package passes, and the URL it used to pin still 404s.

Checks run locally on the pushed tree: ruff check --preview and ruff format --check clean on both files, full pre-commit run --files ... green, the two tests above pass, and no conflict markers remain in any file of any commit (every commit's blobs checked with no extension exclusions).

Pre-existing failures on this branch, unrelated to this backport — please don't read them as regressions:

  • test_get_specific_tag_of_docker_image[scylladb/scylla-nightly] and test_docker[latest]KeyError: 'docker-image-name'. unstable/scylla/master/.../00-Build.txt now publishes only docker-image-name-x86_64; master's get_specific_tag_of_docker_image handles that with an arch-aware lookup that was never backported here.
  • test_unified_package_aws_sets_ubuntu_userFileNotFoundError: unit_tests/test_configs/minimal_test_case.yaml (that fixture config does not exist on this branch).
  • test_images[azure-master], test_images[azure-branch] → Azure image lookup finds nothing in eastus.

@fruch

fruch commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Integration test results (build #2) — this PR's fix is confirmed working by CI

continuous-integration/jenkins/pr-merge = fail with "The build of this commit was aborted". This is not a defect in this backport:

Direct evidence the fix works, by diffing this run against #15680's run on the same branch and same integration suite (the two differ only by this PR's change):

Test #15680's run this PR's run
test_config_get_version_based_on_conf.py::test_unified_package FAILED passes

That is the test this backport targets, and it flipped green. It is no longer in the failure list at all.

The remaining failures are all pre-existing on branch-perf-v17 and untouched by this PR — identical to #15680's set apart from the line above:

unit_tests/test_cassandra_stress_thread.py  (9 cases)
unit_tests/test_cluster.py                  (2 cases)
unit_tests/test_config.py                   (3 cases)
unit_tests/test_config_get_version_based_on_conf.py::test_docker[latest]
unit_tests/test_config_get_version_based_on_conf.py::test_images[azure-branch|azure-master]
unit_tests/test_config_get_version_based_on_conf.py::test_unified_package_aws_sets_ubuntu_user

Two of those have verified causes worth recording:

  1. test_unified_package_aws_sets_ubuntu_userunit_tests/test_configs/ does not exist on branch-perf-v17 (git ls-tree upstream/branch-perf-v17 unit_tests/test_configs/ → empty; present on master, branch-2026.1, branch-2026.2, branch-2026.3). Tests referencing unit_tests/test_configs/minimal_test_case.yaml fail at fixture setup. branch-2025.1 has the identical gap.
  2. test_docker[latest]00-Build.txt for master now publishes only docker-image-name-x86_64, not the legacy docker-image-name key, and this branch lacks master's arch-aware lookup in get_specific_tag_of_docker_image. That is a separate backport candidate, not part of fix(integration-tests): stop pinning artifact URLs that get garbage collected #15671.

Consequence for reviewers: the test-integration stage cannot go green on branch-perf-v17 today for reasons unrelated to this PR, but this PR's own target test is demonstrably fixed. Remediation the branch needs separately: backport/adapt unit_tests/test_configs/, backport the arch-aware docker-image-name lookup, and investigate the 45-minute integration timeout that prevents any JUnit result from being published.

@fruch
fruch force-pushed the backport/15671/to-perf-v17 branch from 8ded0ca to 5ab8496 Compare August 6, 2026 12:19
fruch added 2 commits August 11, 2026 11:16
…024.1

`get_specific_tag_of_docker_image` looked up scylla-enterprise-nightly
tags under the `enterprise` rolling branch. That branch stopped producing
builds when enterprise development folded into the unified releases, and
its relocatables are gone -- the 00-Build.txt fetch now 404s, so the
function raises for every caller (and for
`test_get_specific_tag_of_docker_image[scylladb/scylla-enterprise-nightly]`).

`enterprise-2024.1` is the only branch still publishing
scylla-enterprise-nightly images (last build June 2026), so point the
lookup there.

(cherry picked from commit c481dd1)
`test_unified_package` pinned a master relocatable from November 2023.
Unlike the sibling tests, which only run config validation, this one
calls `get_version_based_on_conf()`, which downloads and unpacks the
package to read SCYLLA-VERSION-FILE. Unstable relocatables are garbage
collected within a few months, so the pinned URL 404s and the test fails
with "Unified package not found or failed to download".

Resolve the current master package with the existing
`latest_unified_package()` helper and derive the expected version from
the returned filename, so there is nothing left to rot.

(cherry picked from commit 0716d88)
@fruch
fruch force-pushed the backport/15671/to-perf-v17 branch from 5ab8496 to 1793d71 Compare August 11, 2026 08:16
@fruch
fruch merged commit 3c48420 into scylladb:branch-perf-v17 Aug 11, 2026
6 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test-integration Enable running the integration tests suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants