Skip to content

Commit 4250e53

Browse files
author
OpenShift Bot
authored
Merge pull request #10652 from danwinship/poke-endpoints-filter
Merged by openshift-bot
2 parents dbf88bf + 143325f commit 4250e53

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

pkg/sdn/plugin/proxy.go

+25-8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package plugin
33
import (
44
"fmt"
55
"net"
6+
"sync"
67

78
"github.com/golang/glog"
89

@@ -25,10 +26,12 @@ type proxyFirewallItem struct {
2526
}
2627

2728
type ovsProxyPlugin struct {
28-
registry *Registry
29-
firewall map[string][]proxyFirewallItem
30-
29+
registry *Registry
3130
baseEndpointsHandler pconfig.EndpointsConfigHandler
31+
32+
lock sync.Mutex
33+
firewall map[string][]proxyFirewallItem
34+
allEndpoints []kapi.Endpoints
3235
}
3336

3437
// Called by higher layers to create the proxy plugin instance; only used by nodes
@@ -77,8 +80,15 @@ func (proxy *ovsProxyPlugin) watchEgressNetworkPolicies() {
7780
if eventType == watch.Deleted {
7881
policy.Spec.Egress = nil
7982
}
80-
proxy.updateNetworkPolicy(*policy)
81-
// FIXME: poke the endpoint-syncer somehow...
83+
84+
func() {
85+
proxy.lock.Lock()
86+
defer proxy.lock.Unlock()
87+
proxy.updateNetworkPolicy(*policy)
88+
if proxy.allEndpoints != nil {
89+
proxy.updateEndpoints()
90+
}
91+
}()
8292
}
8393
}
8494

@@ -111,8 +121,15 @@ func (proxy *ovsProxyPlugin) firewallBlocksIP(namespace string, ip net.IP) bool
111121
}
112122

113123
func (proxy *ovsProxyPlugin) OnEndpointsUpdate(allEndpoints []kapi.Endpoints) {
124+
proxy.lock.Lock()
125+
defer proxy.lock.Unlock()
126+
proxy.allEndpoints = allEndpoints
127+
proxy.updateEndpoints()
128+
}
129+
130+
func (proxy *ovsProxyPlugin) updateEndpoints() {
114131
if len(proxy.firewall) == 0 {
115-
proxy.baseEndpointsHandler.OnEndpointsUpdate(allEndpoints)
132+
proxy.baseEndpointsHandler.OnEndpointsUpdate(proxy.allEndpoints)
116133
return
117134
}
118135

@@ -122,10 +139,10 @@ func (proxy *ovsProxyPlugin) OnEndpointsUpdate(allEndpoints []kapi.Endpoints) {
122139
return
123140
}
124141

125-
filteredEndpoints := make([]kapi.Endpoints, 0, len(allEndpoints))
142+
filteredEndpoints := make([]kapi.Endpoints, 0, len(proxy.allEndpoints))
126143

127144
EndpointLoop:
128-
for _, ep := range allEndpoints {
145+
for _, ep := range proxy.allEndpoints {
129146
ns := ep.ObjectMeta.Namespace
130147
for _, ss := range ep.Subsets {
131148
for _, addr := range ss.Addresses {

0 commit comments

Comments
 (0)