Remove unnecessary periodic sync

This commit is contained in:
Manuel de Brito Fontes 2017-08-04 14:22:06 -04:00
parent a091d3ede7
commit 69e766e042
3 changed files with 12 additions and 22 deletions

View file

@ -232,7 +232,9 @@ func newIngressController(config *Configuration) *GenericController {
ic.syncQueue.Enqueue(obj)
},
UpdateFunc: func(old, cur interface{}) {
if !reflect.DeepEqual(old, cur) {
oep := old.(*api.Endpoints)
ocur := cur.(*api.Endpoints)
if !reflect.DeepEqual(ocur.Subsets, oep.Subsets) {
ic.syncQueue.Enqueue(cur)
}
},
@ -410,7 +412,7 @@ func (ic *GenericController) syncIngress(key interface{}) error {
PassthroughBackends: passUpstreams,
}
if !ic.forceReload || ic.runningConfig != nil && ic.runningConfig.Equal(&pcfg) {
if !ic.forceReload && ic.runningConfig != nil && ic.runningConfig.Equal(&pcfg) {
glog.V(3).Infof("skipping backend reload (no changes detected)")
return nil
}
@ -1257,7 +1259,7 @@ func (ic GenericController) Start() {
runtime.HandleError(fmt.Errorf("Timed out waiting for caches to sync"))
}
go ic.syncQueue.Run(10*time.Second, ic.stopCh)
go ic.syncQueue.Run(time.Second, ic.stopCh)
if ic.syncStatus != nil {
go ic.syncStatus.Run(ic.stopCh)

View file

@ -8,6 +8,7 @@ import (
"net/http/pprof"
"os"
"syscall"
"time"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus/promhttp"
@ -64,8 +65,8 @@ func NewIngressController(backend ingress.Controller) *GenericController {
service with the format namespace/serviceName and the port of the service could be a
number of the name of the port.`)
resyncPeriod = flags.Duration("sync-period", 0,
`Relist and confirm cloud resources this often. Default is 0 (no resync)`)
resyncPeriod = flags.Duration("sync-period", 600*time.Second,
`Relist and confirm cloud resources this often. Default is 10 minutes`)
watchNamespace = flags.String("watch-namespace", api.NamespaceAll,
`Namespace to watch for Ingress. Default is to watch all namespaces`)
@ -148,6 +149,10 @@ func NewIngressController(backend ingress.Controller) *GenericController {
}
}
if resyncPeriod.Seconds() < 10 {
glog.Fatalf("resync period (%vs) is too low", resyncPeriod.Seconds())
}
err = os.MkdirAll(ingress.DefaultSSLDirectory, 0655)
if err != nil {
glog.Errorf("Failed to mkdir SSL directory: %v", err)

View file

@ -92,10 +92,7 @@ type statusSync struct {
// Run starts the loop to keep the status in sync
func (s statusSync) Run(stopCh <-chan struct{}) {
go wait.Forever(s.elector.Run, 0)
go s.run()
go s.syncQueue.Run(time.Second, stopCh)
<-stopCh
}
@ -136,20 +133,6 @@ func (s statusSync) Shutdown() {
s.updateStatus([]v1.LoadBalancerIngress{})
}
func (s *statusSync) run() {
err := wait.PollInfinite(updateInterval, func() (bool, error) {
if s.syncQueue.IsShuttingDown() {
return true, nil
}
// send a dummy object to the queue to force a sync
s.syncQueue.Enqueue("dummy")
return false, nil
})
if err != nil {
glog.Errorf("error waiting shutdown: %v", err)
}
}
func (s *statusSync) sync(key interface{}) error {
s.runLock.Lock()
defer s.runLock.Unlock()