cli: dedup mirror-active filter and cell-fallback logging · Entire

cli: dedup mirror-active filter and cell-fallback logging

21ff7f2·

Soph·2w ago·3 files·+33 added/-21 removed

Cleanups from a simplify pass over the activity/recap routing:

- Extract isActiveMirror(coreapi.Mirror) — the archived + failed/suspended
placement filter that firstActiveRepoID and distinctActiveClusterHosts
each spelled out — so "can this placement serve the repo" has one home;
a new non-serving status now only needs updating there.
- Extract logCellClientFallback for the two cell→data-API call sites,
replacing the duplicated inverse-condition debug log. It also drops the
noise for the expected not-logged-in case (not just no-cell-yet), and
removes the awkward if/else-with-empty-branch in newRecapClient.

No behaviour change.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

Sessions

8d8cf40beadeView transcript

Changes

3

27 unmodified lines

func runAuthenticatedActivityAPI(ctx context.Context, errW io.Writer, insecureHTTP bool, fn func(context.Context, *api.Client) error) error {
    client, err := auth.NewEntireAPICellClient(ctx, insecureHTTP, nil)
    if err != nil {
        if !errors.Is(err, auth.ErrNoCellForJurisdiction) {
            logging.Debug(ctx, "activity/recap: entire-api cell client unavailable, using data API", "error", err.Error())
        }
        logCellClientFallback(ctx, err)
        return runAuthenticatedDataAPI(ctx, errW, insecureHTTP, fn)
    }
    return fn(ctx, client)
}

// logCellClientFallback records, at debug, that an activity/recap command fell
// back from the entire-api cell to the data API. The expected cases — the
// region has no cell yet, or the caller isn't logged in — aren't logged: they
// are normal during rollout and on first use, not diagnosable failures.
func logCellClientFallback(ctx context.Context, err error) {
    if errors.Is(err, auth.ErrNoCellForJurisdiction) || errors.Is(err, auth.ErrNotLoggedIn) {
        return
    }
    logging.Debug(ctx, "activity/recap: entire-api cell client unavailable, using data API", "error", err.Error())
}

// forgeToMirrorProvider maps a gitremote forge identifier (e.g. "gh") to the
// upstream provider the control plane records mirrors under (e.g. "github").
// entire-api routing only supports GitHub mirrors today.
// and failed/suspended placements are skipped — they can't answer for the repo.
func firstActiveRepoID(mirrors []coreapi.Mirror) string {
    for i := range mirrors {
        if mirrors[i].IsArchived.Or(false) {
            continue
        }
        if st := mirrors[i].Status.Or(coreapi.MirrorStatusReady); st == coreapi.MirrorStatusFailed || st == coreapi.MirrorStatusSuspended {
            if !isActiveMirror(mirrors[i]) {
                continue
            }
            if id := strings.TrimSpace(mirrors[i].MirrorId); id != "" {
""

Mcmd/entire/cli/entireapi_client.go+13/-7

121 unmodified lines

// isActiveMirror reports whether a mirror placement can currently serve the
// repo: not archived, and not in a failed/suspended clone state. An unset status
// is treated as active (older data). Shared by every caller that must ignore
// placements a cell can't answer for.
func isActiveMirror(m coreapi.Mirror) bool {
    if m.IsArchived.Or(false) {
        return false
    }
    st := m.Status.Or(coreapi.MirrorStatusReady)
    return st != coreapi.MirrorStatusFailed && st != coreapi.MirrorStatusSuspended
}

// distinctActiveClusterHosts returns the set of cluster hosts a repo is actively
// serviced on: excluding archived placements and unhealthy ones (failed /
// suspended clone status), since those cells can't answer experts for the repo.
func distinctActiveClusterHosts(mirrors []coreapi.Mirror) []string {
    seen := make(map[string]string, len(mirrors))
    for _, m := range mirrors {
        if m.IsArchived.Or(false) {
            continue
        }
        // Treat unset status as active (older data); only failed/suspended
        // placements can't serve experts for the repo.
        if st := m.Status.Or(coreapi.MirrorStatusReady); st == coreapi.MirrorStatusFailed || st == coreapi.MirrorStatusSuspended {
            if !isActiveMirror(m) {
                continue
            }
        host := strings.TrimSpace(m.ClusterHost)
}
Mcmd/entire/cli/experts_cell_target.go+13/-6

17 unmodified lines

// the caller isn't logged in — recap tolerates the latter, rendering and letting
// the server answer 401 rather than hard-failing. Every other failure surfaces.
func newRecapClient(ctx context.Context, insecureHTTP bool) (*api.Client, string, error) {
    if client, err := auth.NewEntireAPICellClient(ctx, insecureHTTP, nil); err == nil {
        return client, currentRepoID(ctx), nil
    } else if !errors.Is(err, auth.ErrNoCellForJurisdiction) {
        // Best-effort upgrade: fall back to the data API on any cell failure. Its
        // path below tolerates a missing login (renders, lets the server 401), so
        // the not-logged-in case keeps working; log non-obvious failures.
        logging.Debug(ctx, "recap: entire-api cell client unavailable, using data API", "error", err.Error())
        // Best-effort upgrade: on any cell failure fall back to the data API path
        // below, which tolerates a missing login (renders, lets the server 401) so
        // the not-logged-in case keeps working.
        cellClient, cellErr := auth.NewEntireAPICellClient(ctx, insecureHTTP, nil)
        if cellErr == nil {
            return cellClient, currentRepoID(ctx), nil
        }
        logCellClientFallback(ctx, cellErr)
Mcmd/entire/cli/recap.go+7/-8