A container registry that uses the AT Protocol for manifest storage and S3 for blob storage.

don't run ensure in background in case of first push

evan.jarrett.net e97e51a5 045aeb2d

verified
+3 -4
+3 -4
pkg/appview/middleware/registry.go
··· 293 293 // Auto-reconcile crew membership on first push/pull 294 294 // This ensures users can push immediately after docker login without web sign-in 295 295 // EnsureCrewMembership is best-effort and logs errors without failing the request 296 - // Run in background to avoid blocking registry operations if hold is offline 296 + // Run synchronously to ensure crew record exists before write access checks 297 + // (returns quickly if already a member - hold returns 200/201) 297 298 if holdDID != "" && nr.refresher != nil { 298 299 slog.Debug("Auto-reconciling crew membership", "component", "registry/middleware", "did", did, "hold_did", holdDID) 299 300 client := atproto.NewClient(pdsEndpoint, did, "") 300 - go func(ctx context.Context, client *atproto.Client, refresher *oauth.Refresher, holdDID string) { 301 - storage.EnsureCrewMembership(ctx, client, refresher, holdDID) 302 - }(ctx, client, nr.refresher, holdDID) 301 + storage.EnsureCrewMembership(ctx, client, nr.refresher, holdDID) 303 302 } 304 303 305 304 // Get service token for hold authentication (only if authenticated)