Class DiffExGeneWarmupService
/datasets/analyses/differential/results/genes/{id} (in
DatasetsWebService) calls
DifferentialExpressionResultService.findByGeneAndExperimentAnalyzedIds(Gene, boolean, boolean, Collection, boolean, java.util.Map, java.util.Map, java.util.Map, double, boolean).
Cold-cache latency is ~4 s; warm latency ~0.55 s (round-3 perf probe, see
DEA_FINDBYGENE_COLDCACHE_RECCE.md). The gap is InnoDB-page and
Hibernate query-cache cold-start, not a plan or index problem. This service
re-runs the call for a seed list of high-traffic genes on a fixed cadence so
curator-facing requests land on a warm buffer pool.
The seed list and scheduling cadence are config-overridable
(gemma.diffex.warmup.*). The discarded result intentionally streams
through the same DAO path the endpoint uses; we are paying the I/O so a user
doesn't have to.
- Author:
- pavlidis-lab (perf round-3, Strategy A)
-
Constructor Summary
Constructors -
Method Summary
-
Constructor Details
-
DiffExGeneWarmupService
public DiffExGeneWarmupService()
-
-
Method Details
-
warmTopGenes
@Scheduled(initialDelayString="${gemma.diffex.warmup.initialDelay:300000}", fixedDelayString="${gemma.diffex.warmup.fixedDelay:21600000}") public void warmTopGenes()Trigger one warm-up pass.Initial delay 5 minutes (avoid boot tax); then re-run every 6 hours because InnoDB pages do cycle out of the buffer pool under load. Schedule values are config-driven so ops can tune without a redeploy.
-