From ab5c5c8ae930d6fec6a4257bf3b1a55b59e62d0f Mon Sep 17 00:00:00 2001 From: Stefan Aeschbacher Date: Tue, 26 Nov 2019 18:04:58 +0100 Subject: [PATCH] sleep when retrying to pull external tasks --- processor/processor.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/processor/processor.go b/processor/processor.go index 9d4ebda..45bb772 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -3,10 +3,11 @@ package processor import ( "errors" "fmt" - "github.com/citilinkru/camunda-client-go" "math/rand" "runtime/debug" "time" + + camunda_client_go "github.com/citilinkru/camunda-client-go" ) // Processor external task processor @@ -130,12 +131,18 @@ func (p *Processor) startPuller(query camunda_client_go.QueryFetchAndLock, handl go p.runWorker(handler, tasksChan) } + retries := 0 for { tasks, err := p.client.ExternalTask.FetchAndLock(query) if err != nil { - p.logger(fmt.Errorf("failed pull: %s", err)) + if retries < 60 { + retries += 1 + } + p.logger(fmt.Errorf("failed pull: %s, sleeping: %d seconds", err, retries)) + time.Sleep(time.Duration(retries) * time.Second) continue } + retries = 0 for _, task := range tasks { tasksChan <- task