From 481bd6ff373d1bc146467edbfa979cfa2a3876b8 Mon Sep 17 00:00:00 2001 From: vivi Date: Thu, 21 Dec 2023 03:37:01 +0200 Subject: [PATCH] Add context to SingleWeavelet initialization --- internal/weaver/singleweavelet.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/weaver/singleweavelet.go b/internal/weaver/singleweavelet.go index 7629b3928..8de069610 100644 --- a/internal/weaver/singleweavelet.go +++ b/internal/weaver/singleweavelet.go @@ -58,6 +58,8 @@ type SingleWeaveletOptions struct { // SingleWeavelet is a weavelet that runs all components locally in a single // process. It is the weavelet used when you "go run" a Service Weaver app. type SingleWeavelet struct { + ctx context.Context // the propagated context + // Registrations. regs []*codegen.Registration // registered components regsByName map[string]*codegen.Registration // registrations by component name @@ -130,6 +132,7 @@ func NewSingleWeavelet(ctx context.Context, regs []*codegen.Registration, opts S } return &SingleWeavelet{ + ctx: ctx, regs: regs, regsByName: regsByName, regsByIntf: regsByIntf, @@ -283,8 +286,7 @@ func (w *SingleWeavelet) get(reg *codegen.Registration) (any, error) { // Call Init if available. if i, ok := obj.(interface{ Init(context.Context) error }); ok { - // TODO(mwhittaker): Use better context. - if err := i.Init(context.Background()); err != nil { + if err := i.Init(w.ctx); err != nil { return nil, fmt.Errorf("component %q initialization failed: %w", reg.Name, err) } }