12 Star 0 Fork 8

src-openEuler/libnetwork

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
backport-clean-up-inDelete-network-atomically.patch 2.40 KB
一键复制 编辑 原始数据 按行查看 历史
guojunding 提交于 2024-07-18 09:33 . Clean up inDelete network atomically
From dbbf124db33cbe4640da59fa03d91902162d7b8e Mon Sep 17 00:00:00 2001
From: Cory Snider <[email protected]>
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 <[email protected]>
(cherry picked from commit moby/moby@c957ad006747df00730ce3aeaf4ac9df14baa998)
Signed-off-by: Cory Snider <[email protected]>
---
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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/src-openeuler/libnetwork.git
[email protected]:src-openeuler/libnetwork.git
src-openeuler
libnetwork
libnetwork
master

搜索帮助