Skip to content

feat(dynamodb): add journal event persistence - #948

Open
bercianor wants to merge 3 commits into
masterfrom
feat/dynamodb-journal-events
Open

feat(dynamodb): add journal event persistence#948
bercianor wants to merge 3 commits into
masterfrom
feat/dynamodb-journal-events

Conversation

@bercianor

Copy link
Copy Markdown
Contributor

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a DynamoDB-backed “journal events” persistence path (behind Features.JOURNAL_EVENTS) so audit storage can retain only current state while persisting the full state-transition history as ordered journal events.

Changes:

  • Introduces DynamoDB journal-event table model + mapper utilities (JournalEventEntity, field constants, mapper).
  • Implements DynamoDBJournalEventStore and wires journal-aware, atomic (audit + journal) writes into DynamoDBAuditPersistence/DynamoDBAuditStore.
  • Adds/updates integration and contract tests (auditstore, importer, and end-to-end feature flag coverage).

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/journal/JournalEventFieldConstants.java Defines attribute/index names for the journal events table.
utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/journal/JournalEventEntity.java DynamoDB Enhanced Client bean for journal event items and GSIs.
utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/journal/DynamoDBJournalEventMapper.java Maps JournalEvent<AuditEntry> ↔ DynamoDB entity using JSON payload.
utils/dynamodb-util/src/main/java/io/flamingock/internal/util/dynamodb/entities/AuditEntryEntity.java Makes metadata / errorTrace string getters null-safe.
legacy/mongock-importer-dynamodb/src/test/java/io/flamingock/importer/mongock/dynamodb/DynamoDBImporterTest.java Ensures feature flag cleanup between tests.
legacy/mongock-importer-dynamodb/src/test/java/io/flamingock/importer/mongock/dynamodb/DynamoDBImporterJournalTest.java Verifies importer behavior when journaling is enabled (legacy stream + payload correctness).
core/target-systems/flamingock-dynamodb-externalsystem-api/src/main/java/io/flamingock/externalsystem/dynamodb/api/DynamoDBExternalSystem.java Aligns DynamoDB external system contract with transactional external systems.
core/target-systems/flamingock-dynamodb-externalsystem-api/build.gradle.kts Exposes core-commons API to support the transactional external system contract.
community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/internal/DynamoDBJournalEventStoreTest.java Unit/integration coverage for journal store initialization, append constraints, querying, and acknowledgement behavior.
community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/internal/DynamoDBAuditPersistenceJournalTest.java Verifies atomic audit+journal writes and sequence behavior at a transaction boundary.
community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/DynamoDBJournalFeatureFlagE2ETest.java End-to-end feature-flag behavior through a full runner execution.
community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/DynamoDBExternalSystemContractTest.java Ensures DynamoDB external systems implement the transactional contract.
community/flamingock-dynamodb-auditstore/src/test/java/io/flamingock/store/dynamodb/DynamoDBAuditStoreJournalTest.java Verifies per-stage journaling streams and repository-name validation.
community/flamingock-dynamodb-auditstore/src/main/java/io/flamingock/store/dynamodb/internal/DynamoDBJournalEventStore.java Implements the DynamoDB journal event store (table creation, reads, acknowledgements).
community/flamingock-dynamodb-auditstore/src/main/java/io/flamingock/store/dynamodb/internal/DynamoDBAuditPersistence.java Adds journal-aware write path that stages journal+audit writes in the same transaction.
community/flamingock-dynamodb-auditstore/src/main/java/io/flamingock/store/dynamodb/internal/DynamoDBAuditor.java Adds transactional staging method for “current state” audit writes.
community/flamingock-dynamodb-auditstore/src/main/java/io/flamingock/store/dynamodb/DynamoDBAuditStore.java Wires journal store + sequencers into persistence creation and adds journal repository naming/validation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@dieppa dieppa left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good contribution. Some comments

Make sure we test the DB constrains and conditions: uniqueness on (streamId, sequence) and eventId. That it returns only the unacknowledged events, etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants