DeathGun44 commented on PR #5432:
URL: https://github.com/apache/fineract/pull/5432#issuecomment-3832702129

   Hi @vidakovic, thanks for the review.
   
   I investigated using `spring.task.execution.*` as suggested. While those 
properties 
   correctly auto-configure a 
[TaskExecutor](cci:2://file:///home/deathgun/fineract/fineract-core/src/main/java/org/apache/fineract/infrastructure/core/config/FineractProperties.java:295:4-306:5)
 for `@Async` and related infrastructure, 
   they don't fully address the requirement here for two reasons:
   
   **1. Synchronous by default**  
   From the [Spring Boot 
docs](https://docs.spring.io/spring-boot/reference/features/task-execution-and-scheduling.html):
   > "The auto-configured AsyncTaskExecutor is used for: Execution of 
asynchronous tasks 
   > using @EnableAsync, Spring MVC, Spring WebFlux, Spring WebSocket, JPA 
bootstrap..."
   
   `SimpleApplicationEventMulticaster` is not in that list. Per the 
   [Spring Framework 
JavaDoc](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/event/SimpleApplicationEventMulticaster.html#setTaskExecutor(java.util.concurrent.Executor)):
   > "Default is equivalent to SyncTaskExecutor, executing all listeners 
synchronously 
   > in the calling thread."
   
   Unless `setTaskExecutor()` is explicitly called, event listeners run 
synchronously.
   
   **2. Security context propagation**  
   Spring Boot's auto-configured executor is not wrapped with 
`DelegatingSecurityContextAsyncTaskExecutor`, 
   nor is it associated with the event multicaster—both of which are required 
for correct 
   async event handling in Fineract.
   
   Because of this, a properties-only solution isn't sufficient. That said, I'm 
happy to 
   refactor the configuration to use Spring Boot's 
`ThreadPoolTaskExecutorBuilder`, so we 
   can still honor the standard `spring.task.execution.*` pool sizing 
properties while 
   explicitly wrapping the executor for security and wiring it into the 
multicaster.
   
   Does that approach work for you?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to