FEATURE: add quick content releases - #61
Open
t-heuser wants to merge 10 commits into
Open
Conversation
t-heuser
force-pushed
the
feature/enable-fast-content-releases
branch
3 times, most recently
from
August 17, 2026 12:28
c559160 to
6011cda
Compare
t-heuser
force-pushed
the
feature/enable-fast-content-releases
branch
from
August 17, 2026 12:30
6011cda to
553e782
Compare
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.
Quick content releases: publish single documents without re-rendering the whole site
Rendering is 92% of a content release — measured on an 18 000-document installation, 2 183 s out of 2 384 s — and
almost all of it produces a release that is identical to the previous one everywhere except the page somebody just
fixed.
This adds a second pipeline for that case.
do_quick_content_releasecopies the release which is currently live(server-side
COPY, so nothing travels over the wire), enumerates only the documents you name, and lets the ordinaryorchestrator render those into the copy. From the enumeration onwards nothing changes: validation, transfer and switch
behave as they always do, and what goes live is a complete, ordinary content release rather than a patch. On the same
installation a quick release renders in 10 s instead of 36 minutes.
It comes with the pause switch it needs to be useful: automatic releases can be held back from the Content Store
module while a fix is prepared, editors see a warning in the content module telling them their changes are not going
live yet, and Publish All keeps working throughout. Pause, resume and quick publish sit behind a new
Flowpack.DecoupledContentStore:ReleaseControlprivilege target, separate from the module privilege.Two things installations with custom release keys need to know: which keys a quick release carries over is
configuration (
copyOnQuickRelease, defaulting tofalse), and validators can scope themselves to the changed URLsthrough
QuickPublish\ContentReleaseScope— which the package's owncontentReleaseValidation:validatehad to do, since a quick release deliberately enumerates a handful of documents and would otherwise trip its 70% threshold every time.Nothing changes for an existing installation which does not add the pipeline: the flag defaults to
false, thepause defaults to off, and Redis 6.2 is required only by the copy command itself, which checks the server version
before it does anything. No upgrade guide.
Full documentation in the README under Quick Content Releases; the design, the measurements and the trade-offs are in
Documentation/Concepts/QuickContentReleases.md.