internal/pkg: expose measured reader to extern status
Test / Create distribution (push) Successful in 59s
Test / Sandbox (push) Successful in 2m50s
Test / ShareFS (push) Successful in 3m55s
Test / Hakurei (push) Successful in 4m3s
Test / Sandbox (race detector) (push) Successful in 5m45s
Test / Hakurei (race detector) (push) Successful in 6m40s
Test / Flake checks (push) Successful in 1m12s

This is always required by the implementation.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2026-06-07 16:10:03 +09:00
parent b18ecf5832
commit 22e508fe17
2 changed files with 8 additions and 8 deletions
+6 -6
View File
@@ -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)
}
+2 -2
View File
@@ -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
}