Subversion Repositories SmartDukaan

Rev

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

Filtering Options

Rev Age Author Path Log message Diff
36372 6 d 11 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 11 d 16 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 66 d 9 h amit /trunk/ Optimize order creation: reduce DB queries, fix Hibernate batching, move filters to SQL  
34966 238 d 6 h amit /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Removed wallet Credit  
34752 300 d 0 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ Fixed Activation Scheme Logic  
34674 316 d 7 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 348 d 7 h vikas.jangra /trunk/ Liquidation/Bidding auto approval  
34261 422 d 8 h tejus.lohani /trunk/ Give (a pending,approved,reject)add-wallet-req report  
33861 568 d 9 h tejus.lohani /trunk/ check fullStockPayment and orderDispatch and auto mark billing and fullstock payment  
33848 572 d 1 h tejus.lohani /trunk/ fix bm approval flow - loi generate after approval  
33845 572 d 11 h tejus.lohani /trunk/ new flow of Onboarding process and wod-fin report ,  
33547 664 d 3 h tejus.lohani /trunk/ changes in Max negative wallet value  
33421 698 d 2 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added amount  
33247 740 d 10 h ranu /trunk/ warehouse billing phase one and added signature exception  
33194 751 d 11 h amit.gupta /trunk/ Added 10K for Referral  
33180 756 d 9 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ patch for  
33172 761 d 8 h tejus.lohani /trunk/ add bulk order service in admin dashboard  
32871 832 d 7 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ AA  
32494 944 d 10 h amit.gupta /trunk/ Merged changes related to Smartdukaan  
31921 1090 d 9 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/ Fixed scheme depenedncy issue  
31521 1184 d 7 h amit.gupta /trunk/ Change Cutoff investment to 40
and MIN_INVESTMENT_PERCENT to 20
 
31420 1209 d 5 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Fixed net availability to SaholicCIS Table  
30998 1305 d 5 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Can now pay for Damage protection even when insufficient wallet. Wallet is allowed to go negative in this case.  
30889 1343 d 7 h amit.gupta /trunk/ Fixed commit  
30748 1374 d 13 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added scheme in processing for specified scheme ids  
30747 1374 d 13 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Recharge not allowed for low insvestments  
30744 1375 d 5 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added scheme in processing for specified scheme ids  
30743 1375 d 5 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added scheme in processing for specified scheme ids  
30742 1375 d 5 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added scheme in processing for specified scheme ids  
30741 1375 d 6 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added scheme in processing for specified scheme ids  
30740 1375 d 6 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/ Added scheme in processing for specified scheme ids  
30677 1402 d 4 h amit.gupta /trunk/ Added scheme in processing for specified scheme ids  
30449 1441 d 8 h amit.gupta /trunk/ Added Offer Changes  
30066 1529 d 5 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ Fixed logic to purchase/sales based value  
30025 1535 d 9 h amit.gupta /trunk/ Added notification for all credit  
29538 1643 d 7 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/  
29498 1645 d 10 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/  
28596 1753 d 5 h amit.gupta /trunk/ Added logic to get closing of all retailers.  
28518 1769 d 6 h amit.gupta /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/wallet/  
28241 1837 d 13 h amit.gupta /trunk/ Added changes to handle Partner payments online