Repository navigation
Conversation
Ubuntu 26.04 GitHub runners mount /tmp as a quota-limited tmpfs. golangci-lint compiles packages (including cgo) through the go command, whose work directory defaults to /tmp, and now fails with 'disk quota exceeded'. Point GOTMPDIR at the runner temp directory, which lives on the main disk.
bstoll
marked this pull request as ready for review
October 28, 2026 16:54
kne v0.3.4 includes openconfig/kne#797, which scopes the topology Create watchers to the topology namespace. Without it, integration tests that deploy topologies in parallel can see pods from other topologies and fail with 'Pod lemming failed to deploy'. The topo package is compiled into the integration test binaries via internal/binding, so it must be picked up through go.mod. Other module bumps are the minimum versions required by kne v0.3.4. repositories.bzl regenerated with 'make buildfile'.
Previously a failed tm.Create left the topology in place without marking it as created, so it was never deleted. Bazel retries and later tests sharing the topology then reused the same, already-configured lemming instance (e.g. vlan_subintf's subinterface 1 on eth1), causing leafref validation failures on unrelated tests. Delete the topology on failure so retries start from a clean deployment.
unattended-upgrades frequently holds the dpkg lock right after the presubmit VM boots, causing apt-get install to fail immediately. Wait up to 10 minutes for the lock instead.
bstoll
marked this pull request as draft
October 30, 2026 17:04
Contributor
|
For the version upgrade, can you merge the following PR instead? and leave this PR for other changes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes three separate CI failures on
mainand open PRs.1. golangci-lint:
disk quota exceededon Ubuntu 26.04 runnersFailure: golangci-lint on main (job 122443639602)
Cause:
ubuntu-latestis now Ubuntu 26.04, which mounts/tmpas a RAM-backed tmpfs with a user quota (tmpfs 7.9G ... usrquota). golangci-lint runsgobuilds (including cgo) whose work directory defaults to/tmp, and those builds use up the quota. The root disk still has ~88G free.Fix: Set
GOTMPDIR: ${{ runner.temp }}on the golangci-lint step. This puts the Go build work dir on the runner's main disk.2. Presubmit (Cloud Build): KNE topology deploy failures, then leaked topology state
Failures:
bgp_route_propagationandstatic_route_testfail 3/3bgp_route_propagation,traffic_testandaggregatefail 3/3The same failures show up on the other open PRs (#777, #779, #780).
Cause: These are two failures, and the first one causes the second:
Createwatchers were not scoped to the topology's namespace, so a test could see pods from another topology and fail with:v0.3.4). That code lives in thegithub.com/openconfig/kne/topolibrary, whichinternal/bindingcompiles into the test binaries, so it has to be picked up throughgo.mod. Rebuilding the KNE VM image does not include it.Createfailed,LemmingBindleft the partially created topology behind and didn't mark it as created, so nothing ever deleted it. The Bazel retry, and every later test sharing that topology (e.g.onedut-oneotg), reused the same lemming instance.vlan_subintfleaves subinterface 1 configured on eth1, so the later tests that replace eth1 then fail on every attempt:Fix:
github.com/openconfig/knev0.3.2→v0.3.4(includes topo, pods, events: scope Create watchers to the topology namespace kne#797). The other module bumps ingo.mod/go.sumare minimum versions that knev0.3.4requires.repositories.bzlwas regenerated withmake buildfile(gazelleupdate-repos -prune), which also drops repos kne no longer depends on.internal/binding: iftm.Createfails, delete the partially created topology (tm.Deletewaits for the namespace to be removed) before returning the error. A retry then starts from a clean topology instead of inheriting broken or leftover state.3. Presubmit (Cloud Build):
apt-getdpkg lock race on the fresh VMFailure: Presubmit (build 8bdfed18)
Cause:
unattended-upgradesoften runs right after the presubmit VM boots and holds the dpkg lock, soapt-get installincloudbuild/presubmit.shfails right away.Fix: Run
apt-getwith-o DPkg::Lock::Timeout=600so it waits for the lock instead of failing.Touching
cloudbuild/presubmit.shmakes super-linter lint the whole file, so this also fixes the findings that were already in it: shfmt formatting, shellcheck SC2329 (dumpinfois only called throughtrap), and a codespell typo.