From fbf2fe8b7dc2cc532ef7de136f95016f7f56b267 Mon Sep 17 00:00:00 2001 From: Rob Murray Date: Mon, 29 Sep 2025 11:15:05 +0100 Subject: [PATCH] Eliminate warning about endpoint count store delete Commit 380ded6 restored a now-unused endpoint count to the store, so that when the daemon is downgraded it exists for the old code to find. But, on network deletion, the endpoint count was not loaded from the store - so the delete code saw the wrong "index", and logged a warning before deleting it anyway. Use DeleteObject instead of DeleteObjectAtomic, so the old index isn't checked. Signed-off-by: Rob Murray (cherry picked from commit 94bcf894127ac2dfed610ef078d296c09f316594) Signed-off-by: Sebastiaan van Stijn --- libnetwork/network.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/libnetwork/network.go b/libnetwork/network.go index a68735d916..6d54ad3a18 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -1115,18 +1115,17 @@ func (n *Network) delete(force bool, rmLBEndpoint bool) error { } removeFromStore: - // deleteFromStore performs an atomic delete operation and the - // Network.epCnt will help prevent any possible - // race between endpoint join and network delete - // // TODO(robmry) - remove this once downgrade past 28.1.0 is no longer supported. // The endpoint count is no longer used, it's created in the store to make // downgrade work, versions older than 28.1.0 expect to read it and error if they - // can't. The stored count is not maintained, so the downgraded version will - // always find it's zero (which is usually correct because the daemon had - // stopped), but older daemons fix it on startup anyway. - if err = c.deleteFromStore(&endpointCnt{n: n}); err != nil { - log.G(context.TODO()).Debugf("Error deleting endpoint count from store for stale network %s (%s) for deletion: %v", n.Name(), n.ID(), err) + // can't. + if err := c.store.DeleteObject(&endpointCnt{n: n}); err != nil { + if !errors.Is(err, datastore.ErrKeyNotFound) { + log.G(context.TODO()).WithFields(log.Fields{ + "network": n.name, + "error": err, + }).Debug("Error deleting network endpoint count from store") + } } if err = c.deleteStoredNetwork(n); err != nil {