Revision 6b3a6f2c72521c39f780c2bf21b90a32b10b97e5 authored by David Bimmler on 23 February 2024, 11:55:44 UTC, committed by Jussi Mäki on 26 February 2024, 13:09:35 UTC
The idea of freshNetNS is to create a new network namespace to isolate
the test from the system at large. In order to do so in Go, one must
also lock the current goroutine to a specific OS thread and prevent
other goroutines from being scheduled on that OS thread. Conveniently,
runtime.LockOSThread does exactly that.

However, freshNetNS was flawed in that it called runtime.UnlockOSThread
too early - creation of the network namespace was locked to the current
OS thread, but unlocking it means that the goroutine may be scheduled to
another at any point, as well as other goroutines potentially
interfering with "our" network namespace, as they are scheduled on "our"
OS thread.

Fix this by calling UnlockOSThread only after the test has completed,
via t.Cleanup.

Fixes: 450a541849 (bandwidth: Reconciler for qdisc setup)

Signed-off-by: David Bimmler <david.bimmler@isovalent.com>
1 parent 5dcf274
History
File Mode Size
.devcontainer
.github
.nvim
.travis
.vscode
Documentation
api
bpf
bugtool
cilium-dbg
cilium-health
clustermesh-apiserver
contrib
daemon
examples
hack
hubble-relay
images
install
operator
pkg
plugins
test
tools
vendor
.authors.aux -rw-r--r-- 416 bytes
.clang-format -rw-r--r-- 7.6 KB
.clomonitor.yml -rw-r--r-- 984 bytes
.gitattributes -rw-r--r-- 887 bytes
.gitignore -rw-r--r-- 1.8 KB
.golangci.yaml -rw-r--r-- 4.1 KB
.mailmap -rw-r--r-- 6.5 KB
.openvex.json -rw-r--r-- 4.6 KB
.travis.yml -rw-r--r-- 506 bytes
AUTHORS -rw-r--r-- 46.9 KB
CODEOWNERS -rw-r--r-- 27.6 KB
CODE_OF_CONDUCT.md -rw-r--r-- 2.2 KB
CONTRIBUTING.md -rw-r--r-- 691 bytes
FURTHER_READINGS.rst -rw-r--r-- 6.4 KB
LICENSE -rw-r--r-- 11.1 KB
MAINTAINERS.md -rw-r--r-- 4.6 KB
Makefile -rw-r--r-- 26.6 KB
Makefile.defs -rw-r--r-- 7.3 KB
Makefile.docker -rw-r--r-- 7.1 KB
Makefile.kind -rw-r--r-- 16.7 KB
Makefile.quiet -rw-r--r-- 818 bytes
README.rst -rw-r--r-- 19.6 KB
SECURITY-INSIGHTS.yml -rw-r--r-- 2.1 KB
SECURITY.md -rw-r--r-- 1.0 KB
USERS.md -rw-r--r-- 33.2 KB
VERSION -rw-r--r-- 11 bytes
Vagrantfile -rw-r--r-- 14.9 KB
go.mod -rw-r--r-- 12.6 KB
go.sum -rw-r--r-- 95.0 KB
netlify.toml -rw-r--r-- 92 bytes
stable.txt -rw-r--r-- 8 bytes
vagrant_box_defaults.rb -rw-r--r-- 334 bytes

README.rst

back to top