Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
07e9f65
Impelemented the alfa version of the deletion integration solution.
Singularity23x0 Oct 23, 2025
6728e2b
Bump github.com/cert-manager/cert-manager from 1.19.0 to 1.19.1 (#7321)
dependabot[bot] Oct 20, 2025
71b8511
Deflake test (#7325)
pajakd Oct 20, 2025
636383f
[Bugfix] Allow to set ClusterName with ElasticJob (#7278)
mszadkow Oct 20, 2025
b9466d5
Bump kueueviz frontend dependencies. (#7335)
mbobrovskyi Oct 21, 2025
5d3187f
Bump cypress in /test/e2e/kueueviz in the all group (#7239)
dependabot[bot] Oct 21, 2025
0b08d3d
Bump node from 24-alpine to 25-alpine in /hack/depcheck (#7323)
dependabot[bot] Oct 21, 2025
9a97939
Bump node from 24-slim to 25-slim in /cmd/kueueviz/frontend (#7324)
dependabot[bot] Oct 21, 2025
d7bedee
E2e test for Node HotSwap in TAS with slices (#7142)
pajakd Oct 22, 2025
02c34b8
Enable cache in pod integration tests to fix failure with ManagedJob …
kannon92 Oct 23, 2025
b231d05
Fix MultiKueue workload re-evaluation bug (#6732)
ravisantoshgudimetla Oct 23, 2025
e05dd5e
Remove unnecessary error check. (#7352)
mbobrovskyi Oct 23, 2025
122318e
Use default cluster names. (#7353)
mbobrovskyi Oct 23, 2025
93e6b50
Enable conversion webhooks for v1beta2: LocalQueue, ClusterQueue, Wor…
mimowo Oct 23, 2025
5dc4f0a
Extend immutable error messages. (#7354)
mbobrovskyi Oct 23, 2025
4f9e8e4
chore: Use utiltesting context in DRA UTs (#7356)
tenzen-y Oct 23, 2025
26d469b
Update main after 0.13.7 (#7360)
mimowo Oct 23, 2025
071dd51
Update main with the latest v0.14.2 (#7359)
tenzen-y Oct 23, 2025
db6df11
Deprecate LocalQueueFlavorStatus for v1beta1 and v1beta2 (#7337)
iomarsayed Oct 24, 2025
5909cb3
Add TAS support to the Kubeflow Trainer integration (#7249)
kaisoz Oct 24, 2025
a416c2e
Add validation for unsupported DRA features (#7226)
harche Oct 24, 2025
adca57b
hotswap reschedule evicted (#7376)
pajakd Oct 24, 2025
ab74ebe
v1beta2: graduate Config API (#7375)
mbobrovskyi Oct 24, 2025
3e01953
Align imports for Kueue (#7378)
mimowo Oct 24, 2025
e0a733c
Remove workers from Pytorch e2e test. (#7381)
mbobrovskyi Oct 24, 2025
02af80c
Fix Should run a kubeflow PyTorchJob on worker if admitted e2e test. …
mbobrovskyi Oct 24, 2025
aa299d3
[Trainer] Use podset label to identify Kueue injected config (#7389)
kaisoz Oct 24, 2025
ab990ab
Expose contextualized fair sharing weights for cluster queues as metr…
j-skiba Oct 27, 2025
9a4452a
Bump e2e-test-images/agnhost from 2.57 to 2.59 in /hack/agnhost (#7399)
dependabot[bot] Oct 27, 2025
33ceb56
Use clock on preemption. (#7395)
mbobrovskyi Oct 27, 2025
c7ef18f
v1beta2-convert-logic-and-tests (#7369)
mimowo Oct 27, 2025
4d627e6
Split preemptions unit tests. (#7403)
mbobrovskyi Oct 27, 2025
72f0e69
Bump cypress/base from 22.20.0 to 22.21.0 in /hack/cypress (#7402)
dependabot[bot] Oct 27, 2025
ecc5785
update documentation to use v1beta2 (#7409)
kannon92 Oct 27, 2025
1b6910c
Helm: request conversion webhooks only for types requiring it (#7410)
mimowo Oct 27, 2025
b4973f7
replace cohort with cohortName for v1beta2 docs (#7412)
kannon92 Oct 27, 2025
7c1f588
add v1beta2 api gen docs (#7414)
kannon92 Oct 27, 2025
7b78828
formatting issue: add space after comments for apigeneration tags (#7…
kannon92 Oct 27, 2025
361f523
Replace preemtion stub with interceptor function in TestPreemption. (…
mbobrovskyi Oct 28, 2025
1de8dba
Bump the all group in /cmd/kueueviz/frontend with 2 updates (#7405)
mbobrovskyi Oct 28, 2025
54091d1
Bump github.com/onsi/ginkgo/v2 from 2.26.0 to 2.27.1 (#7397)
dependabot[bot] Oct 28, 2025
87d985b
Deprecate QueueVisibility for v1beta2 (#7319)
bobsongplus Oct 28, 2025
5062544
doc: add Kueue configuration v1beta2 API document (#7417)
bobsongplus Oct 28, 2025
7491d35
Support mutating workload priority class. (#7289)
mbobrovskyi Oct 28, 2025
430f1db
enable ssa tags for kubernetes api linter (#7339)
kannon92 Oct 28, 2025
17a7ec3
increase topology limits to 16 to match topology updates (#7423)
kannon92 Oct 29, 2025
fddf1b7
Bump github.com/onsi/ginkgo/v2 in /hack/internal/tools (#7401)
dependabot[bot] Oct 29, 2025
b177dcc
Simplify JobSet ReclaimablePods integration (#7420)
PBundyra Oct 29, 2025
cfe148a
promote MultiKueueBatchJobWithManagedBy to beta (#7341)
kannon92 Oct 29, 2025
9bba991
Remove duplicate env variables in podSet template. (#7425)
mbobrovskyi Oct 30, 2025
a24556e
Fix multikueue/provisioning indexer conflict setup (#7432)
IrvingMg Oct 30, 2025
5891828
Fix SanitizePodSets feature gate version. (#7444)
mbobrovskyi Oct 30, 2025
d0338b2
MultiKueue remote client kubeconfig validation (#7439)
mszadkow Oct 30, 2025
d81e75b
services: update app.kuberntes.io/component for services (#7371)
rphillips Oct 30, 2025
7c4de98
Add License prefix for helm templates. (#7438)
mbobrovskyi Oct 30, 2025
cbc270b
Self-nominate IrvingMg as reviewer for internal tool yaml-processor (…
IrvingMg Oct 30, 2025
56bdbcc
Update main with the latest v0.14.3 (#7455)
mimowo Oct 30, 2025
b4edcb9
Add v0.13.8 Release note to CHANGELOG (#7458)
tenzen-y Oct 30, 2025
ab8b367
Replace preemtion stub with interceptor function in TestHierarchicalP…
mbobrovskyi Oct 30, 2025
4f8172d
Drop graduated ManagedJobsNamespaceSelector feature gate. (#7466)
mbobrovskyi Oct 31, 2025
76a89e0
v1beta2: graduate the visibility API. (#7411)
mbobrovskyi Oct 31, 2025
8e4abe2
add support for maxlength linter command for kubernetes-api-linter (#…
kannon92 Oct 31, 2025
fc3c1c4
Fix feature gates tables. (#7467)
mbobrovskyi Oct 31, 2025
4ce6906
Sync feature gate tables. (#7475)
mbobrovskyi Oct 31, 2025
6121826
Drop graduated ProvisioningACC feature gate. (#7465)
mbobrovskyi Oct 31, 2025
0423898
docs(kep): Create delayed admission check retries KEP (#6210)
dhenkel92 Oct 31, 2025
8c973f5
v1beta2: drop types related to QueueVisibility (#7447)
mbobrovskyi Oct 31, 2025
83effda
v1beta2: Remove deprecated retryDelayMinutes field and fix conversion…
nerdeveloper Oct 31, 2025
8970bdb
v1beta2: drop deprecated Flavors field from LocalQueueStatus (#7449)
mbobrovskyi Oct 31, 2025
825c4e3
v1beta2: remove all unnecessary wrappers for v1beta1 (#7481)
mbobrovskyi Oct 31, 2025
5225f29
Replace preemption stub with interceptor function in TestSchedule. (#…
mbobrovskyi Oct 31, 2025
f483b4f
Extend kubeconfig validation tests (#7483)
mszadkow Oct 31, 2025
0827c45
Prevent StatefulSet scale-up while workload is being deleted (#7479)
IrvingMg Nov 3, 2025
d96094c
Promote AdmissionFairSharing to beta (#7463)
kannon92 Nov 3, 2025
cedc241
Replace preemption stub with interceptor function in TestLastScheduli…
mbobrovskyi Nov 3, 2025
ef12e72
Enable nomaps and nobools kube api linter (#7489)
kannon92 Nov 3, 2025
4aa6d05
Replace preemption stub with interceptor function in scheduler TAS un…
mbobrovskyi Nov 3, 2025
c7d7ef3
Completed the initial draft of Delete event refactor.
Singularity23x0 Nov 4, 2025
1cef4e8
Finished deletion refactor. Added unit tests.
Singularity23x0 Nov 5, 2025
c20b6ac
Remove remote client of insecurely setup cluster (#7486)
mszadkow Nov 3, 2025
5a83c45
Remove applyPreemption stub. (#7507)
mbobrovskyi Nov 3, 2025
07e442e
v1beta2: Remove deprecated PodIntegrationOptions API (#7406)
nerdeveloper Nov 4, 2025
f134700
Switch Default TAS Placement Algorithm from BestFit to Mixed. (#7416)
iomarsayed Nov 4, 2025
a1fb5ae
Cleanup jobframework log (#7426)
PBundyra Nov 4, 2025
05ba58b
Wrap with Eventually to avoid flake (#7523)
mszadkow Nov 4, 2025
b205f5d
Flaky sticky workload - fix (#7528)
mimowo Nov 4, 2025
08319fa
Use Equal instead of Equivalent for asserting Suspend (#7526)
mszadkow Nov 4, 2025
933a228
v1beta2: In FlavorFungibility API migrate Preempt/Borrow to MayStopSe…
mbobrovskyi Nov 5, 2025
490d40d
Graduate ManagedJobsNamespaceSelectorAlwaysRespected feature to Beta …
PannagaRao Nov 5, 2025
ff7236f
Add Multikueue and ProvReq integration test (#7505)
IrvingMg Nov 5, 2025
a806a48
Add feature gate for reclaimable Pods (#7525)
PBundyra Nov 5, 2025
0e7a10d
Cleanup preemption message generation (#7541)
mszadkow Nov 5, 2025
bd6e6fb
Use wrappers in cluster_queue_test.go. (#7543)
mbobrovskyi Nov 5, 2025
e3fe657
Finalizer implementation finalized.
Singularity23x0 Nov 7, 2025
a77639e
enable optional, required and optionalandrequired linter checks (#7488)
kannon92 Nov 5, 2025
1edfeaf
Add preemptor and preemptee path to the Preemption message (#7522)
mszadkow Nov 5, 2025
2544a73
Refactor DRA validation to use field.ErrorList (#7529)
harche Nov 5, 2025
daaa5c2
Remove redundant type conversions. (#7545)
mbobrovskyi Nov 6, 2025
2c0904f
Ensure roundtrip success for Quantities (#7430)
brejman Nov 6, 2025
62db2e8
Remove deprecated AdmissionChecks field from v1beta2 ClusterQueue API…
nerdeveloper Nov 6, 2025
50c1fb0
Use GomegaMatcher instead of OmegaMatcher. (#7552)
mbobrovskyi Nov 6, 2025
c759957
Use ExpectWorkloadsWithWorkloadPriority and ExpectWorkloadsWithPodPri…
mbobrovskyi Nov 6, 2025
f8df1e4
Fix test case to check creation workload with empty priorityClassName…
mbobrovskyi Nov 6, 2025
e1a8d18
Update wrappers to use utiltesting alias (#7561)
mszadkow Nov 6, 2025
fcf5ea3
Add CHANGELOG for v0.13.9 (#7562)
tenzen-y Nov 6, 2025
e8c47b8
Update intergation tests to use utiltesting alias (#7563)
mszadkow Nov 6, 2025
22e249f
Update main with the latest v0.14.4 (#7559)
mimowo Nov 6, 2025
25f46f8
api/kueue/v1beta1: add unit tests for workload conversion (#7546)
sohankunkerkar Nov 6, 2025
1e9c2cd
test: Add conversion unit tests for LocalQueue and ClusterQueue (#7567)
sohankunkerkar Nov 6, 2025
89f6f27
Set default image in wrappers to agnhost (#7551)
mszadkow Nov 6, 2025
c00e728
Bump github.com/containerd/containerd in /hack/internal/tools (#7568)
dependabot[bot] Nov 6, 2025
ae76730
Use util.RealClock in tests. (#7574)
mbobrovskyi Nov 7, 2025
ec1b73d
enable linter via regular expressions (#7571)
kannon92 Nov 7, 2025
15a6257
[Cleanup] Update e2e tests to use utiltesting alias (#7564)
mszadkow Nov 7, 2025
3b81164
Fix - Workloads requesting TAS cannot run via MultiKueue (#5361)
IrvingMg Nov 7, 2025
e2ecd6a
Fixed DelayedTopologyRequestState enum validation. (#7573)
mbobrovskyi Nov 7, 2025
84b835c
Add documentation for Kubeflow Trainer v2 TrainJob integration with K…
NarayanaSabari Nov 7, 2025
71cd4e1
JobReconciler don't update PodsReady condition timely (#7364)
olderTaoist Nov 7, 2025
7d2f0ff
v1beta2: change the API for Workload's spec.priorityClassSource (#7540)
mbobrovskyi Nov 7, 2025
f513d78
Merge branch 'main' into 5310-reconciliation-logic
Singularity23x0 Nov 7, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions apis/kueue/v1beta1/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package v1beta1

const (
ResourceInUseFinalizerName = "kueue.x-k8s.io/resource-in-use"
SafeDeleteFinalizerName = "kueue.x-k8s.io/delete-safeguard"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks incorrectly formatted (misaligned =)

DefaultPodSetName PodSetReference = "main"

// ElasticJobSchedulingGate is the name of the scheduling gate applied to Pods
Expand Down
1 change: 1 addition & 0 deletions apis/kueue/v1beta2/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package v1beta2

const (
ResourceInUseFinalizerName = "kueue.x-k8s.io/resource-in-use"
SafeDeleteFinalizerName = "kueue.x-k8s.io/delete-safeguard"
DefaultPodSetName PodSetReference = "main"

// ElasticJobSchedulingGate is the name of the scheduling gate applied to Pods
Expand Down
4 changes: 2 additions & 2 deletions pkg/cache/queue/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -723,7 +723,7 @@ func (m *Manager) GetClusterQueueNames() []kueue.ClusterQueueReference {
return m.hm.ClusterQueuesNames()
}

func (m *Manager) getClusterQueue(cqName kueue.ClusterQueueReference) *ClusterQueue {
func (m *Manager) GetClusterQueue(cqName kueue.ClusterQueueReference) *ClusterQueue {
m.RLock()
defer m.RUnlock()
return m.hm.ClusterQueue(cqName)
Expand All @@ -735,7 +735,7 @@ func (m *Manager) getClusterQueueLockless(cqName kueue.ClusterQueueReference) (v
}

func (m *Manager) PendingWorkloadsInfo(cqName kueue.ClusterQueueReference) []*workload.Info {
cq := m.getClusterQueue(cqName)
cq := m.GetClusterQueue(cqName)
if cq == nil {
return nil
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/cache/queue/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ func TestUpdateClusterQueue(t *testing.T) {
t.Fatalf("Failed adding clusterQueue %s: %v", cq.Name, err)
}
// Increase the popCycle to ensure that the workload will be added as inadmissible.
manager.getClusterQueue(kueue.ClusterQueueReference(cq.Name)).popCycle++
manager.GetClusterQueue(kueue.ClusterQueueReference(cq.Name)).popCycle++
}
for _, q := range queues {
if err := manager.AddLocalQueue(ctx, q); err != nil {
Expand Down
4 changes: 4 additions & 0 deletions pkg/cache/scheduler/cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,10 @@ func (c *Cache) GetCacheLocalQueue(cqName kueue.ClusterQueueReference, lq *kueue
return nil, errQNotFound
}

func (c *Cache) GetClusterQueue(cqName kueue.ClusterQueueReference) *clusterQueue {
return c.hm.ClusterQueues()[cqName]
}

func (c *Cache) UpdateLocalQueue(oldQ, newQ *kueue.LocalQueue) error {
if oldQ.Spec.ClusterQueue == newQ.Spec.ClusterQueue {
return nil
Expand Down
98 changes: 64 additions & 34 deletions pkg/controller/core/workload_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/controller"
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/handler"
"sigs.k8s.io/controller-runtime/pkg/predicate"
Expand Down Expand Up @@ -158,18 +159,39 @@ func (r *WorkloadReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
return ctrl.Result{}, client.IgnoreNotFound(err)
}

log := ctrl.LoggerFrom(ctx)
status := workload.Status(&wl)
log := ctrl.LoggerFrom(ctx).WithValues("workload", klog.KObj(&wl), "queue", wl.Spec.QueueName, "status", status)
log.V(2).Info("Reconcile Workload")

if len(wl.OwnerReferences) == 0 && !wl.DeletionTimestamp.IsZero() {
// manual deletion triggered by the user
err := workload.RemoveFinalizer(ctx, r.client, &wl)
return ctrl.Result{}, client.IgnoreNotFound(err)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old code wrapped err with IgnoreNotFound - IIUC to silence errors in case when the workload has been deleted in the meantime.
Have you dropped that wrapping in this PR? If so, why?

if !wl.DeletionTimestamp.IsZero() {
log = log.WithValues("deletionTimestamp", wl.DeletionTimestamp)
log.Info("Attemtping to finalize workload.")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
log.Info("Attemtping to finalize workload.")
log.Info("Attempting to finalize workload.")


switch {
case controllerutil.ContainsFinalizer(&wl, kueue.ResourceInUseFinalizerName):
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Braces are not necessary in the case blocks, unless you need to create an explicit scope.

log.Info("Manual deletion by a user detected.")
if len(wl.OwnerReferences) == 0 {
return ctrl.Result{}, r.finalize(ctx, &wl, log)
} else {
log.Info("Uable to finalize: workload still has owners. Proceeding with reconcile.", "owners", wl.OwnerReferences)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
log.Info("Uable to finalize: workload still has owners. Proceeding with reconcile.", "owners", wl.OwnerReferences)
log.Info("Unable to finalize: workload still has owners. Proceeding with reconcile.", "owners", wl.OwnerReferences)

}
}
case controllerutil.ContainsFinalizer(&wl, kueue.SafeDeleteFinalizerName):
{
return ctrl.Result{}, r.finalize(ctx, &wl, log)
}
default:
{
log.Info("Unknown finalizer(s) present. Proceeding with reconcile.")
}
}
}

finishedCond := apimeta.FindStatusCondition(wl.Status.Conditions, kueue.WorkloadFinished)
if finishedCond != nil && finishedCond.Status == metav1.ConditionTrue {
if !features.Enabled(features.ObjectRetentionPolicies) || r.workloadRetention == nil || r.workloadRetention.afterFinished == nil {
log.Info("Unable to determine workload retention scheme.")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The logs in this function seem pretty verbose, shouldn't the level of those logs be higher? Here you are using 0, other functions use 2 etc.

return ctrl.Result{}, nil
}

Expand Down Expand Up @@ -472,6 +494,38 @@ func (r *WorkloadReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
return ctrl.Result{}, nil
}

func (r *WorkloadReconciler) finalize(ctx context.Context, wl *kueue.Workload, log logr.Logger) error {
log.V(2).Info("Finalizing workload.")
defer r.notifyWatchers(wl, nil)

if workload.HasQuotaReservation(wl) {
var err error = nil
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need = nil since error is zero-initialized to nil:

Suggested change
var err error = nil
var err error

r.queues.QueueAssociatedInadmissibleWorkloadsAfter(ctx, wl, func() {
err = r.cache.DeleteWorkload(log, wl)
})
if err != nil {
log.V(2).Error(err, "Failed to delete workload from cache.")
return err
}
} else {
r.queues.QueueAssociatedInadmissibleWorkloadsAfter(ctx, wl, func() {
if err := r.cache.DeleteWorkload(log, wl); err != nil {
log.V(2).Info("Failed to delete workload from cache.", "Error", err, "Note", "this may be intended behavior")
}
})
}

r.queues.DeleteWorkload(wl)

controllerutil.RemoveFinalizer(wl, kueue.ResourceInUseFinalizerName)
controllerutil.RemoveFinalizer(wl, kueue.SafeDeleteFinalizerName)
if err := r.client.Update(ctx, wl); err != nil {
return err
}
r.recorder.Eventf(wl, corev1.EventTypeNormal, "Finalized", "Workload %s has been finalized", workload.Key(wl))
return nil
}

// isDisabledRequeuedByClusterQueueStopped returns true if the workload is unset requeued by cluster queue stopped.
func isDisabledRequeuedByClusterQueueStopped(w *kueue.Workload) bool {
return isDisabledRequeuedByReason(w, kueue.WorkloadEvictedByClusterQueueStopped)
Expand Down Expand Up @@ -757,36 +811,12 @@ func (r *WorkloadReconciler) Create(e event.TypedCreateEvent[*kueue.Workload]) b
}

func (r *WorkloadReconciler) Delete(e event.TypedDeleteEvent[*kueue.Workload]) bool {
defer r.notifyWatchers(e.Object, nil)
status := "unknown"
if !e.DeleteStateUnknown {
status = workload.Status(e.Object)
}
log := r.log.WithValues("workload", klog.KObj(e.Object), "queue", e.Object.Spec.QueueName, "status", status)
log.V(2).Info("Workload delete event")
ctx := ctrl.LoggerInto(context.Background(), log)

// When assigning a clusterQueue to a workload, we assume it in the cache. If
// the state is unknown, the workload could have been assumed, and we need
// to clear it from the cache.
if workload.HasQuotaReservation(e.Object) || e.DeleteStateUnknown {
// trigger the move of associated inadmissibleWorkloads if required.
r.queues.QueueAssociatedInadmissibleWorkloadsAfter(ctx, e.Object, func() {
// Delete the workload from cache while holding the queues lock
// to guarantee that requeued workloads are taken into account before
// the next scheduling cycle.
if err := r.cache.DeleteWorkload(log, e.Object); err != nil {
if !e.DeleteStateUnknown {
log.Error(err, "Failed to delete workload from cache")
}
}
})
log := r.log.WithValues("workload", klog.KObj(e.Object), "queue", e.Object.Spec.QueueName, "status", workload.Status(e.Object))
if e.DeleteStateUnknown {
log.V(2).Info("Workload delete event; delete status unknown")
} else {
log.V(2).Info("Workload delete event")
}

// Even if the state is unknown, the last cached state tells us whether the
// workload was in the queues and should be cleared from them.
r.queues.DeleteWorkload(e.Object)

return true
}

Expand Down
Loading