-
Notifications
You must be signed in to change notification settings - Fork 439
/
Copy pathinit.go
52 lines (44 loc) · 1.2 KB
/
init.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package workflow
import (
"context"
"time"
"github.com/go-gorp/gorp"
"github.com/rockbears/log"
"github.com/ovh/cds/engine/cache"
)
var baseUIURL, defaultOS, defaultArch string
var maxRuns int64
func SetMaxRuns(confMaxRuns int64) {
maxRuns = confMaxRuns
if maxRuns == 0 {
maxRuns = 255
}
}
//Initialize starts goroutines for workflows
func Initialize(ctx context.Context, DBFunc func() *gorp.DbMap, store cache.Store, uiURL, confDefaultOS, confDefaultArch string, maxLogSize int64) {
baseUIURL = uiURL
defaultOS = confDefaultOS
defaultArch = confDefaultArch
tickStop := time.NewTicker(30 * time.Minute)
tickHeart := time.NewTicker(10 * time.Second)
defer tickHeart.Stop()
defer tickStop.Stop()
db := DBFunc()
for {
select {
case <-ctx.Done():
if ctx.Err() != nil {
log.Error(ctx, "Exiting workflow ticker: %v", ctx.Err())
return
}
case <-tickHeart.C:
if err := manageDeadJob(ctx, DBFunc, store, maxLogSize); err != nil {
log.Warn(ctx, "workflow.manageDeadJob> Error on restartDeadJob : %v", err)
}
case <-tickStop.C:
if err := stopRunsBlocked(ctx, db); err != nil {
log.Warn(ctx, "workflow.stopRunsBlocked> Error on stopRunsBlocked : %v", err)
}
}
}
}