Monorepo for Tangled tangled.org

knotmirror: performant language indexer #3796

Merged boltless.me
targeting master
Merged opened by and assigned to boltless.me
targeting master

git.listLanguages has been one of the method that fails most often. Opening multiple git repos simultaneously can eaily cause OOM and language indexing itself usually takes super long.

So several changes:

  • use gitea.CatFileBatch instead of go-git to avoid OOM
  • skip files larger than 16KB
  • sync HEAD ref language stats in knotmirror db
  • cache language stats info by commits (30d TTL)

When syncing HEAD ref language stats, we do indexing on background. KnotMirror maintains internal "repo_stats_update" queue and right after doResync is done, enqueue the language stat indexing job so we can pre-index the language stats of HEAD ref.

It's ok to spam this queue because all later events will be eventually ignored as we are resolving HEAD lazily.

Signed-off-by: Seongmin Lee git@boltless.me

This pull request has no versions submitted yet.