DeleteModelFiles sends model.delete to all nodes that have the model cached. This removes model files from worker disks.
(modelName string)
| 309 | // DeleteModelFiles sends model.delete to all nodes that have the model cached. |
| 310 | // This removes model files from worker disks. |
| 311 | func (a *RemoteUnloaderAdapter) DeleteModelFiles(modelName string) error { |
| 312 | nodes, err := a.registry.FindNodesWithModel(context.Background(), modelName) |
| 313 | if err != nil || len(nodes) == 0 { |
| 314 | xlog.Debug("No nodes with model for file deletion", "model", modelName) |
| 315 | return nil |
| 316 | } |
| 317 | |
| 318 | for _, node := range nodes { |
| 319 | subject := messaging.SubjectNodeModelDelete(node.ID) |
| 320 | xlog.Info("Sending NATS model.delete", "nodeID", node.ID, "model", modelName) |
| 321 | |
| 322 | reply, err := messaging.RequestJSON[messaging.ModelDeleteRequest, messaging.ModelDeleteReply](a.nats, subject, messaging.ModelDeleteRequest{ModelName: modelName}, 30*time.Second) |
| 323 | if err != nil { |
| 324 | xlog.Warn("model.delete failed on node", "node", node.Name, "error", err) |
| 325 | continue |
| 326 | } |
| 327 | if !reply.Success { |
| 328 | xlog.Warn("model.delete failed on node", "node", node.Name, "error", reply.Error) |
| 329 | } |
| 330 | } |
| 331 | return nil |
| 332 | } |
| 333 | |
| 334 | // StopNode tells a worker node to shut down entirely (deregister + exit). |
| 335 | func (a *RemoteUnloaderAdapter) StopNode(nodeID string) error { |
no test coverage detected