Repository navigation
fix(oracle-gaps): supervise the check on win32; log each CLI run in the e2e driver - #79
KyleAMathews wants to merge 3 commits into
Conversation
… the e2e driver Test-side only: GAP_RUN_LOG names a file the driver appends one line to per CLI run (runCli and runClisAtOnce): its duration, status, signal, and whether the driver's 300 s kill timeout ended it. Measures where the daemon history's time goes on Windows (about 900 s sits outside any finished check). Diagnostic job daemon-history-runs prints the summary; remove before merge. Co-authored-by: Isaac <no-reply@databricks.com>
|
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
…ed path On win32 the check runs as a supervised child too: the child is not detached, the supervisor watches its exit and writes the done line, and a stop ends the child's tree with taskkill /T /F (signalTree). An out-of-memory abort or a crash on win32 therefore ends with one done error line on both streams and exit 3, as on POSIX (it wrote none before: a silent failure). The in-process unsupervised path (its stop line, its startLog, and the ORACLE_GAPS_TEST_STOP handler outside the supervisor) is removed, since every check is supervised now. The abort witness is the CLI's own hook, ORACLE_GAPS_TEST_ABORT_AT=check, which aborts the check's process after the session has begun (where a V8 out-of-memory abort would strike) instead of a test's kill in a worker thread: process.abort() on win32, a SIGABRT to itself on POSIX (process.abort prints a native backtrace, which is no line of the stream). The fixture's test that killed its own process is removed from the model. win32's done line names the exit code, since no signal can end a win32 process. Law: a check run ends with one done line on both streams and an exit code the supervisor names (register P10; #74). Reach: the 'every outcome class' history's abort run, on both platforms. RED: the test-side commit's Windows run (2b11e2b), where an abort gives no done line. GREEN (POSIX, local): 'every outcome class' and 'an edit sequence through the daemon' pass (fixed seed 20261105). Mutant: no supervisor on win32 (the abort run has no done line). Limits: taskkill /T reaches the tree only while the child lives (a grandchild orphaned earlier is not reached; a Job Object would be the fix); the win32 abort line names the exit code, not a signal. Co-authored-by: Isaac <no-reply@databricks.com>
commit: |
…n win32 The first win32 run of the supervised check (run 43612786521) failed the greppable-stream law: the note named the log as out\stream.log, where the Windows paths rule spells it out/stream.log. Co-authored-by: Isaac <no-reply@databricks.com>
Draft. Stacked on #57 (
feat/gap-cli-stream-log); retarget tomainonce #57 merges.Status
GAP_RUN_LOG) in the end-to-end driver, and a temporarydaemon-history-runsCI job that prints its summary. This commit changes no production behavior; its Windows run is the RED baseline on feat(oracle-gaps): write the stream to <out>/stream.log and name it in the first line #57's behavior.taskkill /T /Ffor stops,ORACLE_GAPS_TEST_ABORT_ATfor the abort witness, and removal of the in-process unsupervised path) is the next commit. This body is updated when it lands.Evidence (to be completed)
done errorline on both streams and exits 3, as on POSIX (register P10; Windows: an unsupervised gap run can leave child processes running (no process tree kill) #74; the 2026-11-13 Windows fix(windows): Windows CI for the oracle framework and gap CLI, and the path rule #58 entry (e)).taskkill /T(a Job Object would be the fix); the win32 abort prints the exit code, not a signal name.