You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Abhishek Chaudhary (Jira)" <ji...@apache.org> on 2026/10/11 11:10:00 UTC
[jira] [Updated] (FINERACT-2916) Post Interest For Savings and Recalculate Interest For Loans jobs report success when worker threads fail
[ https://issues.apache.org/jira/browse/FINERACT-2916?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Abhishek Chaudhary updated FINERACT-2916:
-----------------------------------------
Priority: Major (was: Blocker)
> Post Interest For Savings and Recalculate Interest For Loans jobs report success when worker threads fail
> ---------------------------------------------------------------------------------------------------------
>
> Key: FINERACT-2916
> URL: https://issues.apache.org/jira/browse/FINERACT-2916
> Project: Apache Fineract
> Issue Type: Bug
> Components: Job Scheduler, Loan, Savings
> Affects Versions: 1.15.0
> Reporter: Abhishek Chaudhary
> Priority: Major
> Fix For: 1.16.0
>
>
> Both jobs split the work across worker threads. The workers ({{SavingsSchedularInterestPoster}}, {{RecalculateInterestPoster}}) collect per-account errors and throw {{JobExecutionException}}. The tasklets' {{checkCompletion}} catches the resulting {{ExecutionException}}, only logs it, and the step finishes with status COMPLETED. {{InterruptedException}} is also swallowed without restoring the thread's interrupt flag.
> In Post Interest For Savings, one failing account skips the batch update for every account in its sub-batch (up to {{batch-size}}, default 100). Interest is not posted for any of them, and the job history still reports success, so operators have no signal. The Recalculate Interest For Loans job behaves the same way when run with {{officeId}}, while its branch without {{officeId}} does throw {{JobExecutionException}}. The swallowing came with the multithreaded rewrite of the savings job (FINERACT-1442).
> *Expected:* after all workers finish, the tasklet throws {{JobExecutionException}} with the collected worker failures so the job is marked FAILED, and the interrupt flag is restored.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)