time out not work

This commit is contained in:
mikespook 2012-06-04 17:20:04 +08:00
parent a142bcff58
commit a980bc5de2
2 changed files with 8 additions and 15 deletions

View File

@ -24,6 +24,7 @@ var (
ErrFuncNotFound = errors.New("The function was not found.")
ErrConnection = errors.New("Connection error.")
ErrNoActiveAgent = errors.New("No active agent.")
ErrExecTimeOut = errors.New("Executing time out.")
)
func DisablePanic() {recover()}

View File

@ -5,7 +5,6 @@
package worker
import (
"time"
"bytes"
"bitbucket.org/mikespook/gearman-go/common"
)
@ -238,6 +237,12 @@ func (worker *Worker) SetId(id string) {
// Execute the job. And send back the result.
func (worker *Worker) exec(job *Job) (err error) {
if worker.limit != nil {
<-worker.limit
defer func() {
worker.limit <- true
}()
}
var limit int
if job.DataType == common.JOB_ASSIGN {
limit = 3
@ -257,20 +262,7 @@ func (worker *Worker) exec(job *Job) (err error) {
if !ok {
return common.Errorf("The function does not exist: %s", funcname)
}
var result []byte
if worker.limit != nil {
select {
case <-worker.limit:
defer func() {
worker.limit <- true
}()
case <-time.After(time.Second * time.Duration(f.timeout)):
err = common.Errorf("The function was executed timeout: %s", funcname)
}
}
if err == nil {
result, err = f.f(job)
}
result, err := f.f(job)
var datatype uint32
if err == nil {
datatype = common.WORK_COMPLETE