Fix plain text log output dropping trailing partial lines - #27233
Open
thswlsqls wants to merge 1 commit into
Open
Fix plain text log output dropping trailing partial lines#27233thswlsqls wants to merge 1 commit into
thswlsqls wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #26739
Follow-up to #26871
AnnotatedLargeText.writeLogTo(long, OutputStream)neither flushes itsPlainTextConsoleOutputStreamline buffer nor back-tracks the returned offset, so a trailing partial line is withheld but still counted as delivered: a client resuming at that offset never sees it. #26871 fixed both in the siblingwriteHtmlTo(long, Writer), addinglineBufferSize()for it, but not here.Reached by tailing a running build:
logText/progressiveTextwithAccept: multipart/form-datarunsdoProgressTextStreaming->writeLogTo(long, Writer)(non-HTML) ->writeLogTo(start, new WriterOutputStream(...))-> here, and that streaming branch bulk-writes to EOF instead of stopping at a line boundary, so the partial line stays buffered. BufferedprogressiveTextsetsdelegateToWriteLogTo=falseand never reaches this method;Run/_api.jelly(lines 48, 61) documents both.Testing done
No Jenkins instance available. Reviewer steps: run a build emitting text without a trailing newline (
sh 'printf partial'), then pollcurl -H 'Accept: multipart/form-data' "$JENKINS/job/$NAME/$N/logText/progressiveText?start=0"while it runs.AnnotatedLargeTextPartialLineTest: 3 of 5 cases fail without the fix; all assert emitted bytes and the returned offset.mvn -pl core -am test -Dtest='TaskActionTest,AnnotatedLargeTextPartialLineTest,LineTransformationOutputStreamTest,UrlAnnotatorTest'gaveTests run: 12, Failures: 0, Errors: 0, Skipped: 0.mvn spotless:check -pl corepassed.Screenshots (UI changes only)
N/A, no UI change.
Before
After
Proposed changelog entries
Proposed changelog category
/label bug
Proposed upgrade guidelines
N/A
Submitter checklist
@Restrictedor have@since TODOJavadocs, as appropriate.@Deprecated(since = "TODO")or@Deprecated(forRemoval = true, since = "TODO"), if applicable.evalto ease future introduction of Content Security Policy (CSP) directives (see documentation).Desired reviewers
@mention
Before the changes are marked as
ready-for-merge:Maintainer checklist
upgrade-guide-neededlabel is set and there is a Proposed upgrade guidelines section in the pull request title (see example).lts-candidateto be considered.