fix counter bugs
This commit is contained in:
parent
475f2aa0d0
commit
f61772507f
@ -277,7 +277,14 @@ func (worker *Worker) SetId(id string) {
|
|||||||
|
|
||||||
// inner job executing
|
// inner job executing
|
||||||
func (worker *Worker) exec(inpack *inPack) (err error) {
|
func (worker *Worker) exec(inpack *inPack) (err error) {
|
||||||
|
jobRunned := false
|
||||||
defer func() {
|
defer func() {
|
||||||
|
// decrement job counter in completion of this job
|
||||||
|
worker.Lock()
|
||||||
|
if worker.runningJobs > 0 && jobRunned {
|
||||||
|
worker.runningJobs--
|
||||||
|
}
|
||||||
|
worker.Unlock()
|
||||||
if worker.limit != nil {
|
if worker.limit != nil {
|
||||||
<-worker.limit
|
<-worker.limit
|
||||||
}
|
}
|
||||||
@ -288,19 +295,17 @@ func (worker *Worker) exec(inpack *inPack) (err error) {
|
|||||||
err = ErrUnknown
|
err = ErrUnknown
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if worker.runningJobs > 0 {
|
|
||||||
worker.Lock()
|
|
||||||
worker.runningJobs--
|
|
||||||
worker.Unlock()
|
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
f, ok := worker.funcs[inpack.fn]
|
f, ok := worker.funcs[inpack.fn]
|
||||||
if !ok {
|
if !ok {
|
||||||
return fmt.Errorf("The function does not exist: %s", inpack.fn)
|
return fmt.Errorf("The function does not exist: %s", inpack.fn)
|
||||||
}
|
}
|
||||||
|
jobRunned = true
|
||||||
|
// Job function found, function will be executing now, increment counter
|
||||||
worker.Lock()
|
worker.Lock()
|
||||||
worker.runningJobs++
|
worker.runningJobs++
|
||||||
worker.Unlock()
|
worker.Unlock()
|
||||||
|
|
||||||
var r *result
|
var r *result
|
||||||
if f.timeout == 0 {
|
if f.timeout == 0 {
|
||||||
d, e := f.f(inpack)
|
d, e := f.f(inpack)
|
||||||
|
Loading…
Reference in New Issue
Block a user