#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.
#268 ("Performance and observability improvements based on /status diagnostics") is open against base
ci, notmain. Its observability half has been superseded by #231, but its performance half is still valuable and currently stranded:docValues=trueoncurie,types,taxa,clique_identifier_countcurie:/MONDO:.*/with a prefix-wildcard querycurie:MONDO\:*plus input sanitisation — the regex form walks the whole term dictionarycurie_lookup's Solrrowsfrom a hard-coded 1,000,000 to the number of input CURIEshttpx.AsyncClientvia FastAPI lifespan instead of one per requestbulk_lookupwith anasyncio.Semaphore(BULK_LOOKUP_CONCURRENCY), preserving input orderThese should be rebased onto
main(dropping the parts #231 already covers) and re-validated, ideally with the/status?full=truemetrics from #231 as before/after evidence.