Skip to content

Commit 7e02ccc

Browse files
authored
[EH/SB] pyAMQP retries (#39037)
* hardcode to 0 * update * eh * fix reconnect test to reflect retry * remove
1 parent 61673f5 commit 7e02ccc

File tree

4 files changed

+10
-27
lines changed

4 files changed

+10
-27
lines changed

sdk/eventhub/azure-eventhub/azure/eventhub/_transport/_pyamqp_transport.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,9 @@ def create_retry_policy(config):
208208
209209
"""
210210
return errors.RetryPolicy(
211-
retry_total=config.max_retries,
211+
# hardcoding to 0 to avoid double retries and
212+
# 8 seconds of wait time when retrying compared to uamqp
213+
retry_total=0,
212214
retry_backoff_factor=config.backoff_factor,
213215
retry_backoff_max=config.backoff_max,
214216
retry_mode=config.retry_mode,

sdk/eventhub/azure-eventhub/tests/livetest/asynctests/test_reconnect_async.py

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,8 @@ async def test_send_connection_idle_timeout_and_reconnect_async(
169169
await asyncio.sleep(11)
170170
ed = transform_outbound_single_message(ed, EventData, amqp_transport.to_outgoing_amqp_message)
171171
sender._unsent_events = [ed._message]
172-
await sender._send_event_data()
173-
174-
retry = 0
175-
while retry < 3:
176-
try:
177-
messages = receivers[0].receive_message_batch(max_batch_size=10, timeout=10 * timeout_factor)
178-
if messages:
179-
received_ed1 = EventData._from_message(messages[0])
180-
assert received_ed1.body_as_str() == "data"
181-
break
182-
except timeout_exc:
183-
retry += 1
172+
with pytest.raises(error.AMQPConnectionError):
173+
await sender._send_event_data()
184174

185175

186176
@pytest.mark.liveTest

sdk/eventhub/azure-eventhub/tests/livetest/synctests/test_reconnect.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -157,19 +157,8 @@ def test_send_connection_idle_timeout_and_reconnect_sync(auth_credential_receive
157157
time.sleep(11)
158158
ed = transform_outbound_single_message(ed, EventData, amqp_transport.to_outgoing_amqp_message)
159159
sender._unsent_events = [ed._message]
160-
sender._send_event_data()
161-
162-
retry = 0
163-
while retry < 3:
164-
try:
165-
messages = receivers[0].receive_message_batch(max_batch_size=10, timeout=10 * timeout_factor)
166-
if messages:
167-
received_ed1 = EventData._from_message(messages[0])
168-
assert received_ed1.body_as_str() == "data"
169-
break
170-
except timeout_exc:
171-
retry += 1
172-
160+
with pytest.raises(error.AMQPConnectionError):
161+
sender._send_event_data()
173162

174163
@pytest.mark.liveTest
175164
def test_receive_connection_idle_timeout_and_reconnect_sync(auth_credential_senders, uamqp_transport):

sdk/servicebus/azure-servicebus/azure/servicebus/_transport/_pyamqp_transport.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,9 @@ def create_retry_policy(config: "Configuration", *, is_session: bool = False) ->
412412
# TODO: What's the retry overlap between servicebus and pyamqp?
413413
return _ServiceBusErrorPolicy(
414414
is_session=is_session,
415-
retry_total=config.retry_total,
415+
# hardcoding to 0 to avoid double retries and
416+
# 8 seconds of wait time when retrying compared to uamqp
417+
retry_total=0,
416418
retry_backoff_factor=config.retry_backoff_factor,
417419
retry_backoff_max=config.retry_backoff_max,
418420
retry_mode=config.retry_mode,

0 commit comments

Comments
 (0)