From 7f14ce7a7ea61b5bef2460f965fd014818965338 Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Tue, 19 Jan 2021 18:16:49 -0500 Subject: [PATCH] Merge pull request #9591 from hashicorp/dnephin/state-store-coordinates-iter state: do not delete from inside an iteration (coordinates) --- agent/consul/state/catalog.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/agent/consul/state/catalog.go b/agent/consul/state/catalog.go index aa7fc0c605..f13ae9171f 100644 --- a/agent/consul/state/catalog.go +++ b/agent/consul/state/catalog.go @@ -740,7 +740,11 @@ func (s *Store) deleteNodeTxn(tx WriteTxn, idx uint64, nodeName string) error { if err != nil { return fmt.Errorf("failed coordinate lookup: %s", err) } + var coordsToDelete []interface{} for coord := coords.Next(); coord != nil; coord = coords.Next() { + coordsToDelete = append(coordsToDelete, coord) + } + for _, coord := range coordsToDelete { if err := tx.Delete("coordinates", coord); err != nil { return fmt.Errorf("failed deleting coordinate: %s", err) }