Skip to main content
Version: Early Access

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 the centralConfiguration 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:

AkkaPekko
akkapekko
"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-persistencepekko-persistence
akka-persistence-jdbcpekko-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-serializationpekko-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.