Repository navigation
feat(core): wire journal backfill and audit cleanup as system changes - #985
Open
davidfrigolet wants to merge 5 commits into
Open
davidfrigolet wants to merge 5 commits into
davidfrigolet wants to merge 5 commits into
Conversation
Contributes the journal-backfill and audit-cleanup system changes unconditionally from core's annotation processor (CoreSystemChangeProvider), ordered after the Mongock importer (00100 < 00200 < 00300), resolved against the reserved audit-store target-system alias. - CoreSystemChangeProvider (flamingock-processor): builds both CodePreviewChange entries via fully-qualified string names rather than class literals, keeping flamingock-processor free of a compile dependency on flamingock-core - that dependency would otherwise leak onto every consuming project's annotation-processor classpath. - CoreSystemChangeFilter (flamingock-core): excludes both changes from the runtime pipeline while JOURNAL_EVENTS is disabled. Registration happens at compile time, in a different process from where the runtime feature flag lives, so gating has to happen here instead - and exclusion (not letting the change run and throw) matters because the flag is off by default, and every application reaching that throw would turn an internal, not-yet-released flag into a hard startup failure. - FlamingockMetadataMerger: fixes a prune bug that wrongly dropped both system changes in any module whose own compile classpath lacks flamingock-core (common in multi-module projects where one module declares changes and another assembles the runner) - their source class was never resolvable from that module, so the deletion-prune step treated them as deleted on every round. - JournalBackfillChange: routes its initial history read through the same per-stage persistence cache used for every other lookup, fixing the inefficiency flagged on PR #982's review (a second, independently-seeded persistence instance for the same stage). Known follow-up, intentionally not included here: a journal-sequencer collision when Mongock history import and JOURNAL_EVENTS are both exercised in the same run (DynamoDBImporterJournalTest). Root-caused but unresolved - needs a design decision between re-reading the sequence on every write, sharing one sequencer instance per stream per stage run, or having backfill check for an existing journal event before copying.
davidfrigolet
marked this pull request as draft
October 26, 2026 19:10
… and 'origin/fix/mongock-history-appender' into feat/wire-audit-system-changes
davidfrigolet
marked this pull request as ready for review
October 28, 2026 09:47
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.
Summary
JournalBackfillChangeandAuditCleanupChangeunconditionally from core's annotation processor (CoreSystemChangeProvider), ordered after the Mongock importer (00100<00200<00300), resolved against the reserved audit-store target-system alias.CoreSystemChangeFilterto exclude both changes from the runtime pipeline whileJOURNAL_EVENTSis disabled — gating has to happen at runtime, in the same process the flag actually lives in, since registration happens at compile time inside javac.FlamingockMetadataMergerprune bug that wrongly dropped both system changes in any module whose own compile classpath lacksflamingock-core(e.g. a module that only declares changes while another assembles the runner).JournalBackfillChange(the initial history read bypassing the per-stage persistence cache).Depends on
Based on
feat/journal-backfill(#982), with #986 and #981 merged in on top.