Grokzen/redis-py-cluster

RuntimeError: dictionary changed size during iteration

lu911 opened this issue · 1 comments

lu911 commented

Error

IndexError: pop from empty list
  File "rediscluster/connection.py", line 323, in get_connection_by_node
    connection = self._available_connections.get(node["name"], []).pop()

RuntimeError: dictionary changed size during iteration
  File "proj_code/authentications.py", line 121, in authenticate
    payload = cache.get(key)
  File "ddtrace/contrib/trace_utils.py", line 48, in wrapper
    return func(mod, pin, wrapped, instance, args, kwargs)
  File "ddtrace/contrib/django/patch.py", line 138, in traced_cache
    return func(*args, **kwargs)
  File "django_redis/cache.py", line 87, in get
    value = self._get(key, default, version, client)
  File "django_redis/cache.py", line 27, in _decorator
    return method(self, *args, **kwargs)
  File "django_redis/cache.py", line 94, in _get
    return self.client.get(key, default=default, version=version, client=client)
  File "django_redis/client/default.py", line 220, in get
    value = client.get(key)
  File "redis/client.py", line 1207, in get
    return self.execute_command('GET', name)
  File "ddtrace/contrib/redis/patch.py", line 82, in traced_execute_command
    return func(*args, **kwargs)
  File "rediscluster/utils.py", line 101, in inner
    return func(*args, **kwargs)
  File "rediscluster/client.py", line 395, in execute_command
    r = self.connection_pool.get_connection_by_node(node)
  File "rediscluster/connection.py", line 325, in get_connection_by_node
    connection = self.make_connection(node)
  File "rediscluster/connection.py", line 224, in make_connection
    if self.count_all_num_connections(node) >= self.max_connections:
  File "rediscluster/connection.py", line 279, in count_all_num_connections
    return sum([i for i in self._created_connections_per_node.values()])
  File "rediscluster/connection.py", line 279, in <listcomp>
    return sum([i for i in self._created_connections_per_node.values()])

ENV

django-redis==4.12.1
redis==3.0.1
redis-py-cluster==2.0.0

Runtime

CPython 3.7.7
lu911 commented

It was fixed on redis-py-cluster==2.1.0