Hi everyone!
I need to cancel my task without retry. I call CancelProcessing for this.
CancelProcessing calls task's cancel function. At my handler I do this:
select {
case <-ctx.Done():
return asynq.SkipRetry
case:
...
}
But this does no effect as far as at processor.go at
select {
case <-p.abort:
// time is up, push the message back to queue and quit this worker goroutine.
p.logger.Warnf("Quitting worker. task id=%s", msg.ID)
p.requeue(lease, msg)
return
case <-lease.Done():
cancel()
p.handleFailedMessage(ctx, lease, msg, ErrLeaseExpired)
return
case <-ctx.Done():
p.handleFailedMessage(ctx, lease, msg, ctx.Err())
return
case resErr := <-resCh:
if resErr != nil {
p.handleFailedMessage(ctx, lease, msg, resErr)
return
}
p.handleSucceededMessage(lease, msg)
}
case <-ctx.Done() read from channel occurs before case resErr := <-resCh
And due to this we have no opportunity to skip retry when publish cancelation, is this right?
Hi everyone!
I need to cancel my task without retry. I call
CancelProcessingfor this.CancelProcessingcalls task'scancelfunction. At my handler I do this:But this does no effect as far as at
processor.goatcase <-ctx.Done()read from channel occurs beforecase resErr := <-resChAnd due to this we have no opportunity to skip retry when publish cancelation, is this right?