Skip to content

Commit 00d11d0

Browse files
committed
adds catch for other possible exception
1 parent a27c756 commit 00d11d0

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

Diff for: redis/asyncio/lock.py

+4
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ async def __aexit__(self, exc_type, exc_value, traceback):
178178
if self.raise_on_release_error:
179179
raise
180180
logger.warning("Lock was no longer owned when exiting context manager.")
181+
except LockError:
182+
if self.raise_on_release_error:
183+
raise
184+
logger.warning("Lock was unlocked when exiting context manager.")
181185

182186
async def acquire(
183187
self,

Diff for: redis/lock.py

+4
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,10 @@ def __exit__(
184184
if self.raise_on_release_error:
185185
raise
186186
logger.warning("Lock was no longer owned when exiting context manager.")
187+
except LockError:
188+
if self.raise_on_release_error:
189+
raise
190+
logger.warning("Lock was unlocked when exiting context manager.")
187191

188192
def acquire(
189193
self,

Diff for: tests/test_asyncio/test_lock.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ async def test_context_manager_raises_when_locked_not_acquired(self, r):
129129
async with self.get_lock(r, "foo", blocking_timeout=0.1):
130130
pass
131131

132-
async def test_context_manager_not_raise_on_release_error(self, r):
132+
async def test_context_manager_not_raise_on_release_lock_not_owned_error(self, r):
133133
try:
134134
async with self.get_lock(
135135
r, "foo", timeout=0.1, raise_on_release_error=False
@@ -144,6 +144,21 @@ async def test_context_manager_not_raise_on_release_error(self, r):
144144
):
145145
await asyncio.sleep(0.15)
146146

147+
async def test_context_manager_not_raise_on_release_lock_error(self, r):
148+
try:
149+
async with self.get_lock(
150+
r, "foo", timeout=0.1, raise_on_release_error=False
151+
) as lock:
152+
lock.release()
153+
except LockError:
154+
pytest.fail("LockError should not have been raised")
155+
156+
with pytest.raises(LockError):
157+
async with self.get_lock(
158+
r, "foo", timeout=0.1, raise_on_release_error=True
159+
) as lock:
160+
lock.release()
161+
147162
async def test_high_sleep_small_blocking_timeout(self, r):
148163
lock1 = self.get_lock(r, "foo")
149164
assert await lock1.acquire(blocking=False)

Diff for: tests/test_lock.py

+16-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def test_context_manager_raises_when_locked_not_acquired(self, r):
133133
with self.get_lock(r, "foo", blocking_timeout=0.1):
134134
pass
135135

136-
def test_context_manager_not_raise_on_release_error(self, r):
136+
def test_context_manager_not_raise_on_release_lock_not_owned_error(self, r):
137137
try:
138138
with self.get_lock(r, "foo", timeout=0.1, raise_on_release_error=False):
139139
time.sleep(0.15)
@@ -144,6 +144,21 @@ def test_context_manager_not_raise_on_release_error(self, r):
144144
with self.get_lock(r, "foo", timeout=0.1, raise_on_release_error=True):
145145
time.sleep(0.15)
146146

147+
def test_context_manager_not_raise_on_release_lock_error(self, r):
148+
try:
149+
with self.get_lock(
150+
r, "foo", timeout=0.1, raise_on_release_error=False
151+
) as lock:
152+
lock.release()
153+
except LockError:
154+
pytest.fail("LockError should not have been raised")
155+
156+
with pytest.raises(LockError):
157+
with self.get_lock(
158+
r, "foo", timeout=0.1, raise_on_release_error=True
159+
) as lock:
160+
lock.release()
161+
147162
def test_high_sleep_small_blocking_timeout(self, r):
148163
lock1 = self.get_lock(r, "foo")
149164
assert lock1.acquire(blocking=False)

0 commit comments

Comments
 (0)