Commit c285e94
committed
fix(parity): bound the external validators so a stall fails instead of hanging
A Pipeline Parity hl7 (ips) job sat for 30+ minutes on a single line of output and
had to be cancelled by hand. Three compounding gaps, none of them in the
validators themselves:
1. spawnAndCapture settled only on the child's close/error. The validators print
nothing until they finish, so a subprocess blocked on the network was
indistinguishable from one doing work, and the promise never settled. It now
kills the child after a wall-clock bound and rejects with the byte count and
stderr tail, so the failure names itself. Override with
PARITY_VALIDATOR_TIMEOUT_MS; default 15 minutes, against single-digit minutes
for a whole package.
2. No job in _parity-tests.yml declared timeout-minutes, so each inherited
GitHub's 6-hour default. Without the manual cancel that job would have burned
six hours. internal gets 45 (it generates what the others reuse), firely and
hl7 get 30.
3. downloadValidator handled only 'error' on its release download, so a stalled
socket waited forever too. Now setTimeout + destroy at 120s.
Verified by reproducing the failure rather than reasoning about it: runHL7Batch
pointed at a stand-in batch-validate.js that sleeps forever and prints nothing —
the real shape of the stuck job — rejects after exactly the configured bound with
"produced no result within 3s and was killed. Captured 0 bytes of stdout".
Not the cause, though both were suspects: fhirpath 5.1.0 introduced a one-hour
pending-request timeout, but Phase 3 runs the external HL7 Java validator and
fhirpath only drives our internal ones. And the job logged SKIP_GENERATION with
resources loaded from a manifest, so no emitter ran in it at all.
Still open, seen in the same log and not addressed here: while validating ips, the
exclusion line listed 27 classes belonging to other packages (AUCore*, ISiK*,
KBV*, USCoreVitalSigns*). Either a global summary printed once or
getExcludedFilePaths is not filtered per package.1 parent e9855bf commit c285e94
3 files changed
Lines changed: 50 additions & 4 deletions
File tree
- .github/workflows
- scripts/hl7-validator
- src/test/parity
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
113 | 113 | | |
114 | 114 | | |
115 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
116 | 119 | | |
117 | 120 | | |
118 | 121 | | |
| |||
239 | 242 | | |
240 | 243 | | |
241 | 244 | | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
242 | 248 | | |
243 | 249 | | |
244 | 250 | | |
| |||
368 | 374 | | |
369 | 375 | | |
370 | 376 | | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
371 | 382 | | |
372 | 383 | | |
373 | 384 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
118 | 122 | | |
119 | | - | |
| 123 | + | |
120 | 124 | | |
121 | 125 | | |
122 | 126 | | |
| |||
135 | 139 | | |
136 | 140 | | |
137 | 141 | | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
138 | 146 | | |
139 | 147 | | |
140 | 148 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
65 | 65 | | |
66 | 66 | | |
67 | 67 | | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
68 | 81 | | |
69 | 82 | | |
70 | 83 | | |
| |||
78 | 91 | | |
79 | 92 | | |
80 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
81 | 108 | | |
82 | 109 | | |
83 | | - | |
| 110 | + | |
84 | 111 | | |
85 | 112 | | |
86 | 113 | | |
87 | 114 | | |
88 | | - | |
| 115 | + | |
89 | 116 | | |
90 | 117 | | |
91 | | - | |
| 118 | + | |
92 | 119 | | |
93 | 120 | | |
94 | 121 | | |
| |||
0 commit comments