Skip to content

Conversation

@fruch
Copy link
Contributor

@fruch fruch commented Sep 14, 2025

now that we have at least 4 short terms versions a year, we should now support upgrade from any of the STS version up to the last LTS version.

this gonna make the matrix more complex as we have more version between every LTS version

Testing

PR pre-checks (self review)

  • I added the relevant backport labels
  • I didn't leave commented-out/debugging code

Reminders

  • Add New configuration option and document them (in sdcm/sct_config.py)
  • Add unit tests to cover my changes (under unit-test/ folder)
  • Update the Readme/doc folder relevant to this change (if needed)

@fruch fruch requested review from a team and Copilot September 14, 2025 12:13
@fruch fruch added the test-integration Enable running the integration tests suite label Sep 14, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR updates the rolling upgrade base version rules to support upgrades from any Short Term Support (STS) version up to the last Long Term Support (LTS) version, accommodating the increased release frequency of 4+ STS versions per year.

Key changes:

  • Modified upgrade logic for STS versions to include all STS versions since the last LTS plus the LTS version itself
  • Updated master branch upgrade logic to only upgrade from the last LTS version
  • Added comprehensive test coverage for the new upgrade scenarios

Reviewed Changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
utils/get_supported_scylla_base_versions.py Implements new upgrade matrix logic for STS and LTS versions with more comprehensive version support
unit_tests/test_base_version.py Adds test cases to verify the new upgrade behavior for 2025.3 and 2025.4 releases

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@fruch
Copy link
Contributor Author

fruch commented Sep 14, 2025

@mykaul FYI, it means that for 2025.3, we have extra test for each rolling upgrade case, and for 2025.4, 2 extra tests for each case.

if lts_version.search(_version)), None))
else:
LOGGER.warning('version format not the default - %s', version)
lts_version = re.compile(r'\d{4}\.1') # lts = long term support
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

General Q for the code below? Isn't it easier to just build the matrix - initial source, all the way to the latest?
Something like (in the future, showing 2026.1):

2024.1, 2025.1, 2025.2, 2025.3, 2025.4, 2026.1
2024.1, 2025.1, 2026.1

Where the matrix is going over every 'run' above and starts from each slot - all the way to the end?
For example with the above:
2024.1, 2025.1, 2025.2, 2025.3, 2025.4, 2026.1
2025.1, 2025.2, 2025.3, 2025.4, 2026.1
2025.2, 2025.3, 2025.4, 2026.1
2025.3, 2025.4, 2026.1
2025.4, 2026.1

2024.1, 2025.1, 2026.1
2025.1, 2026.1

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I'm following what is the suggestion, the end result is that we should support one last LTS version and all the versions in between.

In 2026.1 we still would want to update from the 4 versions before it ? That would mean 5 variants once the first release is out ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mykaul you are missing how the tests are working, it's 1 to 1 upgrades, we are not doing continues upgrades like you are assuming...

target_version=2026.1
bases_vesrions=2025.1,2025.4

means we upgrade from 2025.1 to 2026.1, and in different run from 2025.4 to 2026.1

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What could be easier is to just list the LTS versions instead of assuming them from their suffix.
Right now we don’t have a way to mark a version to be LTS or test it like LTS.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how can we list them not based on their suffix ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Anyhow giving 2026.1 as example, but are the base version we should test for it

"2025.1", "2025.4", "2026.1" (if current is LTS, last LTS and last STS)
"2025.1", "2025.2", "2025.3", "2025.4", "2026.1" (Last LTS and All STS since)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Having somewhere a list of versions, like:
LTS = {"2023.1", "2024.1",...}

Or we can have a list of dictionaries with all supported versions and each if it's STS or LTS.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And then we need to keep those update all the time,

it worked so great in dtest, so we should repeat it here ?

@fruch fruch force-pushed the update_upgrade_base_version_rules branch 2 times, most recently from ffad66e to 18c868e Compare September 17, 2025 06:36
elif version == "master":
# add 2 last enterprise versions, since one of them might be only rc version, and we'll need to filter it out
source_available_base_version.extend(source_available_release_list[-2:])
# For master branch, upgrade only from last LTS version
Copy link
Contributor

@roydahan roydahan Sep 17, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don’t we test also last source available version (e.g last STS if it’s not LTS)?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in master we always test only one version, which one it should be, is a good question

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we did agreed that if we enable so many base version for release, we should do last version and last LTS for master runs

@fruch fruch force-pushed the update_upgrade_base_version_rules branch from 18c868e to ceb95de Compare September 17, 2025 13:12
@fruch fruch force-pushed the update_upgrade_base_version_rules branch 2 times, most recently from a8ee8b8 to b9f9f6e Compare September 25, 2025 11:25
@fruch
Copy link
Contributor Author

fruch commented Oct 12, 2025

@roydahan any luck with changing this requirement ? (since 2025.4 is branched, and we don't have it in yet...)

@fruch
Copy link
Contributor Author

fruch commented Oct 16, 2025

@roydahan any luck with changing this requirement ? (since 2025.4 is branched, and we don't have it in yet...)

@roydahan ping ?

@roydahan
Copy link
Contributor

Discussion is on the test plan.

@fruch fruch force-pushed the update_upgrade_base_version_rules branch from b9f9f6e to c940be3 Compare October 20, 2025 16:03
@fruch fruch force-pushed the update_upgrade_base_version_rules branch 4 times, most recently from e455fb9 to d8d38c8 Compare October 21, 2025 10:40
@fruch fruch force-pushed the update_upgrade_base_version_rules branch from d8d38c8 to 3179153 Compare October 21, 2025 11:21
now that we have at least 4 short terms versions a year, we should
now support upgrade from any of the STS version up to the last
LTS version.

this gonna make the matrix more complex as we have more version between every
LTS version
@fruch fruch force-pushed the update_upgrade_base_version_rules branch from 3179153 to a24db5e Compare October 21, 2025 20:22
@fruch
Copy link
Contributor Author

fruch commented Oct 22, 2025

@roydahan @mykaul

to sum it up

  • we have a flag
  • on releases, would make a job upgrade from all STS version up to last LTS (see the unittest for examples)
  • on master it would update to last LTS and last STS (one or two versions)

we gonna enable new flag on two test:

  • AMI based (heavy test 4-5h)
  • centos based test (now cent-9, I'll replace it with rocky10 in a different PR)

so now we'll be cover one of our SMI (debian based), and one centos/rhel style

I think that would be enough for initial support, later we can extend it.

@fruch fruch requested review from mykaul and roydahan October 22, 2025 15:02
@roydahan
Copy link
Contributor

Sounds good to me.

@fruch fruch merged commit 9434f48 into scylladb:master Oct 23, 2025
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport/2025.4 promoted-to-master test-integration Enable running the integration tests suite

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants