Skip to content

Commit c7a5b6b

Browse files
authored
Merge pull request #525 from jetstack/fix/vc-31703-agent-memory-startup-spikes-1
fix/vc-31703-agent-memory-startup-spikes
2 parents 8683d26 + fac18da commit c7a5b6b

File tree

1 file changed

+28
-33
lines changed

1 file changed

+28
-33
lines changed

pkg/agent/run.go

Lines changed: 28 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ import (
1818

1919
"github.com/cenkalti/backoff"
2020
"github.com/hashicorp/go-multierror"
21-
"github.com/jetstack/preflight/api"
22-
"github.com/jetstack/preflight/pkg/client"
23-
"github.com/jetstack/preflight/pkg/datagatherer"
24-
"github.com/jetstack/preflight/pkg/version"
2521
json "github.com/json-iterator/go"
2622
"github.com/prometheus/client_golang/prometheus"
2723
"github.com/prometheus/client_golang/prometheus/promhttp"
2824
"github.com/spf13/cobra"
25+
26+
"github.com/jetstack/preflight/api"
27+
"github.com/jetstack/preflight/pkg/client"
28+
"github.com/jetstack/preflight/pkg/datagatherer"
29+
"github.com/jetstack/preflight/pkg/version"
2930
)
3031

3132
// ConfigFilePath is where the agent will try to load the configuration from
@@ -122,38 +123,32 @@ func Run(cmd *cobra.Command, args []string) {
122123
log.Fatalf("failed to instantiate %q data gatherer %q: %v", kind, dgConfig.Name, err)
123124
}
124125

125-
wg.Add(1)
126+
log.Printf("starting %q datagatherer", dgConfig.Name)
126127

127-
go func() {
128-
log.Printf("starting %q datagatherer", dgConfig.Name)
129-
130-
// start the data gatherers and wait for the cache sync
131-
if err := newDg.Run(ctx.Done()); err != nil {
132-
log.Printf("failed to start %q data gatherer %q: %v", kind, dgConfig.Name, err)
133-
}
134-
135-
// bootCtx is a context with a timeout to allow the informer 5
136-
// seconds to perform an initial sync. It may fail, and that's fine
137-
// too, it will backoff and retry of its own accord. Initial boot
138-
// will only be delayed by a max of 5 seconds.
139-
bootCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
140-
defer cancel()
141-
142-
// wait for the informer to complete an initial sync, we do this to
143-
// attempt to have an initial set of data for the first upload of
144-
// the run.
145-
if err := newDg.WaitForCacheSync(bootCtx.Done()); err != nil {
146-
// log sync failure, this might recover in future
147-
log.Printf("failed to complete initial sync of %q data gatherer %q: %v", kind, dgConfig.Name, err)
148-
}
128+
// start the data gatherers and wait for the cache sync
129+
if err := newDg.Run(ctx.Done()); err != nil {
130+
log.Printf("failed to start %q data gatherer %q: %v", kind, dgConfig.Name, err)
131+
}
149132

150-
// regardless of success, this dataGatherers has been given a
151-
// chance to sync its cache and we will now continue as normal. We
152-
// assume at the informers will either recover or the log messages
153-
// above will help operators correct the issue.
154-
wg.Done()
155-
}()
133+
// bootCtx is a context with a timeout to allow the informer 5
134+
// seconds to perform an initial sync. It may fail, and that's fine
135+
// too, it will backoff and retry of its own accord. Initial boot
136+
// will only be delayed by a max of 5 seconds.
137+
bootCtx, cancel := context.WithTimeout(ctx, 5*time.Second)
138+
defer cancel()
139+
140+
// wait for the informer to complete an initial sync, we do this to
141+
// attempt to have an initial set of data for the first upload of
142+
// the run.
143+
if err := newDg.WaitForCacheSync(bootCtx.Done()); err != nil {
144+
// log sync failure, this might recover in future
145+
log.Printf("failed to complete initial sync of %q data gatherer %q: %v", kind, dgConfig.Name, err)
146+
}
156147

148+
// regardless of success, this dataGatherers has been given a
149+
// chance to sync its cache and we will now continue as normal. We
150+
// assume at the informers will either recover or the log messages
151+
// above will help operators correct the issue.
157152
dataGatherers[dgConfig.Name] = newDg
158153
}
159154

0 commit comments

Comments
 (0)