[
https://issues.apache.org/jira/browse/FINERACT-2560?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Adam Saghy resolved FINERACT-2560.
----------------------------------
Resolution: Fixed
> NullPointerException in calcInterestTransactionWaivedAmount
> -----------------------------------------------------------
>
> Key: FINERACT-2560
> URL: https://issues.apache.org/jira/browse/FINERACT-2560
> Project: Apache Fineract
> Issue Type: Bug
> Components: Loan
> Reporter: Björn Nilsson
> Priority: Minor
> Fix For: 1.15.0
>
>
> When Fineract processes a bulk repayment that fully pays off a loan, it
> triggers accrual processing on loan closure. The method
> calcInterestTransactionWaivedAmount streams through the loan's
> transaction-to-repayment-schedule mappings and checks if each transaction is
> reversed, is an interest waiver, etc.
> The problem: during the closure event, some mappings have a null
> getLoanTransaction() because the repayment transaction hasn't been fully
> persisted to the database yet. The code calls t.isReversed() on that null
> reference, which throws a NullPointerException.
> The fix adds a tm.getLoanTransaction() != null check before accessing the
> transaction:
> // Before (crashes)
> .filter(tm -> transactionPredicate.test(tm.getLoanTransaction()))
> // After (safe)
> .filter(tm -> tm.getLoanTransaction() != null &&
> transactionPredicate.test(tm.getLoanTransaction()))
> Without it, bulk repayments that close a loan fail with an NPE, leaving the
> loan in an inconsistent state.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)