innFactory/akka-persistence-gcp-datastore
58.4
Adequate · 21 September 2026
1.3k
lines of production code
Scala
primary language
4
measurements over time
What this system is
This system is an Akka Persistence plugin that integrates Google Cloud Datastore as a backend for event sourcing and CQRS patterns. It provides the core infrastructure for persisting actor state, including a write journal for event storage, a read journal for querying events by ID or tag, and a snapshot store for state serialization. The implementation leverages Akka Streams to stream persistence data and supports both Scala and Java DSLs for querying and managing persistent data.
Features
Add Datastore read journal implementation
Added the Datastore read journal implementation for Akka Persistence Query, including the Scala DSL (\DatastoreScaladslReadJournal\), the Java DSL wrapper (\DatastoreJavadslReadJournal\), and the provider (\DatastoreReadJournalProvider\). This enables querying persisted events from a Datastore backend using standard Akka Persistence Query interfaces such as \eventsByTag\, \eventsByPersistenceId\, \persistenceIds\, and \currentPersistenceIds\.
src/main/scala/akka/persistence/datastore/journal/read · high confidence
Add Google Cloud Datastore snapshot store implementation
Introduces a new DatastoreSnapshot component that enables Akka Persistence to save and load snapshots using Google Cloud Datastore. This adds support for persisting and retrieving state snapshots to/from the Datastore, allowing users to leverage Datastore as a backend for their Akka Persistence snapshots.
src/main/scala/akka/persistence/datastore/snapshot · high confidence
Add serialization support for Datastore persistence
Introduced new serialization classes for the Datastore persistence module, including DatastoreSerializer, SerializedPayload, and SerializedSnapshot. These components enable the serialization and deserialization of persistent data and snapshots, integrating with Akka's serialization extension to handle byte arrays, serializer IDs, and manifests for Datastore operations.
src/main/scala/akka/persistence/datastore/serialization · high confidence
Added Akka Persistence configuration for GCP Datastore
A new reference.conf file has been added to configure Akka Persistence plugins for Google Cloud Datastore. This includes settings for the journal (gcp-datastore-journal), snapshot store (gcp-datastore-snapshot), and read journal (gcp-datastore-query), along with environment-variable-based project ID and test host configurations.
src/main/resources · high confidence
Initial implementation of the Akka Datastore Journal
This change introduces the core components for persisting Akka actor state to Google Cloud Datastore. The update adds the \DatastoreConnection\ object to manage Datastore client initialization for both production and test environments, alongside the \DatastoreJournal\ class which implements \AsyncWriteJournal\ and \AsyncRecovery\ to handle message persistence, deletion, and replay operations via the Datastore API.
src/main/scala/akka/persistence/datastore/journal · high confidence
Initial project scaffolding and configuration
The repository was initialized with essential configuration and metadata files. A Mergify configuration (.mergify.yml) was added to automate pull request merging and head branch deletion. A Scala Steward configuration (.scala-steward.conf) was introduced to manage dependency updates. The project's code formatting was defined in .scalafmt.conf (version 3.4.3). A CHANGELOG.md was added to track project changes, and an Apache 2.0 LICENSE file was included. Additionally, a test.sh script was added to facilitate local testing with the Google Cloud Datastore emulator, and a .gitignore file was configured to exclude build artifacts and IDE files.
(repo-wide) · high confidence
New stream sources for reading persistence data
Added four new Akka Stream GraphStage sources in the Datastore read journal: PersistenceIdsSource and CurrentPersistenceIdsSource for listing persistence IDs, plus PersistenceEventsByPersistenceIdSource and PersistenceEventsByTagSource for retrieving event envelopes by persistence ID and tag respectively. These components enable the journal to stream persistence IDs and tagged events from Google Cloud Datastore with configurable refresh intervals.
src/main/scala/akka/persistence/datastore/journal/read/sources · high confidence
Behavioural changes
Introduces shared persistence abstractions for GCP Datastore
Adds DatastoreCommon and DatastorePersistence traits to the Akka Persistence Datastore plugin, defining shared constants (such as journal and snapshot kinds, and field keys like persistenceId, sequenceNr, and timestamp) and base traits for connecting to the Google Cloud Datastore service. This refactoring extracts common configuration and service access logic, enabling the journal and snapshot components to share a consistent interface for Datastore operations.
src/main/scala/akka/persistence/datastore · high confidence
Test coverage
Added test coverage for GCP Datastore persistence components
Added new test suites for the GCP Datastore journal and snapshot store implementations. The DatastoreJournalSpec validates the journal plugin configuration and serialization capabilities, while DatastoreSnapshotSpec covers the snapshot store plugin configuration and serialization support.
src/test · high confidence
Dependencies
Initial release of Akka Persistence GCP Datastore connector
The project introduces a new Akka Persistence plugin for Google Cloud Datastore, enabling event sourcing and CQRS patterns with GCP's managed database. The build configuration defines dependencies on Akka 2.6.17, Scala 2.12.15 and 2.13.7, Play JSON 2.9.2, and Google Cloud Datastore 2.2.9, establishing the foundation for this integration.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 48 → 58 (+10.6)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 99 (-0.7)
- Architecture 69 → 66 (-3.3)
- Maturity 38 → 50 (+12.3)
- Readiness 50 → 63 (+13.7)
- Security 50 → 62 (+11.9)
Resolved (10)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Test reliability not included
- complexity unreadable for .scala — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (27)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (19 lines × 4) (src/main/scala/akka/persistence/datastore/journal/read/sources/CurrentPersistenceIdsSource.scala)
- Duplicated block (24 lines × 4) (src/main/scala/akka/persistence/datastore/journal/read/sources/CurrentPersistenceIdsSource.scala)
- Duplicated block (37 lines × 2) (src/main/scala/akka/persistence/datastore/journal/read/sources/CurrentPersistenceIdsSource.scala)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- …and 7 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
innFactory/akka-persistence-gcp-datastore was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit c71018729e901ef26eefecbdeacfbe0bbff2d735 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.