Repository navigation
Reopen seiload's log follow and read the pod before draining it - #617
Conversation
|
I'll fix CI failures and address comments from users with write access that start with 'Devin'.
|
PR SummaryLow Risk Overview
Reviewed by Cursor Bugbot for commit 055bb33. Bugbot is set up for automated code reviews on this repo. Configure here. |
There was a problem hiding this comment.
Moves the follower drain in assertSeiloadRun so it runs after the pod and tail have been read, and reopens a followed seiload log stream until every container has terminated. Nothing blocks: the follower's state is only read after done closes, each loop path ends on exit, cancel or drain timeout, and repeated lines are harmless because summaryCounts takes the first match. The only reader output, codex, reported nothing, which matches my reading. No Go toolchain was available, so this was not built or vetted.
1 nit, not posted on the code
test/integration/seiload_test.go:442—summary.lines()is now the only thing that cancels the follower, andassertSeiloadRunreturns earlier than this whenjobPodfails. On that path the follower is never cancelled. With the new reopen loop, a missing pod makesseiloadExitedfalse andfollowPodLogretry, so the goroutine polls the API every 5s until the scenario ctx is cancelled, which can be several minutes later throughassertChainLive. Adefer summary.cancel()inrunSeiloadwould close this.
seidroid review · decision approve · session 171db4d6cddf431ab32f8c73536e8213 · turn resp_claude_c0e732408bdae79b91232f4029b10b9a · item 0189a424ec86543dbe1334280e6ec9b8
Findings: 0 blocking | 0 non-blocking | 0 posted inline
This picks up the two seidroid suggestions on #616, which merged before they landed. First,
assertSeiloadRunused to receive the follower's lines as an argument, sorunSeiloaddrained the follower before the pod was read. If the stream had not ended yet, that drain could hold things up for as long assummaryStreamDrain(30s) while Karpenter is free to reclaim the finished pod.assertSeiloadRunnow takes the*summaryFollowerand callslines()only oncejobPodand the tail read have happened.Second, a followed stream that ended before seiload exited, such as a reset connection partway through a saturation run, stopped the follower for good and put the check back on the tail read.
followSummarynow reopens the stream afterlogStreamRetryuntilseiloadExitedsees every container terminated. A reopened stream re-reads the current log file, but the repeated lines do no harm becausesummaryCountstakes the first match.