37 Star 411 Fork 76

GVPrancher/rancher

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
interval.go 1.54 KB
Copy Edit Raw Blame History
kinarashah authored 2019-02-07 16:02 . mcapp controller fixes
package multiclusterapp
import (
"context"
"github.com/rancher/rancher/pkg/namespace"
"github.com/rancher/rancher/pkg/ticker"
"github.com/rancher/types/apis/management.cattle.io/v3"
"github.com/sirupsen/logrus"
"sync"
"time"
)
type IntervalData struct {
interval int
cancelFunc context.CancelFunc
}
var mcAppTickerData map[string]*IntervalData
var mcAppDataLock = sync.Mutex{}
func storeContext(cctx context.Context, mcapp *v3.MultiClusterApp, mcApps v3.MultiClusterAppInterface) {
if mcapp.Spec.UpgradeStrategy.RollingUpdate == nil {
return
}
set := mcapp.Spec.UpgradeStrategy.RollingUpdate.Interval
if set == 0 {
return
}
defer mcAppDataLock.Unlock()
mcAppDataLock.Lock()
if data, ok := mcAppTickerData[mcapp.Name]; ok {
if data.interval == set {
return
}
data.interval = set
data.cancelFunc()
delete(mcAppTickerData, mcapp.Name)
}
ctx, cancel := context.WithCancel(cctx)
go startTicker(ctx, set, mcApps, mcapp.Name)
mcAppTickerData[mcapp.Name] = &IntervalData{
interval: set,
cancelFunc: cancel,
}
}
func deleteContext(mcappName string) {
mcAppDataLock.Lock()
if data, ok := mcAppTickerData[mcappName]; ok {
data.cancelFunc()
delete(mcAppTickerData, mcappName)
}
mcAppDataLock.Unlock()
}
func startTicker(ctx context.Context, set int, mcApps v3.MultiClusterAppInterface, name string) {
interval := time.Duration(set) * time.Second
for range ticker.Context(ctx, interval) {
logrus.Debugf("mcappTicker: interval %v enqueue %s", set, name)
mcApps.Controller().Enqueue(namespace.GlobalNamespace, name)
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/rancher/rancher.git
git@gitee.com:rancher/rancher.git
rancher
rancher
rancher
v2.2.4-rc18

Search

0d507c66 1850385 C8b1a773 1850385