Skip to content

Commit f2d92f3

Browse files
committed
feat(webhook status): moved webhook retry schedule to configuration
1 parent 477bd57 commit f2d92f3

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

lib/pact_broker/configuration.rb

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class Configuration
1818
attr_accessor :use_case_sensitive_resource_names, :order_versions_by_date
1919
attr_accessor :semver_formats
2020
attr_accessor :enable_badge_resources, :shields_io_base_url
21+
attr_accessor :webhook_retry_schedule
2122
attr_writer :logger
2223

2324
def initialize
@@ -48,6 +49,7 @@ def self.default_configuration
4849
# consistently extract an orderable object from the consumer application version number.
4950
config.order_versions_by_date = false
5051
config.semver_formats = ["%M.%m.%p%s%d","%M.%m", "%M"]
52+
config.webhook_retry_schedule = [10, 60, 120, 300, 600, 1200] #10 sec, 1 min, 2 min, 5 min, 10 min, 20 min => 38 minutes
5153
config
5254
end
5355

lib/pact_broker/webhooks/job.rb

+12-6
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ module PactBroker
66
module Webhooks
77
class Job
88

9-
BACKOFF_TIMES = [10, 60, 120, 300, 600, 1200] #10 sec, 1 min, 2 min, 5 min, 10 min, 20 min => 38 minutes
10-
119
include SuckerPunch::Job
1210
include PactBroker::Logging
1311

@@ -45,23 +43,31 @@ def handle_failure
4543
reschedule_job
4644
update_triggered_webhook_status TriggeredWebhook::STATUS_RETRYING
4745
else
48-
logger.error "Failed to execute webhook #{triggered_webhook.webhook_uuid} after #{BACKOFF_TIMES.size} times."
46+
logger.error "Failed to execute webhook #{triggered_webhook.webhook_uuid} after #{retry_schedule.size} times."
4947
update_triggered_webhook_status TriggeredWebhook::STATUS_FAILURE
5048
end
5149
end
5250

5351
def reschedule_job?
54-
error_count < BACKOFF_TIMES.size
52+
error_count < retry_schedule.size
5553
end
5654

5755
def reschedule_job
58-
logger.debug "Re-enqeuing job for webhook #{triggered_webhook.webhook_uuid} to run in #{BACKOFF_TIMES[error_count]} seconds"
59-
Job.perform_in(BACKOFF_TIMES[error_count], @data.merge(error_count: error_count+1))
56+
logger.debug "Re-enqeuing job for webhook #{triggered_webhook.webhook_uuid} to run in #{retry_schedule[error_count]} seconds"
57+
Job.perform_in(backoff_time, @data.merge(error_count: error_count+1))
6058
end
6159

6260
def update_triggered_webhook_status status
6361
PactBroker::Webhooks::Service.update_triggered_webhook_status triggered_webhook, status
6462
end
63+
64+
def backoff_time
65+
retry_schedule[error_count]
66+
end
67+
68+
def retry_schedule
69+
PactBroker.configuration.webhook_retry_schedule
70+
end
6571
end
6672
end
6773
end

0 commit comments

Comments
 (0)