mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-01 06:24:41 +01:00
fix(flaky): 2026-10-30 flaky pass — two paid detector gaps, a guard-PTY dispatch delta, five free races, the QA deadline receipt ack and a Chromium WSAENOBUFS backport (GSTA-178)
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
11c17d466a
commit
1a0be11bf4
19 files changed
+190
-13
No files matched your search
+12
-1
@@ -224,6 +224,9 @@ export async function runQaWindowsWorker(args: string[], emit: Emit, entrypoint:
|
||||
worker.on('message', (message: any) => {
|
||||
if (message?.type === messageType && ['stdout', 'stderr'].includes(message.stream)
|
||||
&& message.receipt && typeof message.receipt === 'object') emit(message.stream, message.receipt, message.completion);
|
||||
if (message?.type === messageType && Number.isSafeInteger(message.seq)) {
|
||||
try { worker.send({ type: `${messageType}-ack`, seq: message.seq }, () => {}); } catch {}
|
||||
}
|
||||
});
|
||||
worker.once('error', () => {
|
||||
process.off('exit', kill);
|
||||
@@ -244,6 +247,10 @@ export async function withQaReceiptOutput(receiptWorker: boolean, messageType: s
|
||||
stderr: fs.createWriteStream('', { fd: 2, autoClose: false }),
|
||||
};
|
||||
const writes: Promise<void>[] = [];
|
||||
const acks = new Map<number, () => void>();
|
||||
if (receiptWorker) process.on('message', (message: any) => {
|
||||
if (message?.type === `${messageType}-ack`) acks.get(message.seq)?.();
|
||||
});
|
||||
let writeFailed = false;
|
||||
const failed = () => { writeFailed = true; };
|
||||
output.stdout.on('error', failed);
|
||||
@@ -252,7 +259,11 @@ export async function withQaReceiptOutput(receiptWorker: boolean, messageType: s
|
||||
writes.push(new Promise<void>(resolve => {
|
||||
const done = (error?: Error | null) => { if (error) writeFailed = true; resolve(); };
|
||||
try {
|
||||
if (receiptWorker) process.send!({ type: messageType, stream, receipt, ...(completion ? { completion } : {}) }, done);
|
||||
if (receiptWorker) {
|
||||
const seq = writes.length;
|
||||
acks.set(seq, () => { acks.delete(seq); resolve(); });
|
||||
process.send!({ type: messageType, seq, stream, receipt, ...(completion ? { completion } : {}) }, (error?: Error | null) => { if (error) done(error); });
|
||||
}
|
||||
else output[stream].write(format(receipt), done);
|
||||
} catch { writeFailed = true; resolve(); }
|
||||
}));
|
||||
|
||||
Reference in new issue
Block a user