Skip to content

Commit b3f3b9e

Browse files
committed
Requeue reconcile requests for endpointslice until the inferencepool is available
1 parent e93541d commit b3f3b9e

File tree

1 file changed

+8
-18
lines changed

1 file changed

+8
-18
lines changed

pkg/ext-proc/backend/endpointslice_reconciler.go

+8-18
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package backend
33
import (
44
"context"
55
"strconv"
6+
"time"
67

78
"inference.networking.x-k8s.io/gateway-api-inference-extension/api/v1alpha1"
89
logutil "inference.networking.x-k8s.io/gateway-api-inference-extension/pkg/ext-proc/util/logging"
@@ -30,17 +31,19 @@ type EndpointSliceReconciler struct {
3031
}
3132

3233
func (c *EndpointSliceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
34+
inferencePool, err := c.Datastore.getInferencePool()
35+
if err != nil {
36+
klog.V(logutil.DEFAULT).Infof("Skipping reconciling EndpointSlice because the InferencePool is not available yet: %v", err)
37+
return ctrl.Result{Requeue: true, RequeueAfter: time.Second}, nil
38+
}
39+
3340
klog.V(logutil.DEFAULT).Info("Reconciling EndpointSlice ", req.NamespacedName)
3441

3542
endpointSlice := &discoveryv1.EndpointSlice{}
3643
if err := c.Get(ctx, req.NamespacedName, endpointSlice); err != nil {
3744
klog.Errorf("Unable to get EndpointSlice: %v", err)
3845
return ctrl.Result{}, err
3946
}
40-
inferencePool, err := c.Datastore.getInferencePool()
41-
if err != nil {
42-
return ctrl.Result{}, err
43-
}
4447
c.updateDatastore(endpointSlice, inferencePool)
4548

4649
return ctrl.Result{}, nil
@@ -81,14 +84,6 @@ func (c *EndpointSliceReconciler) updateDatastore(
8184
}
8285

8386
func (c *EndpointSliceReconciler) SetupWithManager(mgr ctrl.Manager) error {
84-
inferencePoolAvailable := func(object client.Object) bool {
85-
_, err := c.Datastore.getInferencePool()
86-
if err != nil {
87-
klog.V(logutil.DEFAULT).Infof("Skipping reconciling EndpointSlice because the InferencePool is not available yet: %v", err)
88-
}
89-
return err == nil
90-
}
91-
9287
ownsEndPointSlice := func(object client.Object) bool {
9388
// Check if the object is an EndpointSlice
9489
endpointSlice, ok := object.(*discoveryv1.EndpointSlice)
@@ -98,17 +93,12 @@ func (c *EndpointSliceReconciler) SetupWithManager(mgr ctrl.Manager) error {
9893

9994
gotLabel := endpointSlice.ObjectMeta.Labels[serviceOwnerLabel]
10095
wantLabel := c.ServiceName
101-
if gotLabel != wantLabel {
102-
namesapcedName := endpointSlice.ObjectMeta.Namespace + "/" + endpointSlice.ObjectMeta.Name
103-
klog.V(logutil.DEFAULT).Infof("Skipping EndpointSlice %v because its service owner label %v doesn't match the pool service name %v", namesapcedName, gotLabel, wantLabel)
104-
}
10596
return gotLabel == wantLabel
10697
}
10798

10899
return ctrl.NewControllerManagedBy(mgr).
109100
For(&discoveryv1.EndpointSlice{},
110-
builder.WithPredicates(predicate.NewPredicateFuncs(inferencePoolAvailable),
111-
predicate.NewPredicateFuncs(ownsEndPointSlice))).
101+
builder.WithPredicates(predicate.NewPredicateFuncs(ownsEndPointSlice))).
112102
Complete(c)
113103
}
114104

0 commit comments

Comments
 (0)