entitlements-app 1.2.4 → 1.2.6

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 +28 -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: 739d6fcd34da1ba6e5af155386469c9192546338cb3ce5a7e3aa56b34979eac7
4
+ data.tar.gz: a14101ee81be9f88732c42119563beb3cea0e2e01b59280f2f6ad4344f0e0392
5
5
  SHA512:
6
- metadata.gz: 0f0b5e0b20fc9a52547233b9b9f5dec204976d5a62d893a5d74b913af3222972fddadc12b2da5be4b7fb59ac8cf4722adc5f0da8a0415d8166cae3fc2066c119
7
- data.tar.gz: 3585576afa5953596609cec10ca8995166e8803666cdece35003839dd365389eb46ee6e1298e8599537560083b28212f05e2d71155cd2dcc4e776f3ccbe934ec
6
+ metadata.gz: e4090f203171ab34ca7aff65e37d036e3b10b604b86a03d8dfb01c1373e18e6e05434fd6fee6a54cf79065e5c6568320b703c3784f112cf0313183ac7d869ee7
7
+ data.tar.gz: fe95f3cc1ef013e6d5fe91249f17a16878bfb780c70356cd6bbdefb56a18857f9a2a007907fb3b96746c7757888e314dfcbbb98d04243d01ef43e11a33e12d3f
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,25 +458,41 @@ 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")
476
491
  calc_start = Time.now
477
492
  actions = []
478
493
  Entitlements.child_classes.map do |group_name, obj|
494
+ group_start = Time.now
495
+ logger.debug("Begin calculation for #{group_name}")
479
496
  provider = Entitlements.config["groups"].fetch(group_name).fetch("type")
480
497
  timed_operation(phase: "calculate", provider: provider, target: group_name) { obj.calculate }
481
498
  if obj.change_count > 0
@@ -483,6 +500,7 @@ module Entitlements
483
500
  cache[:change_count] += obj.change_count
484
501
  end
485
502
  actions.concat(obj.actions)
503
+ logger.debug("Finished calculation for #{group_name} in #{Time.now - group_start}")
486
504
  end
487
505
  logger.debug("Finished all calculations in #{Time.now - calc_start}")
488
506
  logger.debug("Finished all prefetch, validate, and calculation in #{Time.now - prep_start}")
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.6"
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.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - GitHub, Inc. Security Ops