Projects
openEuler:Roll:Everything:RVA20
libnetwork
_service:obs_scm:backport-clean-up-inDelete-net...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:backport-clean-up-inDelete-network-atomically.patch of Package libnetwork
From dbbf124db33cbe4640da59fa03d91902162d7b8e Mon Sep 17 00:00:00 2001 From: Cory Snider <csnider@mirantis.com> Date: Tue, 25 Apr 2023 11:49:58 -0400 Subject: [PATCH] Clean up inDelete network atomically The (*network).ipamRelease function nils out the network's IPAM info fields, putting the network struct into an inconsistent state. The network-restore startup code panics if it tries to restore a network from a struct which has fewer IPAM config entries than IPAM info entries. Therefore (*network).delete contains a critical section: by persisting the network to the store after ipamRelease(), the datastore will contain an inconsistent network until the deletion operation completes and finishes deleting the network from the datastore. If for any reason the deletion operation is interrupted between ipamRelease() and deleteFromStore(), the daemon will crash on startup when it tries to restore the network. Updating the datastore after releasing the network's IPAM pools may have served a purpose in the past, when a global datastore was used for intra-cluster communication and the IPAM allocator had persistent global state, but nowadays there is no global datastore and the IPAM allocator has no persistent state whatsoever. Remove the vestigial datastore update as it is no longer necessary and only serves to cause problems. If the network deletion is interrupted before the network is deleted from the datastore, the deletion will resume during the next daemon startup, including releasing the IPAM pools. Signed-off-by: Cory Snider <csnider@mirantis.com> (cherry picked from commit moby/moby@c957ad006747df00730ce3aeaf4ac9df14baa998) Signed-off-by: Cory Snider <csnider@mirantis.com> --- network.go | 3 --- 1 file changed, 3 deletions(-) diff --git libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9/network.go libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9-b/network.go index 734bb83cdd..7895ea53b1 100644 --- libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9/network.go +++ libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9-b/network.go @@ -1064,9 +1064,6 @@ func (n *network) delete(force bool, rmLBEndpoint bool) error { } n.ipamRelease() - if err = c.updateToStore(n); err != nil { - logrus.Warnf("Failed to update store after ipam release for network %s (%s): %v", n.Name(), n.ID(), err) - } // We are about to delete the network. Leave the gossip // cluster for the network to stop all incoming network
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2