This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 134b097a5e FINERACT-2181: Added threadlocal context reset during 
parallel accrual processing
134b097a5e is described below

commit 134b097a5e8c08f3851f7ef9855034ece59c8ccf
Author: Arnold Galovics <[email protected]>
AuthorDate: Wed Mar 26 10:32:18 2025 +0100

    FINERACT-2181: Added threadlocal context reset during parallel accrual 
processing
---
 .../service/LoanAccrualsProcessingServiceImpl.java | 30 ++++++++++++----------
 1 file changed, 17 insertions(+), 13 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
index 553add8a4d..2e566a4b57 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
@@ -161,19 +161,23 @@ public class LoanAccrualsProcessingServiceImpl implements 
LoanAccrualsProcessing
 
         loans.forEach(outerLoan -> {
             loanTasks.add(taskExecutor.submit(() -> {
-                ThreadLocalContextUtil.init(context);
-                transactionTemplate.executeWithoutResult(status -> {
-                    Loan loan = 
loanRepositoryWrapper.findOneWithNotFoundDetection(outerLoan.getId());
-                    setSetHelpers(loan);
-                    try {
-                        log.debug("Adding accruals for loan '{}'", 
loan.getId());
-                        addAccruals(loan, tillDate, false, false, true);
-                        log.debug("Successfully processed loan: '{}' for 
accrual entries", loan.getId());
-                    } catch (Exception e) {
-                        log.error("Failed to add accrual for loan {}", 
loan.getId(), e);
-                        throw new RuntimeException("Failed to add accrual for 
loan " + loan.getId(), e);
-                    }
-                });
+                try {
+                    ThreadLocalContextUtil.init(context);
+                    transactionTemplate.executeWithoutResult(status -> {
+                        Loan loan = 
loanRepositoryWrapper.findOneWithNotFoundDetection(outerLoan.getId());
+                        setSetHelpers(loan);
+                        try {
+                            log.debug("Adding accruals for loan '{}'", 
loan.getId());
+                            addAccruals(loan, tillDate, false, false, true);
+                            log.debug("Successfully processed loan: '{}' for 
accrual entries", loan.getId());
+                        } catch (Exception e) {
+                            log.error("Failed to add accrual for loan {}", 
loan.getId(), e);
+                            throw new RuntimeException("Failed to add accrual 
for loan " + loan.getId(), e);
+                        }
+                    });
+                } finally {
+                    ThreadLocalContextUtil.reset();
+                }
             }));
         });
 

Reply via email to