Akka to Pekko Migration for Deploy
Akka is a toolkit for building highly concurrent, distributed, and resilient message-driven applications for Java and Scala. Apache Pekko is a fork of Akka 2.6.x, prior to the Akka project’s adoption of the Business Source License.
Tip: If your Release cluster setup doesn't have any Akka-related configurations, no need to make any changes in the configurations.
From the 24.1 version onwards, Digital.ai Deploy has adopted Apache Pekko and migrated all the required code and configurations from Akka to Pekko.
Note: When you try to set up Deploy in cluster mode, and if you encounter any occurrences of the term
akka
within the following files located in thecentralConfiguration
folder, the set up will fail.
XL_DEPLOY_SERVER_HOME/centralConfiguration/deploy-cluster.yaml
XL_DEPLOY_SERVER_HOME/centralConfiguration/deploy-jmx.yaml
XL_DEPLOY_SERVER_HOME/centralConfiguration/deploy-server.yaml
XL_DEPLOY_SERVER_HOME/centralConfiguration/deploy-task.yaml
To fix this issue, replace those instances with the corresponding configuration settings associated with Pekko. This involves modifying any relevant packages, class names, jar names, URLs, and so on to align with the configuration specifications specific to the Pekko framework.
For more detailed instructions on migrating from Akka to Pekko, see the Migration Guide.
Important: From Deploy version 24.1 and later, these configuration files come with the Pekko changes already. However, when you upgrade from an earlier version the manual update from akka to pekko is mandatory. In the topic, we have explained how to manually update these configuration files when you upgrade.
Note that, when upgrading from an older Deploy version to version 24.1 and later, if any configuration file contains an Akka reference, the error message ""Configuration settings found which contains not supported term: akka See the migration guide for details about fixing your configuration" appears, and the server does not start. To know more, see Migration Guide.
Akka Examples
deploy-cluster.yaml
actor:
loggers:
- "akka.event.slf4j.Slf4jLogger"
loglevel: "INFO"
provider: "akka.cluster.ClusterActorRefProvider"
deploy-jmx.yaml
kamon:
show-aspectj-missing-warning: yes
metric:
track-unmatched-entities: yes
filters:
akka-dispatcher:
includes:
- "PlannerActorSystem/**"
- "task-sys/**"
- "xl-scheduler-system/**"
excludes: []
deploy-server.yaml
akka:
io:
dns:
resolver: async-dns
loglevel: INFO
deploy-task.yaml
system:
akka:
loggers:
- "akka.event.slf4j.Slf4jLogger"
- "akka.event.Logging$DefaultLogger"
loglevel: "INFO"
Pekko Examples
deploy-cluster.yaml
pekko:
actor:
loggers:
- org.apache.pekko.event.slf4j.Slf4jLogger
loglevel: INFO
provider: org.apache.pekko.cluster.ClusterActorRefProvider
deploy-jmx.yaml
kamon:
show-aspectj-missing-warning: yes
metric:
track-unmatched-entities: yes
filters:
pekko-dispatcher:
includes:
- "PlannerActorSystem/**"
- "task-sys/**"
- "xl-scheduler-system/**"
excludes: []
deploy-server.yaml
pekko:
io:
dns:
resolver: async-dns
loglevel: INFO
deploy-task.yaml
system:
pekko:
loggers:
- "org.apache.pekko.event.slf4j.Slf4jLogger"
- "org.apache.pekko.event.Logging$DefaultLogger"
loglevel: "INFO"
The following table lists some of the akka
to pekko
changes:
Akka | Pekko |
---|---|
akka | pekko |
"akka.event.slf4j.Slf4jLogger" | "org.apache.pekko.event.slf4j.Slf4jLogger" |
"akka.event.slf4j.Slf4jLoggingFilter" | "org.apache.pekko.event.slf4j.Slf4jLoggingFilter" |
"com.typesafe.akka.extension.quartz.QuartzSchedulerExtension" | "org.apache.pekko.extension.quartz.QuartzSchedulerExtension" |
"io.altoo.akka.serialization.kryo.KryoSerializer" | "io.altoo.serialization.kryo.pekko.PekkoKryoSerializer" |
"akka.actor.ActorRef" | "org.apache.pekko.actor.ActorRef" |
akka-persistence | pekko-persistence |
akka-persistence-jdbc | pekko-persistence-jdbc |
"akka.persistence.jdbc.journal.dao.legacy.ByteArrayJournalDao" | "org.apache.pekko.persistence.jdbc.journal.dao.legacy.ByteArrayJournalDao" |
"akka.persistence.jdbc.snapshot.dao.legacy.ByteArraySnapshotDao" | "org.apache.pekko.persistence.jdbc.snapshot.dao.legacy.ByteArraySnapshotDao" |
akka-kryo-serialization | pekko-kryo-serialization |
"akka.cluster.pubsub.DistributedPubSub" | "org.apache.pekko.cluster.pubsub.DistributedPubSub" |
"akka.cluster.ClusterActorRefProvider" | "org.apache.pekko.cluster.ClusterActorRefProvider" |
However, you can also directly extend configurations from Akka. However, as you transition to Pekko, it becomes important to identify and implement the equivalent configurations from the Pekko framework.
If you have any custom plugins available, they must be validated to ensure all the akka configurations are changed to pekko equivalents.
Important: If you are not sure about the configurations for the pekko equivalent from akka, contact Customer Support.