Skip to content

Rebase #268's Solr performance fixes onto main #284

Description

@gaurav

#268 ("Performance and observability improvements based on /status diagnostics") is open against base ci, not main. Its observability half has been superseded by #231, but its performance half is still valuable and currently stranded:

  • docValues=true on curie, types, taxa, clique_identifier_count
  • Force-merge to <=8 segments after loading (the index is read-only afterwards; production was running with 57 segments)
  • Replace the regex prefix filter curie:/MONDO:.*/ with a prefix-wildcard query curie:MONDO\:* plus input sanitisation — the regex form walks the whole term dictionary
  • Bound curie_lookup's Solr rows from a hard-coded 1,000,000 to the number of input CURIEs
  • Module-level shared httpx.AsyncClient via FastAPI lifespan instead of one per request
  • Parallelise bulk_lookup with an asyncio.Semaphore (BULK_LOOKUP_CONCURRENCY), preserving input order

These should be rebased onto main (dropping the parts #231 already covers) and re-validated, ideally with the /status?full=true metrics from #231 as before/after evidence.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions