MCPcopy Create free account
hub / github.com/easyp-tech/server / prewarmHeads

Method prewarmHeads

internal/connect/commits.go:912–944  ·  view source on GitHub ↗

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

()

Source from the content-addressed store, hash-verified

910// no file fetch. Intended to run in a background goroutine launched from
911// connect.New.
912func (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.

Callers 2

NewWithConfigFunction · 0.95

Calls 6

registerResolvedMethod · 0.95
RepositoriesMethod · 0.65
OwnerMethod · 0.65
RepoNameMethod · 0.65
GetMetaMethod · 0.65
StringMethod · 0.45

Tested by 1