Skip to content

Play Framework and Pekko Upgrade - #113

Merged
pallakartheekreddy merged 27 commits into
Sunbird-Lern:release-8.1.0from
Sanketika-Bengaluru:release-8.0.0
Nov 7, 2025
Merged

Play Framework and Pekko Upgrade#113
pallakartheekreddy merged 27 commits into
Sunbird-Lern:release-8.1.0from
Sanketika-Bengaluru:release-8.0.0

Conversation

@sntiwari1

@sntiwari1 sntiwari1 commented Oct 10, 2025

Copy link
Copy Markdown

This PR upgrades the repository from Play Framework 2.7.2 + Akka 2.5.22 + Scala 2.11.12 to Play Framework 3.0.5 + 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: Old Play and Akka versions no longer receive updates
  • Modernization: Access to Play 3.0 and Scala 2.13 features and performance improvements

Dependencies:

  • Play Framework 3.0.5
  • Apache Pekko 1.0.3
  • Scala 2.13.12
  • Java 11/17
  • Jackson 2.14.3
  • SLF4J 2.0.9
  • Logback 1.4.14
  • Netty 4.1.93

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
  • Packaged distribution: mvn play2:dist
  • Verified all modules compile
  • Verified dependency tree to ensure no Akka or Scala 2.12 artifacts remain

Test Configuration:

  • Software versions: Java 11, Play 3.0.5, Scala 2.13.12, Pekko 1.0.3
  • Hardware versions: 2 CPU / 4GB RAM

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
  • Replaced Akka dependencies with Pekko and updated Play/Scala versions

Source Code (15 Java files)

  • Updated Akka import statements to Pekko (akka.*org.apache.pekko.*)
  • Updated files: BaseActor, CertificationActor, controllers, utilities, tests

Configuration

  • application.conf: Updated namespace from akkapekko
  • Logger configurations updated

Play 3.0 API Updates

  • ActorStartModule: AkkaGuiceSupport → PekkoGuiceSupport
  • RequestHandler: Updated FutureConverters for Scala 2.13
  • OnRequestHandler: Removed deprecated Http.Context, using Http.Request
  • Fixed artifact names for Play 3.0 compatibility

Migration Impact

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

Description by Korbit AI

What change is being made?

Upgrade the project from Play Framework 2.7/Akka to Play Framework 3.0 with Apache Pekko, replacing Akka dependencies and package namespaces with Pekko equivalents across code, configuration, and build files.

Why are these changes being made?

To align with Apache-2.0 licensed Pekko (Akka-compatible) and avoid Akka's licensing constraints, while improving security and adopting a modern stack with updated dependencies and runtime (Java 11, Scala 2.13, newer Pekko/Play versions). This upgrade also centralizes Pekko migration in code, config, and build so the system remains API compatible.

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

Copilot AI and others added 10 commits October 7, 2025 13:20
Co-authored-by: sntiwari1 <54884367+sntiwari1@users.noreply.github.com>
Co-authored-by: sntiwari1 <54884367+sntiwari1@users.noreply.github.com>
- Upgraded Play Framework from 2.7.2 to 3.0.5
- Migrated from Akka 2.5.22 to Apache Pekko 1.0.2
- Updated Scala from 2.11.12 to 2.13.12
- Updated Java compiler target from 8 to 11
- Updated dependencies: Jackson 2.14.3, Logback 1.4.14, SLF4J 2.0.9, Netty 4.1.93
- Replaced all Akka imports with Pekko (24 imports across 14 Java files)
- Updated application.conf: akka namespace to pekko
- Fixed Play 3.0 API changes: FutureConverters, Http.Context removal
- Updated ActorStartModule to use PekkoGuiceSupport
- Added Scala library exclusions to prevent version conflicts
- Build successful with all modules compiling

Co-authored-by: sntiwari1 <54884367+sntiwari1@users.noreply.github.com>
Co-authored-by: sntiwari1 <54884367+sntiwari1@users.noreply.github.com>
…ME.md

- Removed 6 detailed documentation files (MIGRATION_INDEX, PLAY_PEKKO_MIGRATION_REPORT, QUICK_REFERENCE, START_HERE, TECHNICAL_ANALYSIS, UPGRADE_SUMMARY)
- Created single UPGRADE_README.md with essential upgrade information
- No icons or symbols used, clean and concise format
- Contains version changes, build instructions, and key migration details

Co-authored-by: sntiwari1 <54884367+sntiwari1@users.noreply.github.com>
Upgrade to Play Framework 3.0.5 and Apache Pekko 1.0.2
@korbit-ai

korbit-ai Bot commented Oct 10, 2025

Copy link
Copy Markdown

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

Removed detailed changes section regarding dependencies, source code, and configuration updates.
@sntiwari1
sntiwari1 changed the base branch from release-8.0.0 to release-8.1.0 October 10, 2025 09:32
@sntiwari1
sntiwari1 marked this pull request as ready for review November 4, 2025 06:03
@korbit-ai

korbit-ai Bot commented Nov 4, 2025

Copy link
Copy Markdown

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

Copilot AI left a comment

Copy link
Copy Markdown

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 upgrades the codebase from Play Framework 2.7.2 with Akka 2.5.22 to Play Framework 3.0.5 with Apache Pekko 1.0.3, addressing license compliance issues (Akka's license change to BSL 1.1) and security concerns with outdated dependencies.

  • Migrated all Akka imports to Apache Pekko across the codebase
  • Upgraded Play Framework from 2.7.2 to 3.0.5, Scala from 2.11.12 to 2.13.12, and Java from 8 to 11
  • Added Scala collection conversion handling for compatibility with Scala 2.13's immutable collections

Reviewed Changes

Copilot reviewed 22 out of 23 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
pom.xml Updated root POM with new version properties for Pekko, Play, Scala, and Java 11 target
service/pom.xml Migrated dependencies from Akka to Pekko, updated Play groupId and artifact names, added Scala dependency exclusions
all-actors/pom.xml Replaced Akka dependencies with Pekko equivalents, added explicit Scala 2.13 dependency and exclusions
sb-es-utils/pom.xml Updated Akka actor dependency to Pekko actor
service/conf/application.conf Updated configuration from Akka to Pekko namespaces, strengthened secret key
service/app/utils/module/ActorStartModule.java Changed from AkkaGuiceSupport to PekkoGuiceSupport
service/app/utils/module/OnRequestHandler.java Removed deprecated Http.Context usage, updated to use Http.Request directly
service/app/controllers/RequestHandler.java Updated FutureConverters import for Scala 2.13 compatibility
service/app/validators/CertAddRequestValidator.java Added Scala collection to Java Map conversion handling
all-actors/src/main/java/org/sunbird/serviceimpl/CertsServiceImpl.java Added Scala collection conversion for request data processing
Multiple actor and controller files Updated imports from akka.actor to org.apache.pekko.actor
UPGRADE_README.md Added comprehensive upgrade documentation
.gitignore Updated to include *.tar.gz pattern

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

Comment thread service/conf/application.conf Outdated
Comment thread service/app/validators/CertAddRequestValidator.java

@korbit-ai korbit-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Review by Korbit AI

Korbit automatically attempts to detect when you fix issues in new commits.
Category Issue Status
Readability Hardcoded CORS Header Value ▹ view
Functionality Actor system migration compatibility risk ▹ view
Functionality Potential API incompatibility between Akka and Pekko ActorRef ▹ view
Security Overly permissive CORS policy ▹ view
Functionality Potential ActorRef type mismatch between Akka and Pekko ▹ view
Design Method Has Multiple Responsibilities ▹ view
Functionality Incomplete Akka to Pekko migration risk ▹ view
Functionality Potential API incompatibility after Akka to Pekko migration ▹ view
Functionality Mixed Akka/Pekko framework usage ▹ view
Functionality Potential runtime compatibility issue with Pekko/Akka migration ▹ view
Files scanned
File Path Reviewed
service/app/utils/module/ActorStartModule.java
all-actors/src/main/java/org/sunbird/service/ICertService.java
service/app/utils/module/SignalHandler.java
service/app/utils/module/OnRequestHandler.java
all-actors/src/main/java/org/sunbird/actor/CertificationActor.java
all-actors/src/main/java/org/sunbird/BaseActor.java
service/app/controllers/BaseController.java
service/app/controllers/CertificateController.java
service/app/controllers/RequestHandler.java
all-actors/src/main/java/org/sunbird/utilities/CertificateUtil.java
service/app/validators/CertAddRequestValidator.java
sb-es-utils/src/main/java/org/sunbird/common/ElasticSearchRestHighImpl.java
sb-es-utils/src/main/java/org/sunbird/common/ElasticSearchHelper.java
all-actors/src/main/java/org/sunbird/serviceimpl/CertsServiceImpl.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

Comment thread service/app/controllers/BaseController.java
Comment thread service/app/utils/module/OnRequestHandler.java
Comment thread service/app/utils/module/OnRequestHandler.java
Comment thread service/app/utils/module/SignalHandler.java
Comment thread all-actors/src/main/java/org/sunbird/service/ICertService.java
Comment thread service/app/utils/module/OnRequestHandler.java
Comment thread service/app/controllers/CertificateController.java
Comment thread all-actors/src/main/java/org/sunbird/actor/CertificationActor.java
sntiwari1 and others added 3 commits November 4, 2025 15:03
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@pallakartheekreddy
pallakartheekreddy merged commit 159f95a into Sunbird-Lern:release-8.1.0 Nov 7, 2025
@korbit-ai

korbit-ai Bot commented Nov 7, 2025

Copy link
Copy Markdown

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

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.

5 participants