Merge pull request #21663 from gmarek/route

Wait for all route creation in RouteController
This commit is contained in:
Marcin Wielgus 2016-02-24 09:00:08 +01:00
commit 6f73f89f40

View File

@ -19,6 +19,7 @@ package route
import ( import (
"fmt" "fmt"
"net" "net"
"sync"
"time" "time"
"github.com/golang/glog" "github.com/golang/glog"
@ -96,19 +97,23 @@ func (rc *RouteController) reconcile(nodes []api.Node, routes []*cloudprovider.R
} }
nodeCIDRs[node.Name] = node.Spec.PodCIDR nodeCIDRs[node.Name] = node.Spec.PodCIDR
} }
wg := sync.WaitGroup{}
for _, route := range routes { for _, route := range routes {
if rc.isResponsibleForRoute(route) { if rc.isResponsibleForRoute(route) {
// Check if this route applies to a node we know about & has correct CIDR. // Check if this route applies to a node we know about & has correct CIDR.
if nodeCIDRs[route.TargetInstance] != route.DestinationCIDR { if nodeCIDRs[route.TargetInstance] != route.DestinationCIDR {
wg.Add(1)
// Delete the route. // Delete the route.
go func(route *cloudprovider.Route) { go func(route *cloudprovider.Route) {
if err := rc.routes.DeleteRoute(rc.clusterName, route); err != nil { if err := rc.routes.DeleteRoute(rc.clusterName, route); err != nil {
glog.Errorf("Could not delete route %s %s: %v", route.Name, route.DestinationCIDR, err) glog.Errorf("Could not delete route %s %s: %v", route.Name, route.DestinationCIDR, err)
} }
wg.Done()
}(route) }(route)
} }
} }
} }
wg.Wait()
return nil return nil
} }