Releases: xjoker/delamain
Releases · xjoker/delamain
Release list
v20260722.3
20260722.3: fix cold-warmup worker collapse caused by the smaller heap 20260722.2 derived the jadx heap from the container (49 GB -> 9.8 GB on production). computeWarmupWorkers sizes Phase-1 parallelism from that heap, and its base-footprint constant still assumed the heap-resident trigram index: base = 1024 + 222779/1000 * 80 = 18784 MB > 9832 MB heap -> usable < 0 -> byHeap = 1 -> ONE decompile worker for ~220k classes Production never hit it (it FAST_RESTOREs from the persisted index volume and skips Phase-1 entirely), but a newly loaded APK, or anyone pulling the published image, would cold-warm single-threaded. Recalibrated against measurement instead of the old era's guesswork: * base 80 MB/1k -> 20 MB/1k. Production /memory-diagnostics reports a clean post-GC steady state of 4466 MB for 237931 classes (~19 MB/1k); the content index now lives in an mmap'd shard on disk and Phase-1 writes through to the CodeStore before unloading. * per-worker 1536 MB -> 384 MB (MemoryConfig.DEFAULT_PER_WORKER_HEAP_MB). The 1.5 GB figure was paying for in-heap trigram growth during Phase-1, which no longer happens; a worker now holds one class's decompile working set. Still hot-updatable via POST /memory-config, with isHighMemoryPressure as the net. * Added the CPU dimension the formula never had: max(2, cores/4) instead of cores-2. Warmup runs while the server answers queries, jadx parallelises internally on top of these workers, and the host is shared -- authorising 46 workers on a 48-core box is what made a cold warmup saturate the machine. DELAMAIN_WARMUP_DECOMPILE_WORKERS still overrides for a known-idle machine. Net on the production shape (222779 classes, 9832 MB heap, 48 cores): 1 -> 6 workers, capped at 12 by the CPU term. computeWarmupWorkers is now a pure function of (classCount, heapMB, cores, safetyMargin, perWorkerHeapMB) so the sizing is directly testable; 6 new tests pin the regression, the base against the measured steady state, the CPU cap, and the small-machine floors. Tests: 170 Java (only the pre-existing order-dependent ClassCacheManagerInvalidateCodeStoreTest failure), 82 gateway. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>