Altinity / Altinity/clickhouse-regression

Failure: integration / test_mysql_dotnet_client — stale altinityinfra/mysql_dotnet_client:latest image on stable-25.8

Open
#147 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

25.8 cicd-failure
Dominant language
Python
Stars
27
Forks
10
Avg merge
1m
Merged PRs (30d)
2

Description

Affected tests:

  • tests/integration/test_mysql_protocol/test.py::test_mysql_dotnet_client

Affected jobs / branches:

  • Integration tests (*_tsan, N/6) and other integration shards on stable-25.8 — 4 concurrent failures on run 28837216389, commit 29f8caa8140. Previous run passed.

Affected files (Altinity-fork only):

  • tests/integration/test_mysql_protocol/test.py — missing the upstream cd /testapp && anchor.

Description

test_mysql_dotnet_client failed deterministically (same error, 4/4 shards) on stable-25.8 with:

Error: Received unknown response i for SSLRequest (expecting S or N)

Not caused by the two PRs merged since the last green run (Altinity/ClickHouse#2008 and #2009 — both CI/report-only). Not flaky either — the wording SSLRequest (expecting S or N) is PostgreSQL Npgsql handshake vocabulary, not MySQL, so the dotnet client is talking the wrong protocol against port 9001.

Root Cause

Upstream PR ClickHouse/ClickHouse#80785 added a PostgreSQL C# client to the same Dockerfile and left WORKDIR /pg_testapp as the last directive. That PR was later reverted in ClickHouse/ClickHouse#105615, but the published altinityinfra/mysql_dotnet_client:latest image on Docker Hub retained the wrong WORKDIR, and tests/integration/compose/docker_compose_mysql_dotnet_client.yml has no pull_policy: always. The test runs dotnet run -- ... without cding, so on runners that pulled the poisoned :latest, dotnet executes the Npgsql project against the MySQL port. The byte 'i' (0x69 = 105) is the length prefix of ClickHouse's MySQL handshake being misread by Npgsql.

That explains the flip: previous run's runners had the older cached image; the runners on run 28837216389 pulled the poisoned one.

Upstream fix ClickHouse/ClickHouse#105636 (commit 7f7a222b1a8, 2026-05-22) anchors the command to /testapp:

-  f"dotnet run -- --host {node.hostname} ..."
+  f"cd /testapp && dotnet run -- --host {node.hostname} ..."

Upstream backported it to 25.8.25.7. Altinity's stable-25.8 is currently based on v25.8.23.13-lts, so the fix has not reached us yet.

Suggested Solution

No dedicated cherry-pick planned — the fix will land automatically when stable-25.8 is rebased onto 25.8.28. Tracking here so the failure isn't re-triaged.

References

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with tests/integration/test_mysql_protocol/test.py::test_mysql_dotnet_client and the related tests/integration/compose/docker_compose_mysql_dotnet_client.yml configuration. Check the command against the upstream fix; done means the test uses the intended client project and passes on stable-25.8 after the rebase onto 25.8.28.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, python
Domain
testing
Issue type
Bug
Difficulty
1/5
Estimated time
Under an hour
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.