Rev 36944 |
Last modification |
Compare with Previous |
View Log
| RSS feed
Last modification
- Rev 37100 2026-07-16 15:14:36
- Author: amit
- Log message:
- Simplify HDFC push-credits: drop Redis, store only credited payments
- Remove the Redis UTR lock entirely. It was redundant with the DB
UNIQUE(utr) + INSERT IGNORE dedup, and actively harmful: a concurrent
HDFC retry hit the Redis lock, got acked 'Duplicate', and stopped
retrying while the original rolled back on a wallet lock conflict --
losing the credit (4 lost credits Jul-11..15, all recovered manually).
- Store ONLY credited payments. Missing/unmatched-VA transfers are internal
onboarding virtual accounts reconciled via the separate account-entries
ledger, so they are no longer captured here. Removes the merely-captured
row states and the credited-vs-captured ambiguity.
- Drop the lock-conflict rethrow / isLockConflict helper. A credit failure
now simply propagates -> class @Transactional(rollbackFor=Throwable)
rolls the row back -> HDFC's own retry re-credits cleanly (no Redis lock
to swallow the retry).
Dedup now: manual-approval check + selectByUtrNo (a stored row means
credited) + INSERT IGNORE for the concurrent-retry race.