Skip to content

Commit a5840d1

Browse files
FedeDPpoiana
authored andcommitted
fix(plugins/container): use an unique ctx for fetcher.
Podman relies upon context to store its connection infos. Using same ctx already used by the real Podman engine means that we are going to tamper with its connection info stored in the main ctx. Instead, fetcher should use its own context. Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
1 parent 6ac5f75 commit a5840d1

File tree

1 file changed

+9
-3
lines changed
  • plugins/container/go-worker/pkg/container

1 file changed

+9
-3
lines changed

plugins/container/go-worker/pkg/container/fetcher.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,28 @@ func GetFetcherChan() chan<- string {
2222

2323
type fetcher struct {
2424
getters []getter
25+
ctx context.Context
2526
}
2627

2728
// NewFetcherEngine returns a fetcher engine.
2829
// The fetcher engine is responsible to allow us to get() single container
2930
// trying all container engines enabled.
30-
func NewFetcherEngine(ctx context.Context, containerEngines []Engine) Engine {
31+
func NewFetcherEngine(_ context.Context, containerEngines []Engine) Engine {
3132
f := fetcher{
3233
getters: make([]getter, len(containerEngines)),
34+
// Since podman relies upon context to store
35+
// connection-related info,
36+
// we need a unique context for fetcher
37+
// to avoid tampering with real podman engine context.
38+
ctx: context.Background(),
3339
}
3440
for i, engine := range containerEngines {
3541
copyEngine, ok := engine.(copier)
3642
if !ok {
3743
// We need all engines to implement the copier interface to be copied by fetcher.
3844
panic("not a copier")
3945
}
40-
e, _ := copyEngine.copy(ctx)
46+
e, _ := copyEngine.copy(f.ctx)
4147
if e != nil {
4248
// No type check since Engine interface extends getter.
4349
f.getters[i] = e.(getter)
@@ -75,7 +81,7 @@ func (f *fetcher) Listen(ctx context.Context, wg *sync.WaitGroup) (<-chan event.
7581
return
7682
case containerId := <-fetcherChan:
7783
for _, e := range f.getters {
78-
evt, _ := e.get(ctx, containerId)
84+
evt, _ := e.get(f.ctx, containerId)
7985
if evt != nil {
8086
outCh <- *evt
8187
break

0 commit comments

Comments
 (0)