← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 715418] [NEW] [5.x] ir.cron - simultaneous start of cron jobs

 

Public bug reported:

We have not checked if this is fixed in v6

Batch-jobs defined via ir_cron may be started simultaneously/concurrently.
(We have seen up to 17 identical executions of the same job)

/base/ir/ir_cron.py starts timer (via netsvc.startTimer) without 
checking, whether there is already a timer started for the same point in 
time (or: without removing such simultaneous timers).
Hence, ir_cron._poolJobs will be invoked several times simultaneously.

I suggest to maintain a list of timers in /base/ir/ir_cron.py which 
inhibits duplicate timers.
Alternatively "duplicate" timers could be removed - although this might 
be difficult to implement.
Such a mechanism could also be implemented within netsvc.startTimer - on 
the other hand: simultaneous jobs can also be useful (outside ir_cron).

When are jobs "simultaneous"?
I suggest to implement a "time-granularity" which is less or equal the 
smallest granularity of ir_cron-Jobs, i.e. "minutes".
To be on the safe side for long-running jobs, the time-granularity may 
also be the shortest interval currently defined via ir_cron (e.g. 10 
minutes).

any ideas ?

** Affects: openobject-server
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/715418

Title:
  [5.x] ir.cron - simultaneous start of  cron jobs

Status in OpenERP Server:
  New

Bug description:
  We have not checked if this is fixed in v6

  Batch-jobs defined via ir_cron may be started simultaneously/concurrently.
  (We have seen up to 17 identical executions of the same job)

  /base/ir/ir_cron.py starts timer (via netsvc.startTimer) without 
  checking, whether there is already a timer started for the same point in 
  time (or: without removing such simultaneous timers).
  Hence, ir_cron._poolJobs will be invoked several times simultaneously.

  I suggest to maintain a list of timers in /base/ir/ir_cron.py which 
  inhibits duplicate timers.
  Alternatively "duplicate" timers could be removed - although this might 
  be difficult to implement.
  Such a mechanism could also be implemented within netsvc.startTimer - on 
  the other hand: simultaneous jobs can also be useful (outside ir_cron).

  When are jobs "simultaneous"?
  I suggest to implement a "time-granularity" which is less or equal the 
  smallest granularity of ir_cron-Jobs, i.e. "minutes".
  To be on the safe side for long-running jobs, the time-granularity may 
  also be the shortest interval currently defined via ir_cron (e.g. 10 
  minutes).

  any ideas ?





Follow ups

References