Subversion Repositories SmartDukaan

Rev

Show changed files | Details | Compare with Previous | Blame | RSS feed

Filtering Options

Rev Age Author Path Log message Diff
36372 3 d 13 h amit /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ Wallet: SELECT FOR UPDATE on user_wallet mutations to close lost-update hole

addAmountToWallet/consumeAmountFromWallet(x2)/rollbackAmountFromWallet all
follow a read-modify-write pattern on user_wallet with no pessimistic lock
and no @Version, so two concurrent tx for the same partner both read the
same pre-snapshot amount, compute their own deltas, and commit - the second
UPDATE silently overwrites the first's credit/debit. user_wallet_history
still gets both rows, so balance drifts vs sum(history) with no exception.

Replaces the misnamed (and body-broken) selectByIdForUpdate - whose
implementation was a plain selectById, not a lock - with a new
selectByRetailerIdForUpdate that issues SELECT ... FOR UPDATE via
LockModeType.PESSIMISTIC_WRITE, mirroring the idiom already used in
GenericRepositoryImpl.selectByIdForUpdate and OrderRepositoryImpl.
Preserves the create-on-missing behavior of selectByRetailerId so
first-time partners keep working.

Switches the four read-modify-write call sites in WalletServiceImpl from
selectByRetailerId to the new locking variant. Read-only callers
(getUserWalletByUserId, getUserWalletHistoryByUserId, etc.) keep using
the non-locking selectByRetailerId - MVCC snapshot reads stay non-blocking
for display/statement endpoints.

Also drops the stale commented-out selectByIdForUpdate line in
rollbackAmountFromWallet and removes the broken method from the
UserWalletRepository interface / impl - it had zero live callers.

Blast radius: every write call to these three wallet methods now holds
an X-lock on the target user_wallet row for the rest of the outer tx.
Concurrent write tx for the same partner will briefly serialize at the
SELECT FOR UPDATE - correct serialization instead of silent drift.
Read-only traffic is unaffected (MVCC).
 
36305 8 d 18 h amit /trunk/profitmandi-dao/src/main/ Batch processing infrastructure + per-partner offer processing + partner limit optimization + investment cache eviction on billing/payment/cancellation with 3hr TTL  
35828 63 d 11 h amit /trunk/ Optimize order creation: reduce DB queries, fix Hibernate batching, move filters to SQL  
34966 235 d 7 h amit /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Removed wallet Credit  
34752 297 d 2 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ Fixed Activation Scheme Logic  
34674 313 d 9 h aman.kumar /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/ show the partner name when wallet amount is not sufficient on bulk order  
34575 345 d 9 h vikas.jangra /trunk/ Liquidation/Bidding auto approval  
34261 419 d 10 h tejus.lohani /trunk/ Give (a pending,approved,reject)add-wallet-req report  
33861 565 d 11 h tejus.lohani /trunk/ check fullStockPayment and orderDispatch and auto mark billing and fullstock payment  
33848 569 d 3 h tejus.lohani /trunk/ fix bm approval flow - loi generate after approval  
33845 569 d 13 h tejus.lohani /trunk/ new flow of Onboarding process and wod-fin report ,  
33547 661 d 5 h tejus.lohani /trunk/ changes in Max negative wallet value  
33421 695 d 4 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added amount  
33247 737 d 12 h ranu /trunk/ warehouse billing phase one and added signature exception  
33194 748 d 13 h amit.gupta /trunk/ Added 10K for Referral  
33180 753 d 11 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ patch for  
33172 758 d 10 h tejus.lohani /trunk/ add bulk order service in admin dashboard  
32871 829 d 9 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ AA  
32494 941 d 12 h amit.gupta /trunk/ Merged changes related to Smartdukaan  
31921 1087 d 11 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/ Fixed scheme depenedncy issue  

Show All