Subversion Repositories SmartDukaan

Rev

Go to most recent revision | Show changed files | Directory listing | RSS feed

Filtering Options

Rev Age Author Path Log message Diff
36329 90 d 21 h amit /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/service/ Tune rbmWeeklyBilling cache: 2m→5m TTL + sync=true

The RBM weekly billing aggregate query takes ~2s per call (1,924 cumulative hits
on hadb1 = 3,800s DB time). Previously cached for only 2 minutes with no
stampede protection — every 2m window, every concurrent dashboard load ran the
aggregate in parallel and burnt Hikari slots simultaneously.

- 2m → 5m: this is month-level aggregate bucketed by week, doesn't need
sub-minute freshness for an RBM dashboard.
- sync=true: single in-JVM computation per (monthStart, monthEnd) key per
expiry window; concurrent misses wait for the in-flight load instead of
racing to the DB.

fiveMintimeoutCacheManager already exists in CacheConfig:73 (Caffeine, in-memory,
so no Redis/LocalDateTime serialization concerns).
 
36328 90 d 22 h amit /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/repository/transaction/ Remove @Cacheable from getFirstBillingDate — LocalDateTime + Redis incompatibility

The redisOneDayCacheManager (CacheConfig.java:109-116) is configured with
enableDefaultTyping(NON_FINAL, JsonTypeInfo.As.PROPERTY). That embeds type info
as a JSON object property, which is only valid for objects ({}) — not arrays.
JavaTimeModule serializes LocalDateTime as an array ([y,m,d,h,m,s]), so the
write drops type metadata and reads fail with MismatchedInputException
('need JSON String that contains type id').

The underlying NamedQuery (Order.selectFirstBillingByRetailer) uses MIN() on
the idx_order_customer_billing composite index — EXPLAIN reports 'Select tables
optimized away'. Per-call latency is microseconds even uncached, so Redis
caching was optimization rather than requirement. Simpler to drop the annotation
than reconfigure the shared cache manager.
 
36327 91 d 0 h amit /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/ Fix currentinventorysnapshot/currentreservationsnapshot deadlock and optimize getFirstBillingDate

- SaholicInventoryServiceImpl: enforce reservation-snapshot → inventory-snapshot
lock order in addReservationCount and reduceReservationCount via explicit
session.flush(); eliminates the hadb1 deadlock recorded 2026-04-20 19:43:24
between these two methods' opposite-order writes.
- SaholicInventorySnapshot: add @DynamicUpdate so UPDATEs only rewrite the
changed column instead of all three — cuts redo/binlog write amplification
and makes deadlock dumps pinpoint the actual business path.
- TransactionRepositoryImpl.getFirstBillingDate: replace filesort-over-all-billed-
orders with MIN(billingTimestamp) via new Order.selectFirstBillingByRetailer
named query (Select tables optimized away). Preserves 2017-01-01 cutoff and
null-for-unbilled-partner semantics.
- Add @Cacheable on redisOneDayCacheManager keyed by fofoId (unless null) so the
8 call sites stop piling up identical SELECTs on the order table — this was
the query pinning Hikari slots at 150-460s each in recent processlist dumps.
 
36326 91 d 0 h ranu /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/service/ rbm rating dashboard view commited  
36325 91 d 1 h aman /trunk/profitmandi-fofo/src/main/ Fix: Tier-Based Referral Payout  
36324 91 d 1 h aman /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/ Fix: Tier-Based Referral Payout  
36323 91 d 1 h amit /trunk/profitmandi-dao/src/main/resources/ Fix app config  
36322 91 d 14 h vikas /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/ New APIs Version 2  
36321 91 d 14 h vikas /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/ New APIs Version 2  
36320 91 d 18 h vikas /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/web/ CORS update, accept referrer  
36319 91 d 18 h aman /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + Debit Notes) into FOFO  
36318 91 d 18 h aman /trunk/ Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + Debit Notes) into FOFO  
36317 91 d 18 h aman /trunk/profitmandi-common/src/main/java/com/spice/profitmandi/common/model/ Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + Debit Notes) into FOFO  
36316 91 d 18 h aman /trunk/ Fix:Migrate legacy Purchase Return flow (Report + Bulk Create + Debit Notes) into FOFO  
36315 91 d 22 h ranu /trunk/ rbm rating dashboard view commited  
36314 92 d 1 h amit /trunk/profitmandi-dao/src/main/ Fix Dummy warehouse creation defaults and backfill invoice receiveDate

- ensureDummyForBillingRegion: set isAvailabilityMonitored=0, transferDelayInHours=0,
source=0 explicitly; copy logisticsLocation and pincode from billing warehouse
(matches createVendorWarehouse pattern)
- Add SQL to backfill warehouse.invoice.receiveDate from warehouse.purchase.receivedOn
for received invoices where receiveDate is NULL
 
36313 92 d 5 h ranu /trunk/profitmandi-fofo/src/main/webapp/WEB-INF/views/ftl/ rbm rating dashboard view commited  
36312 92 d 5 h ranu /trunk/profitmandi-fofo/src/main/java/com/spice/profitmandi/web/controller/monitors/ rbm rating dashboard view commited  
36311 92 d 5 h ranu /trunk/profitmandi-dao/src/main/java/com/spice/profitmandi/dao/model/ rbm rating dashboard view commited  
36310 92 d 13 h amit /trunk/profitmandi-web/src/main/java/com/spice/profitmandi/web/controller/checkout/ Complete applyColorChange rename: caller + handler method

r36305 renamed OrderServiceImpl.notifyColorChange -> applyColorChange but missed the
caller in this controller and the handler method name. Completes the rename so trunk
compiles. REST endpoint URL /order/notify-color-change is preserved as an external
contract.
 

Show All