@@ -301,15 +301,19 @@ func (d *Dispatcher) Start() {
301301
302302 // add event handler
303303 reg , _ := d .informer .AddEventHandler (cache.ResourceEventHandlerFuncs {
304- AddFunc : func (obj interface {} ) {
304+ AddFunc : func (obj any ) {
305305 es := obj .(* discoveryv1.EndpointSlice )
306306 d .handleAddEndpointSlice (es )
307307 },
308- UpdateFunc : func (oldObj interface {} , newObj interface {} ) {
308+ UpdateFunc : func (oldObj any , newObj any ) {
309309 esOld := oldObj .(* discoveryv1.EndpointSlice )
310310 esNew := newObj .(* discoveryv1.EndpointSlice )
311311 d .handleUpdateEndpointSlice (esOld , esNew )
312312 },
313+ DeleteFunc : func (obj any ) {
314+ es := obj .(* discoveryv1.EndpointSlice )
315+ d .handleDeleteEndpointSlice (es )
316+ },
313317 })
314318 d .informerReg = reg
315319
@@ -352,6 +356,12 @@ func (d *Dispatcher) handleUpdateEndpointSlice(esOld *discoveryv1.EndpointSlice,
352356 d .updateState (toAdd .ToSlice (), toDelete .ToSlice ())
353357}
354358
359+ // Handle delete
360+ func (d * Dispatcher ) handleDeleteEndpointSlice (es * discoveryv1.EndpointSlice ) {
361+ toDelete := getServersFromEndpointSlice (es )
362+ d .updateState (nil , toDelete )
363+ }
364+
355365// Adds and deletes ips, updates clientconn state, publishes change to eventbus
356366func (d * Dispatcher ) updateState (toAdd []server , toDelete []server ) {
357367 d .mu .Lock ()
@@ -378,7 +388,6 @@ func (d *Dispatcher) updateState(toAdd []server, toDelete []server) {
378388 for i , server := range servers {
379389 addrs [i ] = resolver.Address {Addr : fmt .Sprintf ("%s:%s" , server .ip , d .connectArgs .Port )}
380390 }
381-
382391 d .resolver .UpdateState (resolver.State {Addresses : addrs })
383392
384393 d .mu .Unlock ()
0 commit comments