diff --git a/rediscluster/pipeline.py b/rediscluster/pipeline.py index 1b7065fc..a4c39598 100644 --- a/rediscluster/pipeline.py +++ b/rediscluster/pipeline.py @@ -203,7 +203,13 @@ def _send_cluster_commands(self, stack, raise_on_error=True, allow_redirections= # we can build a list of commands for each node. node_name = node['name'] if node_name not in nodes: - nodes[node_name] = NodeCommands(self.parse_response, self.connection_pool.get_connection_by_node(node)) + try: + nodes[node_name] = NodeCommands(self.parse_response, self.connection_pool.get_connection_by_node(node)) + except RedisClusterException: + # we may run into "Too many connections" error. all unused connections should be released + for n in nodes.values(): + self.connection_pool.release(n.connection) + raise nodes[node_name].append(c)