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();
+ }
}));
});