File tree Expand file tree Collapse file tree 1 file changed +4
-1
lines changed Expand file tree Collapse file tree 1 file changed +4
-1
lines changed Original file line number Diff line number Diff line change @@ -446,6 +446,8 @@ async def send_modbus_message(
446
446
raise ModbusConcurrencyError (
447
447
f"Failed to acquire lock to send request { msg_str } to modbus device { self .host } "
448
448
)
449
+
450
+ i_have_lock = True
449
451
time_budget_remaining -= lock_t ()
450
452
451
453
try :
@@ -528,6 +530,7 @@ async def send_modbus_message(
528
530
529
531
# release the lock before retrying (so we can re-get it)
530
532
self ._comms_lock .release ()
533
+ i_have_lock = False # Don't release someone elses lock in the finally
531
534
532
535
return await self .send_modbus_message (
533
536
request_function ,
@@ -539,7 +542,7 @@ async def send_modbus_message(
539
542
f"Request { msg_str } failed to { self .host } :{ self .port } ({ type (e ).__name__ } ({ e } ))"
540
543
) from e
541
544
finally :
542
- if self ._comms_lock .locked ():
545
+ if self ._comms_lock .locked () and i_have_lock :
543
546
self ._comms_lock .release ()
544
547
545
548
self ._consecutive_timeouts = 0
You can’t perform that action at this time.
0 commit comments