Skip to content

A deadlock is encountered when invoking the 'subscribe' function. #2883

Open
@suxb201

Description

@suxb201

Version:
redis-py 4.5.5 used in a multi-threads program

Platform:
Python 3.9.7 on Linux 5.10 aarch64

Description:
At times, invoking the 'subscribe' function may result in a hang, and based on the stack analysis, it appears that a deadlock might be occurring.

...
Thread 0x0000ffffaca0f150 (most recent call first):
  File "/root/miniconda3/lib/python3.9/site-packages/redis/connection.py", line 1497 in release # try lock self._lock again
  File "/root/miniconda3/lib/python3.9/site-packages/redis/client.py", line 1426 in reset
  File "/root/miniconda3/lib/python3.9/site-packages/redis/client.py", line 1418 in __del__
  File "/root/miniconda3/lib/python3.9/site-packages/redis/connection.py", line 949 in __init__
  File "/root/miniconda3/lib/python3.9/site-packages/redis/connection.py", line 1492 in make_connection
  File "/root/miniconda3/lib/python3.9/site-packages/redis/connection.py", line 1452 in get_connection # with self._lock
  File "/root/miniconda3/lib/python3.9/site-packages/redis/client.py", line 1469 in execute_command
  File "/root/miniconda3/lib/python3.9/site-packages/redis/client.py", line 1634 in subscribe
...

Client is created with:

host="localhost",
port=self._port,
password="*****",
single_connection_client=True,  # might be helpful 
socket_timeout=30,
socket_connect_timeout=10,
ssl=self._is_tls,
ssl_ca_certs=f"xxxxxx/tls/ca.crt"

My program:

...
pubsub = c.pubsub()
pubsub.subscribe(channel) # hang
...

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions