Skip to content

Commit 0320ace

Browse files
authored
[ServiceBus] Improve test stability and cpu usage (#20352)
* updatet test and improve cpu usage * update changelog
1 parent fac427d commit 0320ace

File tree

4 files changed

+7
-4
lines changed

4 files changed

+7
-4
lines changed

sdk/servicebus/azure-servicebus/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
### Other Changes
1212

13+
- Reduced CPU load of `azure.servicebus.AutoLockRenewer` during lock renewal.
14+
1315
## 7.3.2 (2021-08-10)
1416

1517
### Bugs Fixed

sdk/servicebus/azure-servicebus/azure/servicebus/_common/auto_lock_renewer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ def _dispatch_worker(self):
176176
self._running_dispatcher.clear()
177177
self._last_activity_timestamp = None
178178
return
179+
time.sleep(self._sleep_time) # save cpu cycles if there's currently no task in self._renew_tasks
179180

180181
def _auto_lock_renew_task(
181182
self,

sdk/servicebus/azure-servicebus/tests/mocks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ def renew_message_lock(self, message):
1616

1717

1818
class MockReceivedMessage(ServiceBusReceivedMessage):
19-
def __init__(self, prevent_renew_lock=False, exception_on_renew_lock=False):
20-
self._lock_duration = 2
19+
def __init__(self, prevent_renew_lock=False, exception_on_renew_lock=False, **kwargs):
20+
self._lock_duration = kwargs.get("lock_duration", 2)
2121
self._raw_amqp_message = None
2222
self._received_timestamp_utc = utc_now()
2323
self.locked_until_utc = self._received_timestamp_utc + timedelta(seconds=self._lock_duration)

sdk/servicebus/azure-servicebus/tests/test_queues.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1597,8 +1597,8 @@ def callback_mock(renewable, error):
15971597
auto_lock_renew = AutoLockRenewer()
15981598
auto_lock_renew._renew_period = 1
15991599
with auto_lock_renew: # Check that in normal operation it does not get called
1600-
auto_lock_renew.register(receiver, renewable=MockReceivedMessage(), on_lock_renew_failure=callback_mock)
1601-
time.sleep(3)
1600+
auto_lock_renew.register(receiver, renewable=MockReceivedMessage(lock_duration=5), on_lock_renew_failure=callback_mock)
1601+
time.sleep(6)
16021602
assert not results
16031603
assert not errors
16041604

0 commit comments

Comments
 (0)