Hi all,

I have opened a pull request with a fix for the Execute Standing
Instruction job and need a FINERACT JIRA issue to reference in the commit
and PR title. I don't have an ASF JIRA account yet. Could someone create
the ticket, or approve an account request so I can file it myself?

PR: https://github.com/apache/fineract/pull/6806
<https://www.google.com/url?q=https://github.com/apache/fineract/pull/6806&source=gmail&ust=1793720180688000&sa=E>

*Problem:*
When several standing instructions fall due on the same business date, the
job runs them all in one transaction. One failing instruction (for example,
insufficient balance) rolls back every other instruction's transfer and
history row, including the failed row itself. In addition, the history
INSERT is built by string concatenation, so an apostrophe in the error text
breaks the SQL, and the amount is written via doubleValue(), which loses
precision.

*Fix:*

   - Each instruction runs in its own transaction, and the job still
   reports the run as failed.
   - History rows use bound parameters and the exact BigDecimal amount;
   error text is truncated to the column length.
   - A read-only lastRunDate field on the standing instruction API, used by
   the integration test.

*Tests:* a PostgreSQL integration test covering success, failed and partial
outcomes in one run, plus Testcontainers-backed tests for the apostrophe,
exact-amount and long-error cases. All fail on the current code and pass
with the fix.

Suggested title: Execute Standing Instruction: one failed instruction rolls
back all others in the run

Thanks,
Venkat Kommi

Reply via email to