@@ -11,6 +11,7 @@ import (
1111 "github.com/mudler/LocalAI/core/services/galleryop"
1212 "github.com/mudler/LocalAI/pkg/model"
1313 "github.com/mudler/xlog"
14+ "github.com/nats-io/nats.go"
1415)
1516
1617// DistributedModelManager wraps a local ModelManager and adds NATS fan-out
@@ -84,6 +85,13 @@ func (d *DistributedBackendManager) DeleteBackend(name string) error {
8485 continue
8586 }
8687 if _ , delErr := d .adapter .DeleteBackend (node .ID , name ); delErr != nil {
88+ if errors .Is (delErr , nats .ErrNoResponders ) {
89+ // Node's NATS subscription is gone — likely restarted with a new ID.
90+ // Mark it unhealthy so future fan-outs skip it.
91+ xlog .Warn ("No NATS responders for node, marking unhealthy" , "node" , node .Name , "nodeID" , node .ID )
92+ d .registry .MarkUnhealthy (context .Background (), node .ID )
93+ continue
94+ }
8795 xlog .Warn ("Failed to propagate backend deletion to worker" , "node" , node .Name , "backend" , name , "error" , delErr )
8896 errs = append (errs , fmt .Errorf ("node %s: %w" , node .Name , delErr ))
8997 }
@@ -105,6 +113,11 @@ func (d *DistributedBackendManager) ListBackends() (gallery.SystemBackends, erro
105113 }
106114 reply , err := d .adapter .ListBackends (node .ID )
107115 if err != nil {
116+ if errors .Is (err , nats .ErrNoResponders ) {
117+ xlog .Warn ("No NATS responders for node, marking unhealthy" , "node" , node .Name , "nodeID" , node .ID )
118+ d .registry .MarkUnhealthy (context .Background (), node .ID )
119+ continue
120+ }
108121 xlog .Warn ("Failed to list backends on worker" , "node" , node .Name , "error" , err )
109122 continue
110123 }
@@ -145,6 +158,11 @@ func (d *DistributedBackendManager) InstallBackend(ctx context.Context, op *gall
145158 }
146159 reply , err := d .adapter .InstallBackend (node .ID , backendName , "" , string (galleriesJSON ))
147160 if err != nil {
161+ if errors .Is (err , nats .ErrNoResponders ) {
162+ xlog .Warn ("No NATS responders for node, marking unhealthy" , "node" , node .Name , "nodeID" , node .ID )
163+ d .registry .MarkUnhealthy (context .Background (), node .ID )
164+ continue
165+ }
148166 xlog .Warn ("Failed to install backend on worker" , "node" , node .Name , "backend" , backendName , "error" , err )
149167 continue
150168 }
0 commit comments