prewarmHeads resolves the current HEAD commit of every configured module and registers it, so that a client sending a cached current-HEAD sha hits the commit map without a prior in-session GetCommits. Best-effort and idempotent (prewarmOnce): failures are logged and skipped; a later probeCommitID ca
()
| 910 | // no file fetch. Intended to run in a background goroutine launched from |
| 911 | // connect.New. |
| 912 | func (h *commitServiceHandler) prewarmHeads() { |
| 913 | h.prewarmOnce.Do(func() { |
| 914 | sources := h.api.repo.Repositories() |
| 915 | log := h.api.log.With(slog.String("component", "prewarm")) |
| 916 | log.LogAttrs(context.Background(), slog.LevelInfo, "prewarm starting", |
| 917 | slog.Int("sources", len(sources)), |
| 918 | slog.Duration("per_call_timeout", h.prewarmTimeout)) |
| 919 | var ok, fail int |
| 920 | for _, s := range sources { |
| 921 | owner, module := s.Owner(), s.RepoName() |
| 922 | if owner == "" || module == "" { |
| 923 | continue |
| 924 | } |
| 925 | ctx, cancel := context.WithTimeout(context.Background(), h.prewarmTimeout) |
| 926 | meta, err := s.GetMeta(ctx, "") // empty commit = HEAD |
| 927 | cancel() |
| 928 | if err != nil || meta.Commit == "" { |
| 929 | fail++ |
| 930 | log.LogAttrs(context.Background(), slog.LevelWarn, "prewarm source miss", |
| 931 | slog.String("owner", owner), slog.String("module", module), |
| 932 | slog.String("repo", module)) |
| 933 | continue |
| 934 | } |
| 935 | h.registerResolved(meta.Commit, owner, module) |
| 936 | ok++ |
| 937 | log.LogAttrs(context.Background(), slog.LevelInfo, "prewarm source resolved", |
| 938 | slog.String("owner", owner), slog.String("module", module), |
| 939 | slog.String("repo", module), slog.String("commit", meta.Commit)) |
| 940 | } |
| 941 | log.LogAttrs(context.Background(), slog.LevelInfo, "prewarm complete", |
| 942 | slog.Int("resolved", ok), slog.Int("failed", fail)) |
| 943 | }) |
| 944 | } |
| 945 | |
| 946 | // missCached reports whether sha was recently confirmed absent from every |
| 947 | // configured source (within ProbeNegativeTTL). Caller must NOT hold commitMu. |