diff --git a/internal/pkg/pkg.go b/internal/pkg/pkg.go index 6542741f..e90bb72c 100644 --- a/internal/pkg/pkg.go +++ b/internal/pkg/pkg.go @@ -699,13 +699,13 @@ type External interface { // Artifact returns the address of the [Checksum] of the cure outcome of // an [Artifact] corresponding to id, or nil if this [Artifact] is not // available in the external cache. - Artifact(id unique.Handle[ID]) (*Checksum, error) + Artifact(ctx context.Context, id unique.Handle[ID]) (*Checksum, error) // Checksum returns an [Artifact] producing the specified checksum. Checksum(checksum unique.Handle[Checksum]) Artifact // Status returns [io.ReadCloser] of the status file of an [Artifact] // corresponding to id, or nil if this [Artifact] is not available or a // status file is not present. - Status(id unique.Handle[ID]) (io.ReadCloser, error) + Status(r *RContext, id unique.Handle[ID]) (io.ReadCloser, error) } // Cache is a support layer that implementations of [Artifact] can use to store @@ -1833,7 +1833,7 @@ func (r *RContext) NewMeasuredReader( } // tryExtern attempts to obtain an [Artifact] outcome from extern. -func (c *Cache) tryExtern(id unique.Handle[ID]) ( +func (c *Cache) tryExtern(ctx context.Context, id unique.Handle[ID]) ( unique.Handle[Checksum], io.ReadCloser, error, @@ -1845,7 +1845,7 @@ func (c *Cache) tryExtern(id unique.Handle[ID]) ( return zeroChecksum, nil, nil } - v, err := c.extern.Artifact(id) + v, err := c.extern.Artifact(ctx, id) if err != nil { return zeroChecksum, nil, err } @@ -1862,7 +1862,7 @@ func (c *Cache) tryExtern(id unique.Handle[ID]) ( } var status io.ReadCloser - status, err = c.extern.Status(id) + status, err = c.extern.Status(&RContext{common{ctx, c}}, id) return checksum, status, err } @@ -2205,7 +2205,7 @@ func (c *Cache) cure(a Artifact, curesExempt bool) ( externChecksum unique.Handle[Checksum] externStatus io.ReadCloser ) - if externChecksum, externStatus, err = c.tryExtern(id); err != nil { + if externChecksum, externStatus, err = c.tryExtern(ctx, id); err != nil { if c.msg.IsVerbose() { c.msg.Verbosef("extern %s: %v", reportName(ca, id), err) } diff --git a/internal/pkg/pkg_test.go b/internal/pkg/pkg_test.go index 1239bed3..d4e9e855 100644 --- a/internal/pkg/pkg_test.go +++ b/internal/pkg/pkg_test.go @@ -204,7 +204,7 @@ type stubExtern struct { status map[unique.Handle[pkg.ID]]string } -func (e stubExtern) Artifact(id unique.Handle[pkg.ID]) (*pkg.Checksum, error) { +func (e stubExtern) Artifact(_ context.Context, id unique.Handle[pkg.ID]) (*pkg.Checksum, error) { if checksum, ok := e.artifact[id]; ok { return &checksum, nil } @@ -219,7 +219,7 @@ func (e stubExtern) Checksum(checksum unique.Handle[pkg.Checksum]) pkg.Artifact return pkg.NewArchive(pkg.NewFile("", buf.Bytes())) } -func (e stubExtern) Status(id unique.Handle[pkg.ID]) (io.ReadCloser, error) { +func (e stubExtern) Status(_ *pkg.RContext, id unique.Handle[pkg.ID]) (io.ReadCloser, error) { if status, ok := e.status[id]; ok { return io.NopCloser(strings.NewReader(status)), nil }