Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
c45ac86
testing out akka to pekko
PatrickGoRaft Jun 22, 2026
1c02132
configuring hmda platform to leverage pekko in lieu of akka
PatrickGoRaft Jun 22, 2026
afd2fc0
configuring hmda platform to leverage pekko in lieu of akka
PatrickGoRaft Jun 22, 2026
0681ee6
updating grpc plugin to pekko
PatrickGoRaft Jun 22, 2026
61a62e1
adding plugins.sbt to resolve sbt-javaagent refference
PatrickGoRaft Jun 22, 2026
cdba21f
resolving library reference issues after pekko cut over
PatrickGoRaft Jun 23, 2026
17c4cf7
resolving library reference issues after pekko cut over
PatrickGoRaft Jun 23, 2026
689a256
resolving library reference issues after pekko cut over
PatrickGoRaft Jun 23, 2026
d11c08e
resolving library reference issues after pekko cut over
PatrickGoRaft Jun 23, 2026
da46c90
resolving library reference issues after pekko cut over
PatrickGoRaft Jun 23, 2026
ac8d2aa
resolving issue with futures and institutions api service
PatrickGoRaft Jun 23, 2026
22edc6d
getting hmda pekko to build a docker image
PatrickGoRaft Jun 23, 2026
5137d77
attempting to resolve dependancy with jackson-databind version
PatrickGoRaft Jun 23, 2026
58c1d62
getting rate spread calculator working via pekko
PatrickGoRaft Jun 23, 2026
cb8b9e2
hmda platform service pekko tweak
PatrickGoRaft Jun 23, 2026
8af70a6
getting rate spread calculator working via pekko
PatrickGoRaft Jun 23, 2026
b84d9c9
updating build sbt with pekko lib merge strats
PatrickGoRaft Jun 23, 2026
9f4a9f3
updating akka conf settings to pekko
PatrickGoRaft Jun 23, 2026
0641206
removing akka resolver
PatrickGoRaft Jun 23, 2026
a657d16
resolving pekko management port for ActorRef
PatrickGoRaft Jun 23, 2026
f4d4a75
resolving pekko management port for ActorRef
PatrickGoRaft Jun 23, 2026
b344078
resolving pekko mixed library errors
PatrickGoRaft Jun 24, 2026
b59085c
resolving pekko mixed library errors
PatrickGoRaft Jun 24, 2026
cbea0c4
resolving pekko mixed library errors
PatrickGoRaft Jun 24, 2026
1274139
correct alpakka references to pekko
PatrickGoRaft Jun 24, 2026
2c59175
correcting path for pekko s3 stream package
PatrickGoRaft Jun 24, 2026
23ba7c5
resolving pekko Done class refferences
PatrickGoRaft Jun 24, 2026
d66c70e
resolving pekko lib reference in data publisher and mlar services
PatrickGoRaft Jun 24, 2026
44aac91
resolving timeouts in hmda platform unit testing
PatrickGoRaft Jun 24, 2026
ec12104
removing akka resolver from github workflow
PatrickGoRaft Jun 24, 2026
85cef19
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
acae2fd
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
f520928
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
16f689b
Revert "removing akka resolver from github workflow"
PatrickGoRaft Jun 24, 2026
10be83e
Revert "correcting unit test spec with pekko changes"
PatrickGoRaft Jun 24, 2026
b807d54
Reapply "removing akka resolver from github workflow"
PatrickGoRaft Jun 24, 2026
b93ba67
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
5368c95
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
469cbd5
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
0fe3cee
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
704fe85
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
78db097
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
c9c465c
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
a69bd61
correcting unit test spec with pekko changes
PatrickGoRaft Jun 24, 2026
82f69a0
resolving cassandra connection issues
PatrickGoRaft Jun 26, 2026
124331b
resolving persistance id for pekko libs
PatrickGoRaft Jun 26, 2026
32bdd27
resolving persistance id for pekko libs
PatrickGoRaft Jun 26, 2026
840163c
resolving persistance id for pekko libs
PatrickGoRaft Jun 26, 2026
ac0d0a3
resolving persistance id for pekko libs
PatrickGoRaft Jun 26, 2026
b1500fe
adjusting kafka settings to new pekko libs
PatrickGoRaft Jul 1, 2026
06afff9
correct email service settings for pekko libs
PatrickGoRaft Jul 2, 2026
40df24b
resolving library conflict with jakarta mail and the keycloakadmin d…
PatrickGoRaft Jul 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 0 additions & 2 deletions .github/workflows/cve-scan-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ jobs:
- name: Build Docker image of HMDA platform
run: |
env JAVA_OPTS="-Xss256m -Xmx4096m" sbt "project hmda-platform" dockerPublishLocalSkipTests
env:
AKKA_RESOLVER: ${{ secrets.AKKA_RESOLVER }}

- name: Tag and name Docker image
run: docker tag hmda/hmda-platform:latest pr-cve-scan:latest
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dockerhub-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ jobs:
run: |
sbt "project hmda-platform" dockerPublishLocalSkipTests
env:
AKKA_RESOLVER: ${{ secrets.AKKA_RESOLVER }}
PEKKO_RESOLVER: ${{ secrets.PEKKO_RESOLVER }}

- name: Tag Docker image
run: docker tag $(docker images --filter=reference="hmda/hmda-platform:latest" --format "{{.ID}}") ${{ env.REGISTRY }}:${{ github.ref_name }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/helper-functions.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
done
continue-on-error: true
env:
AKKA_RESOLVER: ${{ secrets.AKKA_RESOLVER }}
PEKKO_RESOLVER: ${{ secrets.PEKKO_RESOLVER }}

- name: Check Test Results
run: |
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ export JAVA_HOME=$HOME/.asdf/installs/java/openjdk-13.0.2

### Running with sbt

~~The HMDA Platform can run locally using [`sbt`](https://www.scala-sbt.org/) with an [embedded Cassandra](https://doc.akka.io/docs/alpakka-kafka/current/) and [embedded Kafka](https://doc.akka.io/docs/alpakka-kafka/current/). To get started:~~
~~The HMDA Platform can run locally using [`sbt`](https://www.scala-sbt.org/) with an [embedded Cassandra](https://doc.pekko.io/docs/pekko-kafka/current/) and [embedded Kafka](https://doc.pekko.io/docs/pekko-kafka/current/). To get started:~~
_removing embedded cassandra allows us to use more up-to-date java versions_

For local development, supporting services need to be started first in docker:
Expand All @@ -197,10 +197,10 @@ For local development, supporting services need to be started first in docker:
export CASSANDRA_CLUSTER_HOSTS=localhost
export APP_PORT=2551
```
1. With the new Akka dependencies no longer available from the public resolver, we need to use the authenticated URL retrievable from https://account.akka.io/token.
1. With the new pekko dependencies no longer available from the public resolver, we need to use the authenticated URL retrievable from https://account.pekko.io/token.
Once we get the url from that page, export it as an environment variable (or set it as a env var shell profile):
```bash
export AKKA_RESOLVER={url from the akka token web page}
export PEKKO_RESOLVER={url from the pekko token web page}
```
1. Start sbt and run the platform with the following commands:
```bash
Expand Down
12 changes: 6 additions & 6 deletions UPGRADES.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
# Upgrades

## Akka Cassandra Persistence Plugin Upgrade
Migration Documentation: https://doc.akka.io/docs/akka-persistence-cassandra/current/migrations.html
## pekko Cassandra Persistence Plugin Upgrade
Migration Documentation: https://doc.pekko.io/docs/pekko-persistence-cassandra/current/migrations.html

##### new table needed for upgrading to 1.0+
```sql
CREATE TABLE IF NOT EXISTS akka.all_persistence_ids(
CREATE TABLE IF NOT EXISTS pekko.all_persistence_ids(
persistence_id text PRIMARY KEY);
```

new environment variable to put into `cassandra-configmap`: `cassandra-cluster-dc` (e.g.: `dc` / `dc2`)

### Migration
newly added table needs to be populated, refer to [Migration Documentation](https://doc.akka.io/docs/akka-persistence-cassandra/current/migrations.html) in [plugin upgrade](#akka-cassandra-persistence-plugin-upgrade) section,
newly added table needs to be populated, refer to [Migration Documentation](https://doc.pekko.io/docs/pekko-persistence-cassandra/current/migrations.html) in [plugin upgrade](#pekko-cassandra-persistence-plugin-upgrade) section,
code snippet for migration tool:
```scala
import scala.util.Failure
import scala.util.Success

import akka.actor.ActorSystem
import akka.persistence.cassandra.reconciler.Reconciliation
import org.apache.pekko.actor.ActorSystem
import pekko.persistence.cassandra.reconciler.Reconciliation

// System should have the same Cassandra plugin configuration as your application
// but be careful to remove seed nodes so this doesn't join the cluster
Expand Down
2 changes: 0 additions & 2 deletions akka.sbt

This file was deleted.

445 changes: 394 additions & 51 deletions build.sbt

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions check-digit/src/main/resources/application.conf
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
akka {
pekko {
log-level = INFO
http.server.preview.enable-http2 = on
}

akka.http.parsing {
pekko.http.parsing {
max-to-strict-bytes = 20m
}
akka.http.server.parsing {
pekko.http.server.parsing {
max-content-length = 20m
}

Expand Down
6 changes: 3 additions & 3 deletions check-digit/src/main/scala/hmda/uli/CheckDigitTest.scala
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package hmda.uli

import akka.actor.ActorSystem
import akka.grpc.GrpcClientSettings
import akka.stream.Materializer
import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.grpc.GrpcClientSettings
import org.apache.pekko.stream.Materializer
import hmda.grpc.services.{ CheckDigitServiceClient, ValidUliRequest }

import scala.concurrent.Await
Expand Down
2 changes: 1 addition & 1 deletion check-digit/src/main/scala/hmda/uli/HmdaUli.scala
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package hmda.uli

import akka.actor.typed.ActorSystem
import org.apache.pekko.actor.typed.ActorSystem
import hmda.uli.api.http.HmdaUliApi
import org.slf4j.LoggerFactory

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package hmda.uli.api.grpc

import akka.stream.Materializer
import org.apache.pekko.stream.Materializer
import hmda.grpc.services.{ CheckDigitService, ValidUliRequest, ValidUliResponse }
import hmda.uli.validation.ULI._
import scala.concurrent.Future
Expand Down
10 changes: 5 additions & 5 deletions check-digit/src/main/scala/hmda/uli/api/http/HmdaUliApi.scala
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package hmda.uli.api.http

import akka.actor.typed.Behavior
import akka.actor.typed.scaladsl.Behaviors
import akka.actor.typed.scaladsl.adapter._
import akka.actor.{ ActorSystem, CoordinatedShutdown }
import akka.http.scaladsl.server.Directives._
import org.apache.pekko.actor.typed.Behavior
import org.apache.pekko.actor.typed.scaladsl.Behaviors
import org.apache.pekko.actor.typed.scaladsl.adapter._
import org.apache.pekko.actor.{ ActorSystem, CoordinatedShutdown }
import org.apache.pekko.http.scaladsl.server.Directives._
import hmda.api.http.routes.BaseHttpApi
import hmda.api.http.directives.HmdaTimeDirectives._

Expand Down
24 changes: 12 additions & 12 deletions check-digit/src/main/scala/hmda/uli/api/http/ULIHttpApi.scala
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package hmda.uli.api.http

import akka.NotUsed
import akka.http.scaladsl.common.{EntityStreamingSupport, JsonEntityStreamingSupport}
import akka.http.scaladsl.marshalling.ToResponseMarshallable
import akka.http.scaladsl.model.MediaTypes._
import akka.http.scaladsl.model.StatusCodes.BadRequest
import akka.http.scaladsl.model.headers.RawHeader
import akka.http.scaladsl.model.{HttpCharsets, HttpEntity}
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.Route
import akka.stream.scaladsl.{Flow, Source}
import akka.util.ByteString
import de.heikoseeberger.akkahttpcirce.FailFastCirceSupport._
import org.apache.pekko.NotUsed
import org.apache.pekko.http.scaladsl.common.{EntityStreamingSupport, JsonEntityStreamingSupport}
import org.apache.pekko.http.scaladsl.marshalling.ToResponseMarshallable
import org.apache.pekko.http.scaladsl.model.MediaTypes._
import org.apache.pekko.http.scaladsl.model.StatusCodes.BadRequest
import org.apache.pekko.http.scaladsl.model.headers.RawHeader
import org.apache.pekko.http.scaladsl.model.{HttpCharsets, HttpEntity}
import org.apache.pekko.http.scaladsl.server.Directives._
import org.apache.pekko.http.scaladsl.server.Route
import org.apache.pekko.stream.scaladsl.{Flow, Source}
import org.apache.pekko.util.ByteString
import com.github.pjfanning.pekkohttpcirce.FailFastCirceSupport._
import hmda.uli.api.model.ULIModel._
import hmda.uli.api.model.ULIValidationErrorMessages.{invalidLoanIdLengthMessage, nonAlpanumericLoanIdMessage}
import hmda.uli.validation.ULI._
Expand Down
2 changes: 1 addition & 1 deletion check-digit/src/test/resources/application.conf
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
akka {
pekko {
stdout-loglevel = OFF
loglevel = OFF
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package hmda.uli.api.grpc

import akka.actor.ActorSystem
import akka.stream.Materializer
import org.apache.pekko.actor.ActorSystem
import org.apache.pekko.stream.Materializer
import hmda.grpc.services.{ ValidUliRequest, ValidUliResponse }
import org.scalatest.concurrent.ScalaFutures
import org.scalatest.time.Span
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
package hmda.uli.api.http

import akka.http.scaladsl.model.StatusCodes
import akka.http.scaladsl.testkit.ScalatestRouteTest
import akka.util.Timeout
import org.apache.pekko.http.scaladsl.model.StatusCodes
import org.apache.pekko.http.scaladsl.testkit.ScalatestRouteTest
import org.apache.pekko.util.Timeout
import org.scalatest.{BeforeAndAfterAll, MustMatchers, WordSpec}
import akka.http.scaladsl.model.Uri.Path
import akka.http.scaladsl.model.headers.{HttpOrigin, Origin}
import org.apache.pekko.http.scaladsl.model.Uri.Path
import org.apache.pekko.http.scaladsl.model.headers.{HttpOrigin, Origin}
import com.typesafe.config.ConfigFactory
import hmda.api.http.model.ErrorResponse
import hmda.uli.api.model.ULIModel.{ULIBatchValidated, _}
import hmda.util.http.FileUploadUtils
import hmda.uli.api.model.ULIValidationErrorMessages._
import de.heikoseeberger.akkahttpcirce.FailFastCirceSupport._
import com.github.pjfanning.pekkohttpcirce.FailFastCirceSupport._
import io.circe.generic.auto._
import akka.http.scaladsl.unmarshalling.Unmarshaller._
import org.apache.pekko.http.scaladsl.unmarshalling.Unmarshaller._
import org.slf4j.{Logger, LoggerFactory}

import scala.concurrent.duration._
Expand Down
72 changes: 36 additions & 36 deletions commercial-build.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,48 +11,48 @@ lazy val sparkDeps =
sparkStreaming,
sparkKafka,
postgres,
akkaKafkaStreams
pekkoKafkaStreams
)

lazy val authDeps = Seq(keycloakAdapter, keycloak, jbossLogging, httpClient)

lazy val akkaDeps = Seq(
akkaSlf4J,
akkaCluster,
akkaTyped,
akkaClusterTyped,
akkaStream,
akkaStreamTyped,
akkaManagement,
akkaManagementClusterBootstrap,
akkaServiceDiscoveryDNS,
akkaServiceDiscoveryKubernetes,
akkaClusterHttpManagement,
akkaClusterHttpManagement,
akkaTestkitTyped,
akkaStreamsTestKit,
akkaCors,
akkaKafkaStreams,
lazy val pekkoDeps = Seq(
pekkoSlf4J,
pekkoCluster,
pekkoTyped,
pekkoClusterTyped,
pekkoStream,
pekkoStreamTyped,
pekkoManagement,
pekkoManagementClusterBootstrap,
pekkoServiceDiscoveryDNS,
pekkoServiceDiscoveryKubernetes,
pekkoClusterHttpManagement,
pekkoClusterHttpManagement,
pekkoTestkitTyped,
pekkoStreamsTestKit,
pekkoCors,
pekkoKafkaStreams,
embeddedKafka,
alpakkaS3,
akkaQuartzScheduler,
pekkoS3,
pekkoQuartzScheduler,
phantomDSL,
phantomJDK8
)

lazy val akkaPersistenceDeps =
lazy val pekkoPersistenceDeps =
Seq(
akkaPersistence,
akkaClusterSharding,
akkaPersistenceTyped,
akkaPersistenceQuery,
akkaClusterShardingTyped,
akkaPersistenceCassandra,
pekkoPersistence,
pekkoClusterSharding,
pekkoPersistenceTyped,
pekkoPersistenceQuery,
pekkoClusterShardingTyped,
pekkoPersistenceCassandra,
cassandraLauncher
)

lazy val akkaHttpDeps =
Seq(akkaHttp, akkaHttp2, akkaHttpTestkit, akkaStreamsTestKit, akkaHttpCirce)
lazy val pekkoHttpDeps =
Seq(pekkoHttp, pekkoHttp2, pekkoHttpTestkit, pekkoStreamsTestKit, pekkohttpcirce)
lazy val circeDeps = Seq(circe, circeGeneric, circeParser)
lazy val enumeratumDeps = Seq(enumeratum, enumeratumCirce)

Expand Down Expand Up @@ -102,7 +102,7 @@ lazy val common = (project in file("common"))
scalapb.gen() -> (sourceManaged in Compile).value
),
Seq(
libraryDependencies ++= commonDeps ++ authDeps ++ akkaDeps ++ akkaPersistenceDeps ++ akkaHttpDeps ++ circeDeps ++ slickDeps
libraryDependencies ++= commonDeps ++ authDeps ++ pekkoDeps ++ pekkoPersistenceDeps ++ pekkoHttpDeps ++ circeDeps ++ slickDeps
)
)

Expand Down Expand Up @@ -132,7 +132,7 @@ lazy val `hmda-spark-reporting` = (project in file("hmda-spark-reporting"))
oldStrategy(x)
}
),
Seq(libraryDependencies ++= sparkDeps ++ circeDeps ++ akkaDeps),
Seq(libraryDependencies ++= sparkDeps ++ circeDeps ++ pekkoDeps),
dockerSettings,
packageSettings
)
Expand Down Expand Up @@ -256,7 +256,7 @@ lazy val `hmda-dashboard` = (project in file("hmda-dashboard"))
.settings(hmdaBuildSettings: _*)
.settings(
Seq(
libraryDependencies ++= commonDeps ++ akkaDeps ++ akkaHttpDeps ++ circeDeps ++ slickDeps ++
libraryDependencies ++= commonDeps ++ pekkoDeps ++ pekkoHttpDeps ++ circeDeps ++ slickDeps ++
enumeratumDeps :+ monix :+ lettuce :+ scalaJava8Compat :+ scalaMock,
assemblyMergeStrategy in assembly := {
case "application.conf" => MergeStrategy.concat
Expand Down Expand Up @@ -391,7 +391,7 @@ lazy val `hmda-protocol` = (project in file("protocol"))
JavaServerAppPackaging,
sbtdocker.DockerPlugin,
AshScriptPlugin,
AkkaGrpcPlugin
pekkoGrpcPlugin
)
.settings(hmdaBuildSettings: _*)

Expand Down Expand Up @@ -430,7 +430,7 @@ lazy val `rate-limit` = (project in file("rate-limit"))
.settings(hmdaBuildSettings: _*)
.settings(
Seq(
libraryDependencies ++= commonDeps ++ akkaDeps ++ akkaHttpDeps :+ guava,
libraryDependencies ++= commonDeps ++ pekkoDeps ++ pekkoHttpDeps :+ guava,
mainClass in Compile := Some("hmda.rateLimit.RateLimitApp"),
assemblyMergeStrategy in assembly := {
case "application.conf" => MergeStrategy.concat
Expand Down Expand Up @@ -458,7 +458,7 @@ lazy val `data-browser` = (project in file("data-browser"))
.settings(hmdaBuildSettings: _*)
.settings(
Seq(
libraryDependencies ++= commonDeps ++ akkaDeps ++ akkaHttpDeps ++ circeDeps ++ slickDeps ++
libraryDependencies ++= commonDeps ++ pekkoDeps ++ pekkoHttpDeps ++ circeDeps ++ slickDeps ++
enumeratumDeps :+ monix :+ lettuce :+ scalaJava8Compat :+ scalaMock,
assemblyMergeStrategy in assembly := {
case "application.conf" => MergeStrategy.concat
Expand Down Expand Up @@ -492,7 +492,7 @@ lazy val `email-service` = (project in file("email-service"))
assemblyJarName in assembly := {
s"${name.value}.jar"
},
libraryDependencies ++= monix :: akkaKafkaStreams :: awsSesSdk :: logback :: Nil
libraryDependencies ++= monix :: pekkoKafkaStreams :: awsSesSdk :: logback :: Nil
),
dockerSettings,
packageSettings
Expand Down
Loading