The implicit matching of the ResourceClaim name to ExternalClaim was
convenient (no need to specify the parameter) but did go wrong in integration
testing where there are multiple calls to ExternalClaim.
Gomega matchers cannot be used concurrently, they get mutated. Each user must
get its own separate instance.
WARNING: DATA RACE
Write at 0x00c0195da678 by goroutine 322445:
github.com/onsi/gomega/matchers.(*AndMatcher).Match()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/matchers/and.go:18 +0x44
github.com/onsi/gomega/internal.(*AsyncAssertion).pollMatcher()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/async_assertion.go:387 +0xbe
github.com/onsi/gomega/internal.(*AsyncAssertion).match()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/async_assertion.go:415 +0x47b
github.com/onsi/gomega/internal.(*AsyncAssertion).Should()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/async_assertion.go:145 +0xc4
k8s.io/kubernetes/test/integration/dra.testShareResourceClaimSequentially.func3()
/home/prow/go/src/k8s.io/kubernetes/test/integration/dra/resourceclaim_test.go:104 +0x361
k8s.io/kubernetes/test/integration/dra.testShareResourceClaimSequentially.func5()
/home/prow/go/src/k8s.io/kubernetes/test/integration/dra/resourceclaim_test.go:139 +0xa1
sync.(*WaitGroup).Go.func1()
/home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.7.linux-amd64/src/sync/waitgroup.go:239 +0x5d
Previous write at 0x00c0195da678 by goroutine 322438:
github.com/onsi/gomega/matchers.(*AndMatcher).Match()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/matchers/and.go:18 +0x44
github.com/onsi/gomega/internal.(*AsyncAssertion).pollMatcher()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/async_assertion.go:387 +0xbe
github.com/onsi/gomega/internal.(*AsyncAssertion).match()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/async_assertion.go:415 +0x47b
github.com/onsi/gomega/internal.(*AsyncAssertion).Should()
/home/prow/go/src/k8s.io/kubernetes/vendor/github.com/onsi/gomega/internal/async_assertion.go:145 +0xc4
k8s.io/kubernetes/test/integration/dra.testShareResourceClaimSequentially.func3()
/home/prow/go/src/k8s.io/kubernetes/test/integration/dra/resourceclaim_test.go:104 +0x361
k8s.io/kubernetes/test/integration/dra.testShareResourceClaimSequentially.func5()
/home/prow/go/src/k8s.io/kubernetes/test/integration/dra/resourceclaim_test.go:139 +0xa1
sync.(*WaitGroup).Go.func1()
/home/prow/go/src/k8s.io/kubernetes/_output/local/go/cache/mod/golang.org/toolchain@v0.0.1-go1.25.7.linux-amd64/src/sync/waitgroup.go:239 +0x5d
Add integration tests for gang and basic policy workload scheduling
Add more tests for cluster snapshot
Proceed to binding cycle just after pod group cycle
Enforce one scheduler name per pod group, rename workload cycle to pod group cycle
Add unit tests for pod group scheduling cycle
Run ScheduleOne tests treating pod as part of a pod group
Rename NeedsPodGroupCycle to NeedsPodGroupScheduling
Observe correct per-pod and per-podgroup metrics during pod group cycle
Rename pod group algorithm status to waiting_on_preemption
Mention forgotAllAssumedPods is a safety check
bloop was disabled because of its impact on small benchmarks (see
267fc6b81a
for details), this removes it from the disabled entries.
stringscut was introduced in x/tools 0.40.0 and is disabled for
existing code.
ginkgolinter's Success matcher check doesn't know about TContext, so
it's disabled for k/k.
Signed-off-by: Stephen Kitt <skitt@redhat.com>
A updated claim can only be stored in the assume cache if the cache already
contains a copy of it. That wasn't guaranteed because the update operations
where based on listing existing claims without going through the cache.
To avoid the race, we can ensure that the assume cache is up-to-date before
we start updating claims and the cache. This is simpler than retrying the
assume call.
Add missing +optional and +required markers to authentication API types
across v1, v1beta1, and v1alpha1 versions, and remove authentication
from the linter exception lists.
Part of kubernetes/kubernetes#134671
- Rename type params to Tstruct/Tfield/Tdisc for Subfield consistency
- Make DiscriminatedRule.Value generic over Tdisc and emit typed literals
- Move discriminator assignment adjacent to value assignment
- Fix mockEqual to test value equivalence and add pointer test
- Add test for value changed with discriminator unchanged
- Add regex validation for discriminator group names
- Disallow "default" as an explicit discriminator group name
- Add directComparable cross-reference comment for ratcheting
- Rename mode/modal terminology to discriminator/member
This introduces state-based validation to declarative validation via the +k8s:discriminator and +k8s:member tags.
Key changes:
- Added validate.Modal runtime function to handle state-based logic, including full ratcheting support (skipping validation on Update if discriminator and value are unchanged).
- Implemented +k8s:discriminator to identify the controlling field (supports string, int, and bool).
- Implemented +k8s:member to map discriminator values to validation rules.
- Added implicit "forbidden-by-default" logic for unhandled modes, with support for pointer, slice, and map types.
This introduces MultiWrapperFunction to the generator AST, allowing multiple validation functions to be bundled into a single emitted closure. It correctly handles short-circuiting logic for the wrapped functions.