Modernize Grails async integration for Spring Boot 4.1 - #16230
Modernize Grails async integration for Spring Boot 4.1#16230codeconsole wants to merge 10 commits into
Conversation
|
Follow-up on the legacy async-library integrations: the current PR does not remove them. The branch still builds, publishes, documents, and discovers these optional PromiseFactory implementations through
None of these libraries is required for Recommended disposition:
Removing all four adapters would leave a single supported JDK/Spring implementation while retaining the This is a user-visible breaking change because these modules are published artifacts, so it should be documented in the Grails 8 release and migration notes. It also requires a broader repository review: |
This comment has been minimized.
This comment has been minimized.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## 8.0.x #16230 +/- ##
==================================================
+ Coverage 54.1599% 54.2019% +0.0420%
+ Complexity 20316 20301 -15
==================================================
Files 2107 2101 -6
Lines 101132 101026 -106
Branches 17920 17913 -7
==================================================
- Hits 54773 54758 -15
+ Misses 38551 38466 -85
+ Partials 7808 7802 -6
🚀 New features to boost your workflow:
|
Summary
CompletableFutureimplementation while retaining the existingPromiseandPromiseFactoryAPIs.applicationTaskExecutor, including Boot lifecycle management, graceful shutdown, pool configuration, virtual-thread support, and composed task decorators.applicationTaskExecutor.CompletionStageinstances, so operations such asthenApplyAsynccontinue using Boot's managed executor; useCompletableFuture.supplyAsyncfor task submission and expose the Java 21Futurestate and immediate-result APIs naturally.GrailsWebRequestthrough a SpringTaskDecoratorand remove the legacy web-promise decorator pipeline from the active execution path.StandardServletAsyncWebRequest,DeferredResult, andWebAsyncManagerfor controller async lifecycle, completion, dispatch, timeout, and exception processing.ServiceLoader.LOC
The deprecated total includes 863 physical lines in public APIs marked
@Deprecated(forRemoval = true)and 155 lines in the internalFutureTaskChildPromise, which is only required by the deprecated FutureTask implementation.Verification
grails-async-core,grails-async,grails-web-url-mappings, andgrails-spring-securitytest suites pass.ConfigLoadingSpecpasses without Boot'sapplicationTaskExecutor.