Skip to content

Commit 56ecc13

Browse files
TerryHoweclaude
andcommitted
refactor(remote): drop ReferrerCapability wrapper for atomic state field
Remove referrers_state.go and its exported ReferrerCapability / ReferrerMergePool types in favor of the leaner upstream shape: a plain atomic int32 referrersState field and an inline syncutil.Pool[syncutil.Merge[referrerChange]] merge pool. Keeps the unexported referrersState iota (unknown/supported/unsupported) as the capability primitive and preserves the void, first-wins SetReferrersCapability. ErrReferrersCapabilityAlreadySet is retained to match the v2 public surface. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Terry Howe <terrylhowe@gmail.com>
1 parent c72b045 commit 56ecc13

5 files changed

Lines changed: 17 additions & 578 deletions

File tree

registry/remote/builder_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -614,7 +614,7 @@ func TestNewRepositoryWithProperties_ReferrersAPISupported(t *testing.T) {
614614

615615
// Conflicting set is silently ignored; capability should remain supported.
616616
repo.SetReferrersCapability(false)
617-
if !repo.getReferrersCapability().IsSupported() {
617+
if repo.loadReferrersState() != referrersStateSupported {
618618
t.Error("conflicting SetReferrersCapability(false) should be ignored when already set to supported")
619619
}
620620
}
@@ -637,7 +637,7 @@ func TestNewRepositoryWithProperties_ReferrersAPIUnsupported(t *testing.T) {
637637

638638
// Conflicting set is silently ignored; capability should remain unsupported.
639639
repo.SetReferrersCapability(true)
640-
if !repo.getReferrersCapability().IsUnsupported() {
640+
if repo.loadReferrersState() != referrersStateUnsupported {
641641
t.Error("conflicting SetReferrersCapability(true) should be ignored when already set to unsupported")
642642
}
643643
}

registry/remote/referrers.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ type referrerChange struct {
6060
}
6161

6262
var (
63-
// ErrReferrersCapabilityAlreadySet is returned by ReferrerCapability.SetSupported()
64-
// and ReferrerCapability.SetUnsupported() when the capability has already been set
65-
// to a conflicting value.
63+
// ErrReferrersCapabilityAlreadySet is reserved to signal that the referrers
64+
// capability of a repository has already been set to a conflicting value.
65+
// The capability is fixed once set; the first value wins.
6666
ErrReferrersCapabilityAlreadySet = errors.New("referrers capability cannot be changed once set")
6767

6868
// errNoReferrerUpdate is returned by applyReferrerChanges() when there

registry/remote/referrers_state.go

Lines changed: 0 additions & 145 deletions
This file was deleted.

0 commit comments

Comments
 (0)