Skip to content

Conversation

@hongwei1
Copy link
Collaborator

No description provided.

constantine2nd and others added 15 commits December 11, 2025 15:35
BREAKING CHANGE: Migration from Akka to Apache Pekko 1.1.2

## Key Changes:

### Dependency Migration:
- Replaced Akka 2.6.20 with Apache Pekko 1.1.2
- Updated all imports from com.typesafe.akka to org.apache.pekko
- Updated Jetty from 9.4.50 to 9.4.58 for better Java 17 compatibility

### Actor System Architecture:
- Migrated all actor systems to Pekko
- Fixed critical scheduler initialization conflicts
- Consolidated schedulers to use shared ObpActorSystem.localActorSystem
- Prevented multiple actor system creation during boot

### Scheduler Fixes:
- DataBaseCleanerScheduler: Fixed actor system reference
- DatabaseDriverScheduler: Fixed actor system reference
- MetricsArchiveScheduler: Fixed actor system reference
- SchedulerUtil: Fixed actor system reference
- TransactionRequestStatusScheduler: Fixed actor system reference

### Technical Improvements:
- Resolved 'Address already in use' port binding errors
- Eliminated ExceptionInInitializerError during boot
- Fixed race conditions in actor system initialization
- Maintained all scheduler functionality (MUST-have features preserved)

### Files Modified:
- Core: pom.xml, obp-api/pom.xml
- Actor Systems: ObpActorConfig.scala, ObpActorSystem.scala, ObpLookupSystem.scala
- Connectors: AkkaConnector_vDec2018.scala, CardanoConnector, EthereumConnector
- Schedulers: All scheduler classes updated to use shared actor system
- Utilities: AkkaHttpClient.scala, DynamicUtil.scala, NewStyle.scala

## Testing:
✅ Application starts successfully on port 8080
✅ All schedulers operational with shared actor system
✅ Pekko actor system running on dynamically allocated port
✅ No port binding conflicts or initialization errors
✅ HTTP endpoints responding correctly

## Migration Notes:
- Akka licensing issues addressed by moving to Apache Pekko
- Backward compatibility maintained through Pekko's API compatibility
- All existing connector and scheduling functionality preserved
- Improved stability and reduced memory footprint
Add entry documenting new http4s.host and http4s.port configuration properties added to sample.props.template for controlling obp-http4s-runner bind address.
# Conflicts:
#	obp-api/src/test/resources/frozen_type_meta_data
- Update WebUiPropsTest to assert empty body as JNothing instead of "{}"
- Change response body assertion to use `shouldBe(JNothing)` for proper HTTP 204 handling
- Remove default "{}" placeholder in SendServerRequests when response body is empty
- Return empty string "" instead of "{}" to correctly represent No Content responses
- Add clarifying comment explaining that HTTP 204 should have empty body, not JSON object
- Align test expectations with proper REST semantics for 204 No Content status code
# Conflicts:
#	pom.xml
- Update view ID field references from "id" to "view_id" in getAllSystemViews test
- Update view ID field references from "id" to "view_id" in getOneSystemView test
- Update view ID field references from "id" to "view_id" in getMultipleSystemViews test
- Align test assertions with actual API response schema for system views endpoint
# Conflicts:
#	pom.xml
#	release_notes.md
- Bump Jetty version from 9.4.50.v20250814 to 9.4.58.v20250814
- Ensures latest security patches and bug fixes are included
- Maintains compatibility with existing HTTP4s and Lift configurations
@sonarqubecloud
Copy link

@simonredfern simonredfern merged commit 55ecb64 into OpenBankProject:develop Dec 16, 2025
1 of 2 checks passed
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.

3 participants