SIGN IN SIGN UP

Version-gate the silk test config so the upgrade check can start the previous release

`tests/config/install.sh` applies the current-master test configs to the
previous-release server, which is the point of the `Upgrade check` job
(`tests/docker_scripts/upgrade_runner.sh:91` installs the previous-release
packages, `:131` then runs `configure ... --previous-release`). Line 148
symlinked `config.d/silk.xml` unconditionally, and that file declares two
top-level elements, `enable_silk_runtime` and `silk`, which first exist in
26.9. A server that does not know a top-level config key rejects it with
`UNKNOWN_ELEMENT_IN_CONFIG` and refuses to start, so `Upgrade check
(amd_release)` failed on every PR run from 2026-08-30 13:48Z: every start
attempt failed and the job reported `Cannot start clickhouse-server` with no
test having run.

A comment at the top of `install.sh` already states the rule the line broke: a
new config must check the ClickHouse version so it does not break validations
that run a previous ClickHouse version.

The line was written in `c3f40eb660cf` and reached master with PR #112667 on
2026-08-26, but only bit four days later, because the previous release changed
under it. Measured on `src/Core/ServerSettings.cpp` per ref:

    ref     "found in config"   enable_silk_runtime
    26.7            0                   0
    26.8            1                   0
    master          1                   1

26.7 tolerated both elements because it validates no unknown top-level keys
at all; 26.8 added `ServerSettings::checkUnknownSettings` and does not know
them. Publishing `v26.8.1.2041-lts` at 2026-08-30T13:47:42Z moved what
`tests/ci/get_previous_release_tag.py` resolves to from 26.7 to 26.8. A
passing and a failing run seven minutes apart build the same master package
`clickhouse-client_26.9.1.1_amd64.deb` and differ only in
`previous_release_tag`.

Gate the symlink on the installed server's version. `check_clickhouse_version`
reads `clickhouse --version` from `PATH`, i.e. the version of the very binary
that will read the config being written, so the gate protects any invocation
with an old binary rather than only the one that passes `--previous-release`.
The literal is 26.9 because `cmake/autogenerated_versions.txt` was already at
`VERSION_STRING 26.9.1.1` two days before silk merged, `config.d/silk.xml`
does not exist on ref 26.8, and 26.8's `ServerSettings.cpp` has no
`enable_silk_runtime`. This mirrors the way the same file already gates
`http_url_prefix.xml` on 26.8 for this defect class. No release branch
installs the drop-in, so no backport is needed.

Servers that can parse the drop-in still receive it, including the
post-upgrade phase at `upgrade_runner.sh:175`, so no coverage is lost.

Validated locally against the `v26.8.1.2041-lts` packages CI itself downloads,
with no build required. Before the change the drop-in is installed and the
26.8 server reproduces `Code: 137 ... Unknown elements 'enable_silk_runtime',
'silk' ... (UNKNOWN_ELEMENT_IN_CONFIG)`. After it the drop-in is skipped and
the server reaches `Starting ClickHouse 26.8.1.2041` and the executable
integrity check before dying on an absent local MinIO with an unrelated
`Code: 499`, on both of the flag branches `configure` can take. A 26.9 binary
still installs it. `checkUnknownSettings` accumulates every unknown key before
throwing, so the pre-fix exception is an exhaustive list of what 26.8 rejects
in the real config set, and it names only these two keys.
G
Groene AI committed
bc8f351fbfeccc5206afa0656f6cb472c6b4271d
Parent: 9da5033