- 11 Mar, 2019 40 commits
-
-
Arnaud Fontaine authored
This also avoids KeyError exceptions when Activities have already been processed in the meantime.
-
Arnaud Fontaine authored
In contrary to the ParentDeliveryPropertyMovementGroup for property, it has never actually checked the parent Delivery but the current one.
-
Arnaud Fontaine authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
As a matter of fact immediateReindexObject doesn't call reindexObject on the object
-
Cédric Le Ninivin authored
buidler: Add tmp fix/workaround on movement order builder: Use periodicity to determinate start date builder mixin: Take into account supply date range before create movement builder: Hackish immediate reindex of order to work for parallel build builder: use dedicated script to evaluate min stock builder: autoPlan only if possible builder: Reference of order line is reference of resource line builder: include order delay and effective date builder: fixup add missing part for effective date builder: Tweak and fix supply builder builder: Fixup supply builder builder: immediate reindex delivery on creation builder: use _edit on delivery to only reindex modification builder: Supply builder work with period builder: Supply builder improved builder: use flow unit for min stock calculation builder: Supply Builder Fix future inventory for parts not activated yet builder: Supply builder do not create movement for resources that won't be consumed in the future
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
SimulationTool: getNextAlertInventoryDate can look for the lowest invetory inferior to the reference quantity
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Cédric Le Ninivin authored
-
Yusei Tahara authored
-
Yusei Tahara authored
-
Tristan Cavelier authored
Update relation field input value only on demand, changing the state of a relation_input gadget with value_text = "" now updates the field. You can reproduce by doing : - open an object in tab "View" with a relation field (eg my_successor_title) filled - open a new tab, and edit the field to make it empty - from the first tab, refresh the view by click on the left panel "View" tab - the relation field should be emptied.
-
Romain Courteaud authored
Prevent "cannot read property of undefined" errors on the JS side.
-
Romain Courteaud authored
Follow nexedi/erp5@1664e541
-
Romain Courteaud authored
This is not a notebook (as it does not provide a "live" editing functionnality). It is only used to trigger the calculation and view the result. Except for the JSMD format, this code is not related to iodide. Python plugins are not supported for now.
-
Romain Courteaud authored
This is unreadable
-
Tristan Cavelier authored
-
Romain Courteaud authored
Allow to query the catalog with the group_by parameter.
-
Romain Courteaud authored
Better have no highlight than incorrect one
-
Ayush Tiwari authored
-
Yusei Tahara authored
-
Sebastien Robin authored
This is much more convenient to understand stock value at a given point in time
-
Łukasz Nowak authored
As leaving close_fds=False can result in subtle bugs (see http://zderadicka.eu/subtle-evil-of-close_fds-parameter-in-subprocess-popen/ ) close descriptors before launching anything with ProcessManager, especially useful for starting things like supervisord. /reviewed-on nexedi/erp5!841
-
Jérome Perrin authored
This solves the race condition that leaves stdout as a StringIO when this is executed twice in parrallel ( #20180928-1D89375 ) But this prints No config file found, using default configuration on sys.stderr at every execution, but that's acceptable. Once we update pylint, we can disable this warning by setting verbose=false ( this is not yet available on pylint 1.4.4 ) /reviewed-on nexedi/erp5!758
-
Sebastien Robin authored
-
Sebastien Robin authored
supervirord when stopping might need several seconds to kill properly sub processes. So give him some time before killing more brutaly with killall. This should solve issue with functional tests are not working due to apache not starting. Apache when killed to brutally let unclosed semaphore, and after some time, we have too many semaphore to start new apache, making functional tests failing.
-
Julien Muchembled authored
In this specific case, the number of grouped messages is bound, and actually not greater than the number of grouped messages being processed for normal indexing.
-
Julien Muchembled authored
-
Julien Muchembled authored
The goal is to make better use of the ZODB Storage cache. It is common to do processing on a data set in several sequential transactions: in such case, by continuing execution of these messages on the same node, data is loaded from ZODB only once. Without this, and if there are many other messages to process, processing always continue on a random node, causing much more load from ZODB. To prevent nodes from having too much work to do, or too little compared to other nodes, this new parameter is only a hint for CMFActivity. It remains possible for a node to execute a message that was intended for another node. Before this commit, a processing node selects the first message(s) according to the following ordering: priority, date and now: priority, node_preference, date where node_preference is: -1 -> same node 0 -> no preferred node 1 -> another node The implementation is tricky for 2 reasons: - MariaDB can't order this way in a single simple query, so we have 1 subquery for each case, potentially getting 3 times the wanted maximum of messages, then order/filter on the resulting union. - MariaDB also can't filter efficiently messages for other nodes, so the 3rd subquery returns messages for any node, potentially duplicating results from the first 2 subqueries. This works because they'll be ordered last. Unfortunately, this requires extra indices. In any case, message reservation must be very efficient, or MariaDB deadlocks quickly happen, and locking an activity table during reservation reduces parallelism too much. In addition to better cache efficiency, this new feature can be used as a workaround for a bug affecting serialiation_tag, causing IntegrityError when reindexing many new objects. If you have 2 recursive reindexations for both a document and one of its lines, and if you have so many messages than grouping is split between these 2 messages, then you end up with 2 nodes indexing the same line in parallel: for some tables, the pattern DELETE+INSERT conflicts since InnoDB does not take any lock when deleting a non-existent row. If you have many activities creating such documents, you can combine with grouping and appropriate priority to make sure that such pair of messages won't be executed on different nodes, except maybe at the end (when there's no document to create anymore; then activity reexecution may be enough). For example: from Products.CMFActivity.ActivityTool import getCurrentNode portal.setPlacelessDefaultReindexParameters( activate_kw={'node': 'same', 'priority': priority}, group_id=getCurrentNode()) where `priority` is the same as the activity containing the above code, which can also use grouping without increasing the probability of IntegrityError.
-