entitlements-app 1.2.4 → 1.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/entitlements.rb +25 -10
  3. data/lib/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ff39c49f02bf4b3dcc8ced68357e2c85084416468d8300a79dd19c5685cac35
4
- data.tar.gz: c40fb54374427dda1782344df0bdeb9d5401774a755e4c89d5795438d43a6605
3
+ metadata.gz: bdd6741cf78fb17f3d3cc0e21b27543be1b02810317b906bd7344fc4652f11dd
4
+ data.tar.gz: a4a0ccd8e4ff59d73ec26eb494c16c68ce88d8c4c5df4c6fd969e53d91d92dc6
5
5
  SHA512:
6
- metadata.gz: 0f0b5e0b20fc9a52547233b9b9f5dec204976d5a62d893a5d74b913af3222972fddadc12b2da5be4b7fb59ac8cf4722adc5f0da8a0415d8166cae3fc2066c119
7
- data.tar.gz: 3585576afa5953596609cec10ca8995166e8803666cdece35003839dd365389eb46ee6e1298e8599537560083b28212f05e2d71155cd2dcc4e776f3ccbe934ec
6
+ metadata.gz: 801efc4677593d00afd2c52e60c56d1fdb5b5fb87c9957c2bc71f7a9adc7766cfd4e49f95b2621935be7d5fa8001815029b2fe196290312affe4eff93e142092
7
+ data.tar.gz: a179762674b835b741edfdef40ec65f7a57738509c2d31a11aa702ee57aea5c67aaff03761d3f9a89fe1f92258b6d0e5511d9715617df0a5cb5d3f123d0846d9
data/lib/entitlements.rb CHANGED
@@ -22,6 +22,7 @@ require "logger"
22
22
  require "ostruct"
23
23
  require "resolv"
24
24
  require "stringio"
25
+ require "thread"
25
26
  require "uri"
26
27
  require "yaml"
27
28
 
@@ -457,19 +458,33 @@ module Entitlements
457
458
  # Calculate old and new membership in each group.
458
459
  thread_pool = Concurrent::FixedThreadPool.new(max_parallelism)
459
460
  logger.debug("Begin prefetch and validate for all groups")
461
+
460
462
  prep_start = Time.now
461
- futures = Entitlements.child_classes.map do |group_name, obj|
462
- Concurrent::Future.execute({ executor: thread_pool }) do
463
- group_start = Time.now
464
- logger.debug("Begin prefetch and validate for #{group_name}")
465
- provider = Entitlements.config["groups"].fetch(group_name).fetch("type")
466
- timed_operation(phase: "prefetch", provider: provider, target: group_name, concurrent: true) { obj.prefetch }
467
- timed_operation(phase: "validate", provider: provider, target: group_name, concurrent: true) { obj.validate }
468
- logger.debug("Finished prefetch and validate for #{group_name} in #{Time.now - group_start}")
463
+ jobs = Entitlements.child_classes
464
+ completions = Queue.new
465
+
466
+ begin
467
+ jobs.each do |group_name, obj|
468
+ thread_pool.post do
469
+ group_start = Time.now
470
+ logger.debug("Begin prefetch and validate for #{group_name}")
471
+ provider = Entitlements.config["groups"].fetch(group_name).fetch("type")
472
+ timed_operation(phase: "prefetch", provider: provider, target: group_name, concurrent: true) { obj.prefetch }
473
+ timed_operation(phase: "validate", provider: provider, target: group_name, concurrent: true) { obj.validate }
474
+ logger.debug("Finished prefetch and validate for #{group_name} in #{Time.now - group_start}")
475
+ completions << nil
476
+ rescue => e
477
+ completions << e
478
+ end
469
479
  end
470
- end
471
480
 
472
- futures.each(&:value!)
481
+ jobs.size.times do
482
+ exception = completions.pop
483
+ raise exception if exception
484
+ end
485
+ ensure
486
+ thread_pool.kill
487
+ end
473
488
  logger.debug("Finished all prefetch and validate in #{Time.now - prep_start}")
474
489
 
475
490
  logger.debug("Begin all calculations")
data/lib/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Entitlements
4
4
  module Version
5
- VERSION = "1.2.4"
5
+ VERSION = "1.2.5"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: entitlements-app
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub, Inc. Security Ops