@@ -642,16 +642,25 @@ func (r *SmartRouter) tryWarmPath(ctx context.Context, att *routeAttempt) *Route
642642 // Verify the backend process is still alive via gRPC health check
643643 if ! r .probeHealth (ctx , node , modelAddr ) {
644644 // Stale — roll back the increment, remove the specific replica row, fall through
645- r .registry .DecrementInFlight (ctx , node .ID , att .trackingKey , replicaIdx )
646- r .registry .RemoveNodeModel (ctx , node .ID , att .trackingKey , replicaIdx )
645+ if err := r .registry .DecrementInFlight (ctx , node .ID , att .trackingKey , replicaIdx ); err != nil {
646+ xlog .Warn ("Failed to release stale routing reservation" ,
647+ "node" , node .ID , "model" , att .trackingKey , "replica" , replicaIdx , "error" , err )
648+ }
649+ if err := r .registry .RemoveNodeModel (ctx , node .ID , att .trackingKey , replicaIdx ); err != nil {
650+ xlog .Warn ("Failed to remove stale model from registry" ,
651+ "node" , node .ID , "model" , att .trackingKey , "replica" , replicaIdx , "error" , err )
652+ }
647653 xlog .Warn ("Backend not reachable for cached model, falling through to reload" ,
648654 "node" , node .Name , "model" , att .modelName , "replica" , replicaIdx )
649655 return nil
650656 }
651657
652658 // Verify node still matches scheduling constraints
653659 if ! r .nodeMatchesScheduling (ctx , node , att .sched ) {
654- r .registry .DecrementInFlight (ctx , node .ID , att .trackingKey , replicaIdx )
660+ if err := r .registry .DecrementInFlight (ctx , node .ID , att .trackingKey , replicaIdx ); err != nil {
661+ xlog .Warn ("Failed to release unmatched routing reservation" ,
662+ "node" , node .ID , "model" , att .trackingKey , "replica" , replicaIdx , "error" , err )
663+ }
655664 xlog .Info ("Cached model on node that no longer matches selector, falling through" ,
656665 "node" , node .Name , "model" , att .trackingKey , "replica" , replicaIdx )
657666 return nil
0 commit comments