Openbravo Issue Tracking System - Modules
|View Issue Details|
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0039786||Modules||Advance Warehouse Operations||public||2018-12-12 09:29||2021-11-08 15:05|
|Priority||normal||Severity||major||Reproducibility||have not tried|
|Target Version||Fixed in Version|
|Merge Request Status|
|Regression introduced by commit|
|Review Assigned To|
|Regression introduced in release|
|Summary||0039786: Too aggressive lock in Batch Of Tasks Generator|
|Description||When running the Task Generator a global lock is created to avoid stock/task generation conflicts. See 0039740 note.|
Although the lock is necessary, maybe it's too aggressive and the scope can be reduced.
For example, right now if you have many warehouses the lock affects to all of them, regardless you're just generating tasks for one of them. That means that if a task generator is running for warehouse A, a task generation in warehouse B must wait till A is finished, regardless it is very unlikely task generator for B consumes stock/bins in warehouse A (except for a Distribution Order or any other external routing related ITT).
I think the minimum scope for the lock must be in the Routing's IRArea From and IRArea To. When you're generating a task, only the stock and bins within the routing are really affected, and the rest of the warehouse can operate without any lock.
For example, if a picking task is being generated for routing with IRAreas "Storage - Shipping", we just need to lock both areas and leave the rest free so, for example, a purchase order reception can safely take place in the "Receipt" area.
This change will require to lock the IRArea From and IRArea To on each task generation and commit the transaction just after the task (and everything around the task, like reservations or capacity) is being created, so both areas are immediately unlocked for the next task generation (that might lock again the same areas or not) and the stock and bins are already updated for the next run.
|Steps To Reproduce||At the same time, create a purchase order reception and a sales order picking. Verify the global lock avoids to run both task generations at the same time. This is not necessary and they can both run at the same time.|
|Proposed Solution||Implement lock at IRA From and IRA To for the calculated routing.|
Commit individually each task generation (and everything around the task, like reservations or capacity).
Verify performance penalty of multiple commits vs a global lock with one commit. Based on the analysis try other lock approaches, like single locking at warehouse.
|Tags||No tags attached.|
|2018-12-12 09:29||vmromanos||New Issue|
|2018-12-12 09:29||vmromanos||Assigned To||=> Triage Finance|
|2018-12-12 09:30||vmromanos||Relationship added||related to 0039740|
|2018-12-12 09:30||vmromanos||Assigned To||Triage Finance => vmromanos|
|2018-12-12 09:30||vmromanos||Status||new => acknowledged|
|2018-12-12 09:58||vmromanos||Proposed Solution updated|
|2020-05-27 13:07||dmiguelez||Relationship added||related to 0044213|
|2021-11-08 15:05||vmromanos||Note Added: 0132893|