You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
pipeline: compile shared C stubs and LD/UL loaders once per sweep, not per case (measure first) #4905
Repeated work per equivalence case (main 7e9856e):
tests/tools/equivalence.py ~262: cobc -x of LD
.cbl / UL
.cbl for every indexed dataset of every case; their source depends only on (dd, reclen, keys) -> memoize binaries by source hash.
Shared C stubs recompiled inside every case's cobc: equivalence.py ~268-277 (ggabend, ggfault, ggdisplay, LE models), equivalence_cics.py ~2028-2117 (ggcics.c, ggsql.c, ggsqlrun.c), equivalence_call.py ~184-189 -> precompile each stub set to .o once per sweep, keyed by stub hash.
equivalence_java.py ~558: mvn -q -B test without -o (cics_crucible.py ~416 supports it) -> offline once ~/.m2 is primed.
Measure first: time one CICS case and one batch case (det_port run) split by step before changing anything; do the change only where it pays. Acceptance: identical verdicts (det sweep on a sample of cases incl. one Db2 and one CICS), before/after per-case time, cache keyed so a stub change invalidates it.
Evidence: pipeline audit 2026-10-11 (four read-only scouts; full reports in the orchestrator handoffs, pipeline-audit-2026-10-11/A-D). Precedent: #4899 (unicode gauntlet nested pools: 182 s -> 39 s, peak load 82.5 -> 10.5, byte-identical output), #4882 (heavy-run.sh GG_JOB_CORES), #4862/#4865 (macOS hang; pytest --timeout).
Measured first, as the issue asked (quiet box, det_port run via heavy-run.sh). None of the three caches pays, so no code was changed:
Batch with indexed files, carddemo-readacct (65 s): each docker step takes 0.72 s, of which the LD+UL loader compiles are 0.14 s and the ggdisplay gcc 0.04 s. Maven takes 7.4 s on the first run plus 3.8 s on each of 12 fault runs, about 53 s: over 80% of the case.
CICS, carddemo-acctview (24 s): docker 0.76 s, Maven 12.6 s.
Db2 CICS, cbsa-bnk1cac: the whole-task cobc takes 0.72 s with stubs inline vs 0.53 s with precompiled stub objects, so the stubs cost about 0.2 s.
mvn -o with ~/.m2 primed: 0.83 s either way.
So stub, loader and offline caching would save under 0.3 s on cases that take 15–65 s. That's not worth the cache-invalidation machinery. All 5 cases run proved.
The real lever is Maven + Spring start-up per fault run. _run_direct in equivalence_java.py already skips Maven but is only used with --reuse; filed separately. Closing this one with the measurement as its answer.
Activity
squid-protocol commentedon Oct 11, 2026
Measured first, as the issue asked (quiet box,
det_port runvia heavy-run.sh). None of the three caches pays, so no code was changed:mvn -owith ~/.m2 primed: 0.83 s either way.So stub, loader and offline caching would save under 0.3 s on cases that take 15–65 s. That's not worth the cache-invalidation machinery. All 5 cases run proved.
The real lever is Maven + Spring start-up per fault run.
_run_directinequivalence_java.pyalready skips Maven but is only used with--reuse; filed separately. Closing this one with the measurement as its answer.