From f463ed8c4a46a08ac96938c66ba4b5a700575534 Mon Sep 17 00:00:00 2001 From: Rahul Jayaraman Date: Tue, 24 Apr 2018 15:16:01 +0530 Subject: [PATCH 1/4] update gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c5cfb5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +Gopkg.* +vendor/ From 5b58974acce15841c98ea81543c73014f566db4e Mon Sep 17 00:00:00 2001 From: Rahul Jayaraman Date: Wed, 25 Apr 2018 15:07:57 +0530 Subject: [PATCH 2/4] allow setting max retries for a message set retry to EnqueueOptions.RetryCount fixes: https://github.com/jrallison/go-workers/issues/68 --- enqueue.go | 21 +++++++++++++++++++++ enqueue_test.go | 19 ++++++++++++++----- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/enqueue.go b/enqueue.go index f9af7a8..9fa500e 100644 --- a/enqueue.go +++ b/enqueue.go @@ -21,6 +21,27 @@ type EnqueueData struct { EnqueueOptions } +type EnqueueDataProxy EnqueueData + +func (e EnqueueData) MarshalJSON() ([]byte, error) { + o := e.EnqueueOptions + if e.EnqueueOptions.RetryCount > 0 { + s := struct { + EnqueueDataProxy + Retry int `json:"retry,omitempty"` + At float64 `json:"at,omitempty"` + }{EnqueueDataProxy(e), o.RetryCount, o.At} + return json.Marshal(s) + } + + return json.Marshal(struct { + EnqueueDataProxy + RetryCount int `json:"retry_count,omitempty"` + Retry bool `json:"retry,omitempty"` + At float64 `json:"at,omitempty"` + }{EnqueueDataProxy(e), o.RetryCount, o.Retry, o.At}) +} + type EnqueueOptions struct { RetryCount int `json:"retry_count,omitempty"` Retry bool `json:"retry,omitempty"` diff --git a/enqueue_test.go b/enqueue_test.go index e3a2707..5095921 100644 --- a/enqueue_test.go +++ b/enqueue_test.go @@ -72,8 +72,20 @@ func EnqueueSpec(c gospec.Context) { c.Expect(ea, IsWithin(0.1), nowToSecondsWithNanoPrecision()) }) - c.Specify("has retry and retry_count when set", func() { - EnqueueWithOptions("enqueue6", "Compare", []string{"foo", "bar"}, EnqueueOptions{RetryCount: 13, Retry: true}) + c.Specify("sets RetryCount to `retry`", func() { + EnqueueWithOptions("enqueue6", "Compare", []string{"foo", "bar"}, EnqueueOptions{RetryCount: 13}) + + bytes, _ := redis.Bytes(conn.Do("lpop", "prod:queue:enqueue6")) + var result map[string]interface{} + json.Unmarshal(bytes, &result) + c.Expect(result["class"], Equals, "Compare") + + retry := result["retry"].(float64) + c.Expect(retry, Equals, float64(13)) + }) + + c.Specify("sets Retry correctly when no count given", func() { + EnqueueWithOptions("enqueue6", "Compare", []string{"foo", "bar"}, EnqueueOptions{Retry: true}) bytes, _ := redis.Bytes(conn.Do("lpop", "prod:queue:enqueue6")) var result map[string]interface{} @@ -82,9 +94,6 @@ func EnqueueSpec(c gospec.Context) { retry := result["retry"].(bool) c.Expect(retry, Equals, true) - - retryCount := int(result["retry_count"].(float64)) - c.Expect(retryCount, Equals, 13) }) }) From d98c3f5f81a364fe03a2a4df9b9beb9b7608c647 Mon Sep 17 00:00:00 2001 From: Rahul Jayaraman Date: Wed, 25 Apr 2018 15:10:05 +0530 Subject: [PATCH 3/4] Revert "update gitignore" This reverts commit f463ed8c4a46a08ac96938c66ba4b5a700575534. --- .gitignore | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index c5cfb5f..0000000 --- a/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Gopkg.* -vendor/ From 4399e06a70ee39b4a0babea42d3115584b64727a Mon Sep 17 00:00:00 2001 From: Rahul Jayaraman Date: Mon, 30 Apr 2018 11:21:16 +0530 Subject: [PATCH 4/4] initialize retry_count to 0 --- enqueue.go | 7 ++++--- enqueue_test.go | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/enqueue.go b/enqueue.go index 9fa500e..49b5d1a 100644 --- a/enqueue.go +++ b/enqueue.go @@ -28,9 +28,10 @@ func (e EnqueueData) MarshalJSON() ([]byte, error) { if e.EnqueueOptions.RetryCount > 0 { s := struct { EnqueueDataProxy - Retry int `json:"retry,omitempty"` - At float64 `json:"at,omitempty"` - }{EnqueueDataProxy(e), o.RetryCount, o.At} + Retry int `json:"retry,omitempty"` + RetryCount int `json:"retry_count"` + At float64 `json:"at,omitempty"` + }{EnqueueDataProxy(e), o.RetryCount, 0, o.At} return json.Marshal(s) } diff --git a/enqueue_test.go b/enqueue_test.go index 5095921..16962ec 100644 --- a/enqueue_test.go +++ b/enqueue_test.go @@ -72,7 +72,7 @@ func EnqueueSpec(c gospec.Context) { c.Expect(ea, IsWithin(0.1), nowToSecondsWithNanoPrecision()) }) - c.Specify("sets RetryCount to `retry`", func() { + c.Specify("sets retry count to `retry`", func() { EnqueueWithOptions("enqueue6", "Compare", []string{"foo", "bar"}, EnqueueOptions{RetryCount: 13}) bytes, _ := redis.Bytes(conn.Do("lpop", "prod:queue:enqueue6")) @@ -82,6 +82,9 @@ func EnqueueSpec(c gospec.Context) { retry := result["retry"].(float64) c.Expect(retry, Equals, float64(13)) + + retryCount := result["retry_count"].(float64) + c.Expect(retryCount, Equals, float64(0)) }) c.Specify("sets Retry correctly when no count given", func() {