aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/fetcher/compact_index.rb18
1 files changed, 15 insertions, 3 deletions
diff --git a/lib/bundler/fetcher/compact_index.rb b/lib/bundler/fetcher/compact_index.rb
index e6f936c2..be5683db 100644
--- a/lib/bundler/fetcher/compact_index.rb
+++ b/lib/bundler/fetcher/compact_index.rb
@@ -44,6 +44,8 @@ module Bundler
complete_gems.concat(deps.map(&:first)).uniq!
remaining_gems = next_gems - complete_gems
end
+ @bundle_worker.stop if @bundle_worker
+ @bundle_worker = nil # reset it. Not sure if necessary
gem_info
end
@@ -86,15 +88,25 @@ module Bundler
end.tap do |client|
client.in_parallel = lambda do |inputs, &blk|
func = lambda {|object, _index| blk.call(object) }
- worker_name = "Compact Index (#{display_uri.host})"
- worker = Bundler::Worker.new(25, worker_name, func)
+ worker = bundle_worker(func)
inputs.each {|input| worker.enq(input) }
- inputs.map { worker.deq }.tap { worker.stop }
+ inputs.map { worker.deq }
end
end
end
end
+ def bundle_worker(func = nil)
+ if @bundle_worker
+ @bundle_worker.tap do |worker|
+ worker.instance_variable_set(:@func, func) if func
+ end
+ else
+ worker_name = "Compact Index (#{display_uri.host})"
+ @bundle_worker ||= Bundler::Worker.new(25, worker_name, func)
+ end
+ end
+
def cache_path
Bundler.user_cache.join("compact_index", remote.cache_slug)
end