async-limiter 1.5.1 → 1.5.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb03fc864de09582936ff16e60cd9a214020f66606ae489b09c673f5076d37e6
4
- data.tar.gz: 6ec875d4dd7afa21bdde41d12b61f51b4898e93b644d2d90abea339c64810ae7
3
+ metadata.gz: 180ea4ebb784a29df337fe94e8190358482658fd07547ccaeaddc0974b271696
4
+ data.tar.gz: b02a1c5978f4b14e103852bbaa3685d8e1258b6d0190d1bb1e3c157a18b786e9
5
5
  SHA512:
6
- metadata.gz: cde5a1bf23dadac86d333e8a43d6379df264ddd45684ea16aeba0b59f0c3141f9170bb70b37139a3868391c28fcb8a8e48f63399356a9fbacabd89fc369d39c7
7
- data.tar.gz: 7b5b82b3141d057099b2f8fee90ce1d15ef56492106f44a751df64ad2a881098a4f43437d381d8f8753bbc4d9386c2a044d97a0542c4090320f9d91a7068c6e0
6
+ metadata.gz: e0cd30fb437861e2077f1d15bd39a2bd9314ac64a7d48d2d303302a2c13c875cae02f042ad0d93531bf125475b62c1cc1b2e532279b044623f0b7b8765732bbb
7
+ data.tar.gz: abd67afa695c11d045f176cf5371046238050f951626cc5bc2f2b10a484ff567cd63e26ceb8b9896fb052b55682081d9bc421e9d6e489cdbc34c68fee38bc922
@@ -1,5 +1,5 @@
1
1
  module Async
2
2
  module Limiter
3
- VERSION = "1.5.1"
3
+ VERSION = "1.5.2"
4
4
  end
5
5
  end
@@ -58,7 +58,7 @@ module Async
58
58
 
59
59
  def sync(*queue_args)
60
60
  acquire(*queue_args) do
61
- yield(@parent || Task.current)
61
+ yield Task.current
62
62
  end
63
63
  end
64
64
 
@@ -177,18 +177,20 @@ module Async
177
177
 
178
178
  # Schedule resuming waiting tasks.
179
179
  def schedule(parent: @parent || Task.current)
180
- @scheduler ||=
181
- parent.async(transient: true) { |task|
182
- task.annotate("scheduling tasks for #{self.class}.")
183
-
184
- while @waiting.any? && !limit_blocking?
185
- delay = [next_acquire_time - Clock.now, 0].max
186
- task.sleep(delay) if delay.positive?
187
- resume_waiting
188
- end
180
+ return @scheduler if @scheduler
181
+
182
+ parent.async(transient: true) do |task|
183
+ @scheduler = task
184
+ task.annotate("scheduling tasks for #{self.class}.")
189
185
 
190
- @scheduler = nil
191
- }
186
+ while @waiting.any? && !limit_blocking?
187
+ delay = [next_acquire_time - Clock.now, 0].max
188
+ task.sleep(delay) if delay.positive?
189
+ resume_waiting
190
+ end
191
+ ensure
192
+ @scheduler = nil
193
+ end
192
194
  end
193
195
 
194
196
  def reschedule?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-limiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bruno Sutic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-20 00:00:00.000000000 Z
11
+ date: 2021-01-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
@@ -114,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
114
114
  - !ruby/object:Gem::Version
115
115
  version: '0'
116
116
  requirements: []
117
- rubygems_version: 3.2.0.rc.1
117
+ rubygems_version: 3.2.3
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Async limiters