Skip to content

Commit b1c9639

Browse files
authored
feat(taskbroker): Add delay to RetryState (#91197)
Bumps the proto version to 0.2.0, which adds the new fields to allow tasks to define delay upon a retry. Broker changes getsentry/taskbroker#350
1 parent a2cc234 commit b1c9639

File tree

5 files changed

+14
-3
lines changed

5 files changed

+14
-3
lines changed

requirements-base.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ rfc3986-validator>=0.1.1
6868
sentry-arroyo>=2.21.0
6969
sentry-kafka-schemas>=1.2.0
7070
sentry-ophio>=1.1.3
71-
sentry-protos==0.1.74
71+
sentry-protos==0.2.0
7272
sentry-redis-tools>=0.5.0
7373
sentry-relay>=0.9.9
7474
sentry-sdk[http2]>=2.25.1

requirements-dev-frozen.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ sentry-forked-djangorestframework-stubs==3.15.3.post1
189189
sentry-forked-email-reply-parser==0.5.12.post1
190190
sentry-kafka-schemas==1.2.0
191191
sentry-ophio==1.1.3
192-
sentry-protos==0.1.74
192+
sentry-protos==0.2.0
193193
sentry-redis-tools==0.5.0
194194
sentry-relay==0.9.9
195195
sentry-sdk==2.27.0

requirements-frozen.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ sentry-arroyo==2.21.0
127127
sentry-forked-email-reply-parser==0.5.12.post1
128128
sentry-kafka-schemas==1.2.0
129129
sentry-ophio==1.1.3
130-
sentry-protos==0.1.74
130+
sentry-protos==0.2.0
131131
sentry-redis-tools==0.5.0
132132
sentry-relay==0.9.9
133133
sentry-sdk==2.27.0

src/sentry/taskworker/retry.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,13 @@ def __init__(
7373
on: tuple[type[BaseException], ...] | None = None,
7474
ignore: tuple[type[BaseException], ...] | None = None,
7575
times_exceeded: LastAction = LastAction.Discard,
76+
delay: int | None = None,
7677
):
7778
self._times = times
7879
self._allowed_exception_types: tuple[type[BaseException], ...] = on or ()
7980
self._denied_exception_types: tuple[type[BaseException], ...] = ignore or ()
8081
self._times_exceeded = times_exceeded
82+
self._delay = delay
8183

8284
def should_retry(self, state: RetryState, exc: Exception) -> bool:
8385
# We subtract one, as attempts starts at 0, but `times`
@@ -105,4 +107,5 @@ def initial_state(self) -> RetryState:
105107
attempts=0,
106108
max_attempts=self._times,
107109
on_attempts_exceeded=self._times_exceeded.to_proto(),
110+
delay_on_retry=self._delay,
108111
)

tests/sentry/taskworker/test_retry.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ def test_initial_state__deadletter() -> None:
4141
assert proto.on_attempts_exceeded == ON_ATTEMPTS_EXCEEDED_DEADLETTER
4242

4343

44+
def test_initial_state__delay_on_retry() -> None:
45+
retry = Retry(times=5, delay=1)
46+
proto = retry.initial_state()
47+
48+
assert proto.attempts == 0
49+
assert proto.delay_on_retry == 1
50+
51+
4452
def test_should_retry_no_matching_error() -> None:
4553
retry = Retry(times=5)
4654
state = retry.initial_state()

0 commit comments

Comments
 (0)