@@ -96,14 +96,16 @@ func (r *TensorFusionConnectionReconciler) Reconcile(ctx context.Context, req ct
9696 // If status is not set or pending, try to schedule
9797 if connection .Status .Phase == "" || connection .Status .Phase == tfv1 .TensorFusionConnectionPending {
9898 // Try to get an available node from scheduler
99- node , err := r .Scheduler .Schedule (connection .Spec .Resources .Request )
99+ var err error
100+ node , err = r .Scheduler .Schedule (connection .Spec .Resources .Request )
100101 if err != nil {
101- log .Error (err , "Failed to schedule connection" )
102+ log .Info (err . Error () )
102103 connection .Status .Phase = tfv1 .TensorFusionConnectionPending
103104 } else if node != nil {
104105 connection .Status .Phase = tfv1 .TensorFusionConnectionRunning
105106 connection .Status .ConnectionURL = worker .GenerateConnectionURL (node , connection )
106- connection .Status .Node = node .Name // Store the node name for cleanup
107+ // Store the node name for cleanup
108+ connection .Status .Node = node .Name
107109 } else {
108110 connection .Status .Phase = tfv1 .TensorFusionConnectionPending
109111 }
@@ -113,6 +115,9 @@ func (r *TensorFusionConnectionReconciler) Reconcile(ctx context.Context, req ct
113115 return ctrl.Result {}, err
114116 }
115117
118+ if connection .Status .Phase == tfv1 .TensorFusionConnectionPending {
119+ return ctrl.Result {RequeueAfter : constants .PendingRequeueDuration }, nil
120+ }
116121 return ctrl.Result {}, nil
117122}
118123
@@ -124,7 +129,7 @@ func (r *TensorFusionConnectionReconciler) handleDeletion(ctx context.Context, c
124129
125130 // Get the node
126131 node := & tfv1.GPUNode {}
127- if err := r .Get (ctx , client.ObjectKey {Name : connection .Status .Node }, node ); err != nil {
132+ if err := r .Get (ctx , client.ObjectKey {Name : connection .Status .Node , Namespace : connection . Namespace }, node ); err != nil {
128133 if errors .IsNotFound (err ) {
129134 // Node is already gone, nothing to do
130135 return nil
@@ -133,11 +138,11 @@ func (r *TensorFusionConnectionReconciler) handleDeletion(ctx context.Context, c
133138 }
134139
135140 // Release the resources
136- if err := r .Scheduler .Release (node ); err != nil {
141+ if err := r .Scheduler .Release (connection . Spec . Resources . Request , node ); err != nil {
137142 return err
138143 }
139144
140- return nil
145+ return r . MustUpdateStatus ( ctx , connection , node )
141146}
142147
143148// Helper functions to handle finalizers
@@ -172,8 +177,7 @@ func (r *TensorFusionConnectionReconciler) MustUpdateStatus(ctx context.Context,
172177 }
173178
174179 // Update the status fields we care about
175- latestConnection .Status .Phase = connection .Status .Phase
176- latestConnection .Status .ConnectionURL = connection .Status .ConnectionURL
180+ latestConnection .Status = connection .Status
177181
178182 // Update the connection status
179183 if err := r .Status ().Update (ctx , latestConnection ); err != nil {
0 commit comments