diff --git a/lib/redis_client/cluster/concurrent_worker/pooled.rb b/lib/redis_client/cluster/concurrent_worker/pooled.rb index c814391..8e92b72 100644 --- a/lib/redis_client/cluster/concurrent_worker/pooled.rb +++ b/lib/redis_client/cluster/concurrent_worker/pooled.rb @@ -37,7 +37,9 @@ def push(task) def close @q.clear - @workers.each { |t| t&.exit } + workers = @workers.compact + workers.each(&:exit) + workers.each(&:join) @workers.clear @q.close @pid = nil diff --git a/lib/redis_client/cluster/pub_sub.rb b/lib/redis_client/cluster/pub_sub.rb index 719cc4b..4cda609 100644 --- a/lib/redis_client/cluster/pub_sub.rb +++ b/lib/redis_client/cluster/pub_sub.rb @@ -26,7 +26,11 @@ def ensure_worker end def close - @worker.exit if @worker&.alive? + if @worker&.alive? + @worker.exit + @worker.join + end + @client.close rescue ::RedisClient::ConnectionError # ignore