chore(logrotate): make the default value show the separator it documents - #67
Merged
zebby76 merged 1 commit intoSep 4, 2026
Conversation
The splitting fix accepts both forms: a value containing ';' or a newline is split on it, anything else falls back to whitespace, which keeps every value that worked before working. The shipped default stayed on the whitespace form. That is the wrong thing to hand someone. The default is what gets copied and extended, and copying it to add a directive with an argument produces "compress copytruncate missingok notifempty maxage 7" which has no ';', takes the whitespace path, and renders "7" and "maxage" as two lines. The container now refuses to boot on that rather than rotating nothing in silence, so the failure is loud -- but the value it was copied from is what led there. The default is semicolon-separated now. Nothing about the parsing changes, and an operator already overriding it with the whitespace form is unaffected: default, untouched rotates, stanza unchanged default copied and extended, maxage 7 rotates, "maxage 7" intact whitespace override rotates, stanza unchanged The README row said "space-separated" and now says what the separator is, gives an example of a directive with an argument, and mentions that the rendered stanza is validated at startup.
zebby76
added a commit
that referenced
this pull request
Sep 4, 2026
…nts (#67) (#68) The splitting fix accepts both forms: a value containing ';' or a newline is split on it, anything else falls back to whitespace, which keeps every value that worked before working. The shipped default stayed on the whitespace form. That is the wrong thing to hand someone. The default is what gets copied and extended, and copying it to add a directive with an argument produces "compress copytruncate missingok notifempty maxage 7" which has no ';', takes the whitespace path, and renders "7" and "maxage" as two lines. The container now refuses to boot on that rather than rotating nothing in silence, so the failure is loud -- but the value it was copied from is what led there. The default is semicolon-separated now. Nothing about the parsing changes, and an operator already overriding it with the whitespace form is unaffected: default, untouched rotates, stanza unchanged default copied and extended, maxage 7 rotates, "maxage 7" intact whitespace override rotates, stanza unchanged The README row said "space-separated" and now says what the separator is, gives an example of a directive with an argument, and mentions that the rendered stanza is validated at startup.
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.
Follow-up to #58, spotted while reviewing what actually reaches production.
The splitting fix accepts both forms: a value containing
;or a newline is split on it, anythingelse falls back to whitespace — which keeps every value that worked before working. The shipped
default stayed on the whitespace form.
That is the wrong thing to hand someone. The default is what gets copied and extended, and copying
it to add a directive with an argument produces
which has no
;, takes the whitespace path, and renders7andmaxageas two lines. Since #58the container refuses to boot on that rather than rotating nothing in silence — so the failure is
loud — but the value it was copied from is what led there.
Change
The default is semicolon-separated. Nothing about the parsing changes:
LOGROTATE_DEFAULT_OPTIONSmaxage 7maxage 7intactThe README row said "space-separated". It now names the separator, gives an example of a directive
that takes an argument, and mentions that the rendered stanza is validated at startup.
Related, in the sibling image
base-nginx never received #58 at all —
70-logrotate.shthere still word-splits and sorts, with novalidation. Its twin is going up separately.