| Rev |
Age |
Author |
Path |
Log message |
Diff |
| 37731 |
17 d 7 h |
amit |
/trunk/profitmandi-dao/src/main/ |
Remove dead third-party integrations: dao
Nothing removed here had a live caller. No tables are touched.
- Toffee Insurance client + models, and the tofee.* keys in shared-*.properties
- Bharti Assist (BAG) service and its certificate/brand models. BagPlanModel
and PlanVariant stay in bharti/model: OneAssist and ICICI Lombard use them.
- Private, uncalled Toffee/BAG request builders in InsuranceServiceImpl
- Wiseapp insurance client and ZestResponseModel
- SmartPing client. CallDetailModel and PushCallLogModel move to
kommuno/model because the Knowlarity webhooks still parse them.
- SpiceMoney SSO (2-partner pilot), Thriwe stub + DTOs, DTDC/Shipsy (demo
URLs only), Blue Dart SOAP stubs, legacy Pine Labs v1 client
- FundFina pre-approval entity/repository, HyperTrack key entity/repository,
affiliate Click entity/repository
- Speqtra SMS constant; aramex.tracking.url keys
- PAYU PAY entry in payment-options.json
Gateway.MANDII and Gateway.FUNDFINA stay: historical fofo.payment rows. |
|
| 37706 |
20 d 15 h |
amit |
/trunk/ |
cart: take the cart row before any line, to break a lock-ordering deadlock
InnoDB was rolling back cart edits with "Deadlock found when trying to get lock"
(GlitchTip #53, 27 deadlocks) and losing others to OptimisticLockException
"actual row count: 0; expected: 1" (11 issues, 42 events). Both are the same cause.
Two request paths took the same two rows in OPPOSITE orders. Adding a line INSERTs
into user.line, and line_cart_id_fk shared-locks the parent cart FIRST, line second.
Validation/hydration mutated the line rows FIRST and wrote cart.total_price second.
Run those concurrently on one cart and it is a cycle. Caught in the act on prod:
T1: INSERT user.line (cart_id=175180781) -> holds S on cart, waits S on line
T2: UPDATE user.cart SET total_price=269340.0, version=175 WHERE version=174
-> holds X on line, waits X on cart
*** WE ROLL BACK TRANSACTION (1)
Fix is to give every mutating path one order: cart, then lines. CartRepository gains
selectByIdForUpdate, and it is called as the first statement of each path that writes
a cart line. Re-taking it inside one request is a no-op.
A lock-ordering fix is all-or-nothing -- one path in the wrong order is enough to
re-form the cycle -- so this covers ALL TEN cart-line writers, not just the two that
happened to show up in the stack traces: createCartItem, clearCart, getCartValidation,
addItemsToCart (x2), addShoppingBag, validateForOpen (x2) and V2BillingController's
bind/unbindInsurance. The audit is worth re-running before adding another writer.
Note validateForOpen and getCartValidation WRITE despite their names (they correct
cart_line quantity/price and roll up cart.total_price), which is why a "validate" call
was ever holding write locks. The lock is placed accordingly; making those genuinely
read-only is a separate, larger change.
This also serialises concurrent edits to the SAME cart, which is what the @Version
column on Cart was already trying and failing to express. Different carts are
different rows, so there is no cost across partners. |
|
| 37664 |
22 d 1 h |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/ |
loi new revival process |
|
| 37660 |
22 d 1 h |
ranu |
/trunk/ |
ticket download option given and some enhancement on notification panel |
|
| 37648 |
22 d 10 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
Retire user.counter / user.privatedealuser write path
Partner GST moved to fofo.fofo_store.gst_number in the Feb-2026 migration; counter.gstin
has had no reader since (Counter.getGstin() had no callers) and privatedealuser is only
read to decide its own insert-vs-update. Both were write-only bookkeeping.
- RetailerServiceImpl: drop createPrivateDealUser/createCounter and their two call sites
- MigrationUtil.migrateUserToRetailer: drop the same legacy block
- Delete Counter / PrivateDealUser / PrivateDealUserAddressMapping entities + repositories
No reader is affected: the 240 Reportico reports on static0 reference neither table
(the 'counter' hits are fofo_store.counter_size). Tables stay in place until this is
deployed, then get renamed out of the way. |
|
| 37344 |
51 d 3 h |
vikas |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/user/ |
Beat Journey: LoiFormRepository.selectMaxApprovedAcquiredDateByBdm() — max approved-LOI acquiredDate per BDM, powering the board 'Onboarded' column (store.active_timestamp is null for all stores).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
|
| 37264 |
60 d 2 h |
ranu |
/trunk/ |
rbm assignement event and new edm mail committed |
|
| 37112 |
84 d 2 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/ |
Source trial-registration GST duplicate check from fofo_store instead of counter/privatedealuser: add FofoStoreRepository.existsByGstNumber, remove now-dead PrivateDealUserRepository.isActiveByGst (last reader of Counter.gstin) |
|
| 37110 |
84 d 2 h |
aman |
/trunk/ |
Business-agreement e-sign gate between Full Stock Payment and PO creation
New AGREEMENT_ESIGN onboarding stage, verified by Legal (Gaurav Sharma):
- Hard-blocks first PO creation until the e-sign is verified (BulkOrderService),
mirroring the existing Full Stock Payment block.
- Agreement E-Sign panel (Partner Acquisition menu) listing FSP-done partners who
have not yet created their first PO: upload signed agreement + Gaurav-only verify.
- New agreement_esign table/entity + repository for the signed doc and audit trail.
- Timeline grid column + stepper stage for the new event.
Prod DB (separate, with sign-off): CREATE TABLE user.agreement_esign;
INSERT auth.menu + auth.menu_category rows for the panel. |
|
| 37102 |
84 d 4 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
Remove dead Counter/PrivateDealUser code: drop unused isFofo, bulkShipmentAmountLimit, verifiedOn, documentVerified fields and accessors; remove dead selectByIds repo methods; drop redundant Counter/PrivateDealUser repository injections in OrderServiceImpl and InvoiceService |
|
| 36376 |
167 d 3 h |
aman |
/trunk/ |
Feat:Cart Api Implementation |
|
| 36284 |
175 d 0 h |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
code optimization of today po rbm page |
|
| 36242 |
181 d 0 h |
aman |
/trunk/ |
Fix:Attachment is Full-stock payment approval ,Timeline ui graphical summary, wod initianl mail after store code creation |
|
| 36064 |
196 d 23 h |
aman |
/trunk/ |
Fix:FULL_Stock flow , fin service mark unapplicable ,send invoice to whatsapp by default, update contact list ,Training mail issue |
|
| 35971 |
213 d 0 h |
aman |
/trunk/ |
Feat : Loi 2.0 Enhancement and redesigning |
|
| 35947 |
216 d 6 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/ |
Revert r35945: undo cart pessimistic locking (will re-apply after testing) |
|
| 35945 |
216 d 8 h |
amit |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/ |
Add pessimistic locking to cart operations to prevent deadlocks; add updateCartItem, removeCartItem, getCartItems methods |
|
| 35762 |
237 d 22 h |
ranu |
/trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ |
rbm calls date wise filter given |
|
| 35702 |
241 d 1 h |
ranu |
/trunk/ |
now recording also fetching |
|
| 35499 |
283 d 1 h |
aman |
/trunk/ |
Fix:Trial Activation Mail, All trial user page and gst validation |
|