Skip to content

Pin CI runners to ubuntu-24.04 - #169

Merged
laxman-ch merged 1 commit into
branch-3.6from
vchekka/fix-c-client-const-discard
Oct 22, 2026
Merged

laxman-ch merged 1 commit into
branch-3.6from
vchekka/fix-c-client-const-discard

Conversation

@laxman-ch

@laxman-ch laxman-ch commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

GitHub is migrating the ubuntu-latest label from 24.04 to 26.04. The rollout is staged, so jobs currently land on either image depending on which runner they get — CI is non-deterministic rather than simply broken. (The runner-images README still documents ubuntu-latest as 24.04, while our runs are already getting 26.04.)

Nothing in the repo changed. The same job passed on an identical tree three days before it started failing — only the image differs:

Date Run Image full-build-jdk11
2026-10-16 38856125551 ubuntu-24.04 pass
2026-10-19 39272997735 ubuntu-24.04 pass
2026-10-22 39714174594 ubuntu-26.04 fail

This blocks every PR against branch-3.6 — both required checks are red, currently including #159.

Why pin rather than fix forward

26.04 breaks the C client in at least two unrelated ways.

1. Compile. strchr and friends are const-generic there, and the build uses -Werror:

src/cli.c:503:13:      error: assignment discards 'const' qualifier from pointer target type
src/cli.c:709:11:      error: assignment discards 'const' qualifier from pointer target type
src/zookeeper.c:1263:18: error: assignment discards 'const' qualifier from pointer target type

2. SSL tests. With the compile errors patched locally, the build gets further and then fails in cppunit — 2 of 83 tests, ZSSLCONNECTIONERROR, against 26.04's newer OpenSSL versus what ssl/gencerts.sh produces:

TestClient.cc:813         Expected: 0, Actual: -15   (Zookeeper_simpleSystem::testSSL)
TestReadOnlyClient.cc:118 Expected: 0, Actual: -15

Those are two different root causes — a compiler change and a crypto-tooling change — and there is no basis for assuming the second is the last. Certifying the C client and its test suite on 26.04 is its own piece of work, and doing it a failure at a time through CI round-trips is the wrong place for it.

So this PR restores a reproducible green baseline and leaves 26.04 as a deliberate, separate effort.

Change

ubuntu-latest → ubuntu-24.04 in the three active workflows. ubuntu-24.04 is an explicitly supported label, not a deprecated one.

Workflow Jobs Why
ci.yaml all four full-build-*, incl. both required checks the actual breakage
e2e.yaml compatibility currently green, pinned so it cannot drift next
ci-jfrog-workflow.yml release deploy release path; a surprise image change here is worse than in CI

ci-bintray-workflow.yml_old is left alone — the extension means Actions never loads it.

Follow-up

The 26.04 work is not lost. The compile fixes are written and were verified green on 26.04 in this PR's earlier revisions (dc9c6c9e3, f36a0e084) — cli.c drops a const that was never accurate (both sites write *ptr = '\0'), and zookeeper.c makes index_chroot properly const. They are a good starting point for the certification effort, which still needs the gencerts.sh/OpenSSL side.

Testing

Both required checks, plus e2e, should return to the 24.04 behaviour that was green through 2026-10-19.

@laxman-ch

laxman-ch commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator Author

Changed approach — this PR is now the runner pin, not the C fixes.

The earlier revisions fixed the 26.04 compile errors directly, and that worked: both required checks went green. But the build then got further and failed in cppunit instead — 2 of 83 tests, ZSSLCONNECTIONERROR, from 26.04's newer OpenSSL versus ssl/gencerts.sh. A second, unrelated root cause, with no reason to think it was the last.

Certifying the C client on 26.04 is a separate effort rather than something to converge on one CI round-trip at a time, so this PR now just pins to ubuntu-24.04 to restore a reproducible green baseline. The compile fixes are kept at f36a0e084 and referenced in the description for that follow-up.

@laxman-ch
laxman-ch marked this pull request as draft October 22, 2026 04:01
GitHub is migrating the ubuntu-latest label from 24.04 to 26.04. The
rollout is staged, so jobs currently land on either image and CI is
non-deterministic rather than simply broken.

On 26.04 the C client fails to compile, because strchr and friends are
const-generic there and the build uses -Werror:

  src/cli.c:503:13: error: assignment discards 'const' qualifier ...
  src/cli.c:709:11: error: assignment discards 'const' qualifier ...
  src/zookeeper.c:1263:18: error: assignment discards 'const' qualifier ...

Past that, the cppunit SSL tests also fail (ZSSLCONNECTIONERROR) against
26.04's newer OpenSSL. Those are two unrelated root causes, and there is
no reason to assume they are the last.

Certifying the C client and its test suite on 26.04 is a separate piece
of work. Pin to 24.04 so the branch has reproducible, green CI while that
happens, instead of landing fixes one failure at a time.

e2e.yaml and the JFrog release workflow are pinned alongside CI so the
whole repo moves images deliberately rather than by surprise.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@laxman-ch
laxman-ch force-pushed the vchekka/fix-c-client-const-discard branch from f36a0e0 to 92eeeda Compare October 22, 2026 04:05
@laxman-ch laxman-ch changed the title Fix C client build on ubuntu-26.04 runners Pin CI runners to ubuntu-24.04 Oct 22, 2026
@laxman-ch
laxman-ch marked this pull request as ready for review October 22, 2026 04:09
@laxman-ch
laxman-ch merged commit f736f82 into branch-3.6 Oct 22, 2026
20 checks passed
@laxman-ch
laxman-ch deleted the vchekka/fix-c-client-const-discard branch October 22, 2026 05:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants