refactor(MEDECA-386): move persistence from Akka to Apache Pekko #40
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/support!40
Loading…
Reference in a new issue
No description provided.
Delete branch "MEDECA-386-pekko-main"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Akka 2.6.x is frozen at the pre-BSL licence and receives no further fixes. Apache Pekko is the fork of that same codebase and publishes native Scala 3 artifacts, so consuming it also lets us drop the
withDottyCompatbridge and the silencer hack from this module.This is the same change already released as v0.1.22 off
release/0.1.21. It is cherry-picked here so the upcoming 0.2.0 forms release offmaincarries it too — otherwise the next main-line release would silently revert to Akka.What
akka-persistence→pekko-persistence; packageworks.iterative.akka→works.iterative.pekko;Akka*types →Pekko*. Published artifact is nowiw-support-pekko-persistence.pekko1.1.5,pekko-persistence-jdbc1.2.0,pekko-projection1.1.0, Slick 3.5.1).reference.conftoakka_projection_offset_store/akka_projection_management, because Pekko's defaults arepekko_*. Without this every consumer would silently start a fresh offset store and replay every projection.Compatibility
Journal plugin ids (
jdbc-journal,jdbc-snapshot-store,jdbc-read-journal), all table and column names, and the|persistence-id separator are unchanged between the two versions. Serializer identifiers are preserved, andPekkoZioJsonSerializer.fromBinaryignores the stored manifest, so existing journal and snapshot rows deserialize unchanged.Verified at runtime in
medeca-modul-poptavkyagainst a database holding Akka-written rows: Pekko resumed from the existing offset without replaying, and after the offset was cleared it replayed and deserialized those Akka-written events correctly. New writes use an identical wire format.Version
CommonVersion.publishVersionmoves0.1.22-SNAPSHOT→0.2.0-SNAPSHOT.0.1.22is now a released tag off the release line, so main could not keep claiming it. This also matches the plan for forms consolidation to ship as 0.2.0.Note for consumers
cmi-portalyalso consumes iw-support. It does not use this module, but the artifact rename is breaking for anyone who does.CI run #14 failed on
sqldb-mysql.test—MySQLMinimalSpec - can create Repo with OffsetDateTime. This is a MySQL testcontainer that failed to start inside its 1-minute budget (JdbcDatabaseContainer.waitUntilContainerStarted→GenericContainer.tryStart→MySQLTestingLayers.scala:27), not a test assertion failure.Evidence it is environmental rather than a regression:
./mill sqldb-mysql.testpasses locally on this branch: 24 tests, 20s, including the exact failing case.sqldb-mysqlhas no dependency on the persistence module. This change touches onlypekko-persistence/andbuild.mill's module wiring and version.Please hit Re-run on the job — the Actions rerun REST endpoint returns 404 on this host, so it cannot be re-triggered from the CLI.