diff --git a/Fix-deadlock-between-getSvcRecords-and-processEndpointDelete.patch b/Fix-deadlock-between-getSvcRecords-and-processEndpointDelete.patch new file mode 100644 index 0000000000000000000000000000000000000000..39b03063dec6e7b22d1ff4bb57cac4cff2656774 --- /dev/null +++ b/Fix-deadlock-between-getSvcRecords-and-processEndpointDelete.patch @@ -0,0 +1,32 @@ +diff -apurN libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9/store.go libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9-new/store.go +--- libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9/store.go 2018-07-07 07:28:11.000000000 +0800 ++++ libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9-new/store.go 2024-06-18 15:47:02.153424400 +0800 +@@ -421,11 +421,14 @@ func (c *controller) processEndpointDele + return + } + ++ networkID := n.ID() ++ endpointID := ep.ID() ++ + c.Lock() +- nw, ok := nmap[n.ID()] ++ nw, ok := nmap[networkID] + + if ok { +- delete(nw.localEps, ep.ID()) ++ delete(nw.localEps, endpointID) + c.Unlock() + + // Update the svc db about local endpoint leave right away +@@ -439,9 +442,8 @@ func (c *controller) processEndpointDele + + // This is the last container going away for the network. Destroy + // this network's svc db entry +- delete(c.svcRecords, n.ID()) +- +- delete(nmap, n.ID()) ++ delete(c.svcRecords, networkID) ++ delete(nmap, networkID) + } + } + c.Unlock() diff --git a/libnetwork.spec b/libnetwork.spec index d09a24d8662ca07b5dde81a4cb7363e25ce24940..49267eb2b87814927bea186d1bb8e72f0d5b1c18 100644 --- a/libnetwork.spec +++ b/libnetwork.spec @@ -1,20 +1,25 @@ %define debug_package %{nil} Name: libnetwork Version: 0.8.0.dev.2 -Release: 105 +Release: 106 Summary: Proxy used for docker port mapping License: CC-BY-SA-4.0 and MIT and Apache-2.0 and MPL-2.0 URL: https://github.com/docker/libnetwork Source: libnetwork-d00ceed.tar.gz + +Patch9001: Fix-deadlock-between-getSvcRecords-and-processEndpointDelete.patch + BuildRequires: golang >= 1.8.3 BuildRequires: make Provides: docker-proxy Obsoletes: docker-proxy + %description %prep -%setup -c -n libnetwork +%setup -c -n libnetwork +%patch9001 -p1 %build cd libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9 @@ -46,6 +51,9 @@ install -p -m 755 libnetwork-d00ceed44cc447c77f25cdf5d59e83163bdcb4c9/docker-pro %{_bindir}/docker-proxy %changelog +* Tue Jun 18 2024 guojunding - 0.8.0.dev.2-106 +- Fix deadlock between getSvcRecords and processEndpointDelete + * Sat May 06 2023 yoo - 0.8.0.dev.2-105 - fix clang build error