diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2017-03-11 20:18:27 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2017-03-11 20:18:27 +0100 |
| commit | 3c4c12d9c88dc3a9a9fcaed3b3613e579c2e2ae4 (patch) | |
| tree | 24d914a4eef4e4d81fb07b0f2a72880ca167d08b | |
| parent | 84dec9ec68e40c07d674619b54e0d0fedc6a3a79 (diff) | |
syz-gce: don't poll repositories too frequently
We've hit a situation when syz-manager immidiately exits.
This caused too frequent polls and rate limiting errors.
Sleep for at least some time if manager exits immidiately.
| -rw-r--r-- | syz-gce/syz-gce.go | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/syz-gce/syz-gce.go b/syz-gce/syz-gce.go index 534c031fd..da0354196 100644 --- a/syz-gce/syz-gce.go +++ b/syz-gce/syz-gce.go @@ -150,11 +150,13 @@ func main() { var managerCmd *exec.Cmd managerStopped := make(chan error) stoppingManager := false + alreadyPolled := false var delayDuration time.Duration loop: for { if delayDuration != 0 { Logf(0, "sleep for %v", delayDuration) + start := time.Now() select { case <-time.After(delayDuration): case err := <-managerStopped: @@ -164,6 +166,11 @@ loop: Logf(0, "syz-manager exited with %v", err) managerCmd = nil atomic.StoreUint32(&managerHttpPort, 0) + minSleep := 5 * time.Minute + if !stoppingManager && time.Since(start) < minSleep { + Logf(0, "syz-manager exited too quickly, sleeping for %v", minSleep) + time.Sleep(minSleep) + } case s := <-sigC: switch s { case syscall.SIGUSR1: @@ -192,15 +199,18 @@ loop: } delayDuration = 15 * time.Minute // assume that an error happened - Logf(0, "polling...") - for _, a := range actions { - hash, err := a.Poll() - if err != nil { - Logf(0, "failed to poll %v: %v", a.Name(), err) - continue loop + if !alreadyPolled { + Logf(0, "polling...") + for _, a := range actions { + hash, err := a.Poll() + if err != nil { + Logf(0, "failed to poll %v: %v", a.Name(), err) + continue loop + } + nextHashes[a.Name()] = hash } - nextHashes[a.Name()] = hash } + changed := managerCmd == nil for _, a := range actions { next := nextHashes[a.Name()] @@ -227,8 +237,10 @@ loop: managerCmd.Process.Kill() } delayDuration = time.Minute + alreadyPolled = true continue } + alreadyPolled = false for _, a := range actions { if currHashes[a.Name()] == nextHashes[a.Name()] { |
