diff --git a/Gemfile.lock b/Gemfile.lock index cfa2824..bd3055a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,6 +3,7 @@ PATH specs: appsignal-sourcemap (1.0.0.develop) appsignal (~> 3.0) + parallel (~> 1.0) GEM remote: https://rubygems.org/ diff --git a/appsignal-sourcemap.gemspec b/appsignal-sourcemap.gemspec index 583412f..67f2e6e 100644 --- a/appsignal-sourcemap.gemspec +++ b/appsignal-sourcemap.gemspec @@ -21,6 +21,7 @@ Gem::Specification.new do |spec| spec.files = Dir["lib/**/*", "README.md"] spec.add_dependency "appsignal", "~> 3.0" + spec.add_dependency "parallel", "~> 1.0" spec.add_development_dependency "standard" end diff --git a/lib/appsignal/sourcemap/supervisor.rb b/lib/appsignal/sourcemap/supervisor.rb index 49549ae..f9330e5 100644 --- a/lib/appsignal/sourcemap/supervisor.rb +++ b/lib/appsignal/sourcemap/supervisor.rb @@ -1,10 +1,13 @@ # frozen_string_literal: true +require "parallel" require "appsignal/sourcemap/uploader" module Appsignal module Sourcemap class Supervisor + PARALLEL_THREADS = 10 + def self.start new.start end @@ -14,11 +17,9 @@ def start Appsignal.logger.info("Starting sourcemaps upload") - source_map_paths.map do |source_map_path| - Thread.new do - Uploader.upload(source_map_path) - end - end.each(&:join) + Parallel.each(source_map_paths, in_threads: PARALLEL_THREADS) do |source_map_path| + Uploader.upload(source_map_path) + end Appsignal.logger.info("Finished sourcemaps upload") end