Skip to content

Commit efef7dc

Browse files
authored
plugins: start the go routine before calling Provide
1 parent 1c9e4c6 commit efef7dc

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

pkg/plugins/builder.go

+16-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"net/http"
77
"os"
88

9+
"github.com/sirupsen/logrus"
10+
"github.com/traefik/traefik/v2/pkg/log"
911
"github.com/traefik/yaegi/interp"
1012
"github.com/traefik/yaegi/stdlib"
1113
)
@@ -47,7 +49,13 @@ func NewBuilder(client *Client, plugins map[string]Descriptor, localPlugins map[
4749
return nil, fmt.Errorf("%s: failed to read manifest: %w", desc.ModuleName, err)
4850
}
4951

50-
i := interp.New(interp.Options{GoPath: client.GoPath(), Env: os.Environ()})
52+
logger := log.WithoutContext().WithFields(logrus.Fields{"plugin": "plugin-" + pName, "module": desc.ModuleName})
53+
i := interp.New(interp.Options{
54+
GoPath: client.GoPath(),
55+
Env: os.Environ(),
56+
Stdout: logger.WriterLevel(logrus.DebugLevel),
57+
Stderr: logger.WriterLevel(logrus.ErrorLevel),
58+
})
5159

5260
err = i.Use(stdlib.Symbols)
5361
if err != nil {
@@ -90,7 +98,13 @@ func NewBuilder(client *Client, plugins map[string]Descriptor, localPlugins map[
9098
return nil, fmt.Errorf("%s: failed to read manifest: %w", desc.ModuleName, err)
9199
}
92100

93-
i := interp.New(interp.Options{GoPath: localGoPath, Env: os.Environ()})
101+
logger := log.WithoutContext().WithFields(logrus.Fields{"plugin": "plugin-" + pName, "module": desc.ModuleName})
102+
i := interp.New(interp.Options{
103+
GoPath: localGoPath,
104+
Env: os.Environ(),
105+
Stdout: logger.WriterLevel(logrus.DebugLevel),
106+
Stderr: logger.WriterLevel(logrus.ErrorLevel),
107+
})
94108

95109
err = i.Use(stdlib.Symbols)
96110
if err != nil {

pkg/plugins/providers.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -153,11 +153,6 @@ func (p *Provider) Provide(configurationChan chan<- dynamic.Message, pool *safe.
153153

154154
cfgChan := make(chan json.Marshaler)
155155

156-
err := p.pp.Provide(cfgChan)
157-
if err != nil {
158-
return fmt.Errorf("error from %s: %w", p.name, err)
159-
}
160-
161156
pool.GoCtx(func(ctx context.Context) {
162157
logger := log.FromContext(log.With(ctx, log.Str(log.ProviderName, p.name)))
163158

@@ -193,5 +188,10 @@ func (p *Provider) Provide(configurationChan chan<- dynamic.Message, pool *safe.
193188
}
194189
})
195190

191+
err := p.pp.Provide(cfgChan)
192+
if err != nil {
193+
return fmt.Errorf("error from %s: %w", p.name, err)
194+
}
195+
196196
return nil
197197
}

0 commit comments

Comments
 (0)