Skip to content

Conversation

@sntiwari1
Copy link

@sntiwari1 sntiwari1 commented Oct 13, 2025

This PR upgrades the sunbird-utils repository from Akka 2.5.19 + Scala 2.11 to Apache Pekko 1.0.3 + Scala 2.13.12.

The upgrade ensures license compliance, security, and modernization while maintaining API compatibility and project functionality.

Context:

  • License Compliance: Akka switched to Business Source License 1.1; Pekko remains Apache 2.0
  • Security: Akka 2.5.19 no longer receives security updates
  • Modernization: Access to latest features, Scala 2.13 improvements, and performance optimizations

Dependencies:

  • Apache Pekko 1.0.3
  • Scala 2.13.12
  • Jackson Module Scala 2.14.3

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature / Upgrade (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

How Has This Been Tested?

  • Built all modules: mvn clean install -DskipTests
  • Built all modules with tests: mvn clean install
  • Verified dependency tree to ensure no Akka or Scala 2.11 artifacts remain: mvn dependency:tree
  • Verified Pekko dependencies present: mvn dependency:tree | grep pekko

Checklist:

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my upgrade works
  • New and existing unit tests pass locally
  • Any dependent changes have been merged and published in downstream modules

Key Changes / Files Modified

Maven POMs

  • Updated all POM files with Pekko, Scala 2.13, and Jackson module versions
  • Added exclusions to prevent Scala 2.11 transitive dependencies
  • Updated POM files:
    • sunbird-platform-core/actor-core/pom.xml
    • sunbird-platform-core/actor-util/pom.xml
    • sunbird-platform-core/common-util/pom.xml
    • sunbird-es-utils/pom.xml

Source Code

  • Updated Akka imports to Pekko equivalents (akka.*org.apache.pekko.*)
  • Files affected: actors, utilities, and tests
  • Updated FutureConverters for Scala 2.13 where applicable

Configuration

  • Updated application.conf references:
    • akka.actor.providerpekko.actor.provider
    • akka.remote.RemoteActorRefProviderorg.apache.pekko.remote.RemoteActorRefProvider
    • akka.remote.netty.tcppekko.remote.artery
    • akka:// protocol references → pekko://

Scala Version Handling

  • Excluded Scala 2.11 transitive dependencies from cloud-store-sdk in common-util
  • Explicitly declared Scala 2.13.12 dependency across all modules

Migration Impact

  • Business Logic: No changes; functionality preserved
  • API Compatibility: Maintained (Pekko API-compatible with Akka)
  • Code Changes: Primarily package name updates (akkapekko)
  • License: Fully compliant with Apache 2.0

Description by Korbit AI

What change is being made?

Upgrade the project to Pekko 1.0.3 by migrating all Akka dependencies and imports to Pekko, updating Scala to 2.13, and adjusting configuration and build artifacts accordingly, across all modules.

Why are these changes being made?

Switch to Pekko to maintain Apache 2.0 licensing and receive ongoing security/feature updates, while preserving API compatibility and overall business logic. If applicable, brief notes about reduced risk with license compliance and improved dependency alignment.

Is this description stale? Ask me to generate a new description by commenting /korbit-generate-pr-description

@korbit-ai
Copy link

korbit-ai bot commented Oct 13, 2025

Based on your review schedule, I'll hold off on reviewing this PR until it's marked as ready for review. If you'd like me to take a look now, comment /korbit-review.

Your admin can change your review schedule in the Korbit Console

@sntiwari1 sntiwari1 marked this pull request as ready for review November 10, 2025 10:40
@sntiwari1 sntiwari1 requested a review from Copilot November 10, 2025 10:41
@korbit-ai
Copy link

korbit-ai bot commented Nov 10, 2025

I was unable to write a description for this pull request. This could be because I only found files I can't scan.

Copy link

@korbit-ai korbit-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've completed my review and didn't find any issues... but I did find this kitten.

    |\__/,|   (`\
  _.|o o  |_   ) )
-(((---(((--------
Files scanned
File Path Reviewed
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/email/EmailServiceClient.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/courseenrollment/CourseEnrollmentClient.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/InterServiceCommunication.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/user/UserClient.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/systemsettings/SystemSettingClient.java
sunbird-platform-core/actor-core/src/main/java/org/sunbird/actor/service/SunbirdMWService.java
sunbird-platform-core/actor-core/src/main/java/org/sunbird/actor/router/BackgroundRequestRouter.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/email/impl/EmailServiceClientImpl.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/org/OrganisationClient.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/courseenrollment/impl/CourseEnrollmentClientImpl.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/location/LocationClient.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/impl/InterServiceCommunicationImpl.java
sunbird-platform-core/common-util/src/main/java/org/sunbird/common/models/util/RestUtil.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/systemsettings/impl/SystemSettingClientImpl.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/user/impl/UserClientImpl.java
sunbird-platform-core/actor-core/src/main/java/org/sunbird/actor/core/BaseRouter.java
sunbird-platform-core/actor-core/src/main/java/org/sunbird/actor/router/RequestRouter.java
sunbird-platform-core/actor-core/src/main/java/org/sunbird/actor/service/BaseMWService.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/location/impl/LocationClientImpl.java
sunbird-platform-core/actor-core/src/main/java/org/sunbird/actor/core/BaseActor.java
sunbird-platform-core/actor-util/src/main/java/org/sunbird/actorutil/org/impl/OrganisationClientImpl.java
sunbird-es-utils/src/main/java/org/sunbird/common/ElasticSearchTcpImpl.java
sunbird-es-utils/src/main/java/org/sunbird/common/ElasticSearchRestHighImpl.java
sunbird-es-utils/src/main/java/org/sunbird/common/ElasticSearchHelper.java
sunbird-es-utils/src/main/java/org/sunbird/common/ElasticSearchUtil.java

Explore our documentation to understand the languages and file types we support and the files we ignore.

Check out our docs on how you can make Korbit work best for you and your team.

Loving Korbit!? Share us on LinkedIn Reddit and X

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR migrates the sunbird-utils repository from Akka 2.5.19 to Apache Pekko 1.0.3, addressing license compliance concerns and security issues with the outdated Akka version.

  • Migrated from Akka 2.5.19 (Business Source License) to Apache Pekko 1.0.3 (Apache 2.0)
  • Upgraded Scala from 2.11 to 2.13
  • Updated Jackson Module Scala from 2.10.1 to 2.14.3

Reviewed Changes

Copilot reviewed 30 out of 30 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
sunbird-platform-core/common-util/pom.xml Updated dependencies from Akka to Pekko, added Scala library exclusions and version properties
sunbird-platform-core/actor-util/pom.xml Migrated Akka dependencies to Pekko 1.0.3 with Scala 2.13
sunbird-platform-core/actor-core/pom.xml Updated actor framework dependencies to Pekko
sunbird-es-utils/pom.xml Added Pekko dependencies for Elasticsearch utilities
Multiple Java files Updated imports from akka.* packages to org.apache.pekko.*
BaseMWService.java Migrated remote actor configuration from Akka Netty to Pekko Artery
BaseRouter.java Updated protocol check from "akka://" to "pekko://"
RequestRouter.java Updated exception handling for Pekko AskTimeoutException
PEKKO_UPGRADE_README.md Added comprehensive documentation of the migration

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

details.add("pekko.remote.artery.canonical.hostname=" + (StringUtils.isNotBlank(host) ? host : "127.0.0.1"));
details.add("pekko.remote.artery.canonical.port=" + (StringUtils.isNotBlank(port) ? port : "25520"));

return ConfigFactory.parseString(StringUtils.join(details, ","));
Copy link

Copilot AI Nov 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The HOCON configuration format requires newlines or proper delimiters between properties, not commas. Using commas as delimiters will cause parsing errors. Change StringUtils.join(details, \",\") to StringUtils.join(details, \"\\n\") to properly format the configuration string.

Suggested change
return ConfigFactory.parseString(StringUtils.join(details, ","));
return ConfigFactory.parseString(StringUtils.join(details, "\n"));

Copilot uses AI. Check for mistakes.
Deeksha1502 and others added 3 commits November 11, 2025 17:33
fix: Add support for multiple cloud storage types and update dependencies for compatibility
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants