graphql 2.1.8 → 2.1.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5171a9a622fedcee350cbb3edff60fa524d000aa88e3bab802de59089d46d00f
4
- data.tar.gz: 4d111262bacb8a687a1c2113de7f065af18b3e9153f19c87341d10cd14aeda34
3
+ metadata.gz: aa975ca1c39b6de261e95d5b4e44f4d65cf3a52d5abeca978a03cb617732c709
4
+ data.tar.gz: ca123726f134ec05b94176591c0770eb46c4bc2b85202ab90905c2394d3269a5
5
5
  SHA512:
6
- metadata.gz: 23d10d5146a5ba2ef8092e75197d932e23a30f2763354bd0114c37b1c9fba25c757a3a78bd3ae789a47c9317c02b5e3654a47064bcb42dd750464228f29b97c5
7
- data.tar.gz: 13863ed6840cf38f52cb81b6c90539bacc0a76f3aea96cc86f69aeed397306bee1aaa48c760f4c17e39074f9d3c588338aff7887450bd6c792b0d6911b3af59c
6
+ metadata.gz: 18c0b1dbdee834116c64174db429d25176a84dd6cc076c64969995e00b6caa9e8c1fae1f5cdf27b703091515829ac5c2743db3088bb6b290fb1c294ba56c82fb
7
+ data.tar.gz: b10c8bdb7fb16fbe289542e08237d281bd57a40885aa7176c261f564c32a1250ffe2e94ef767502079f91938c51db059c382fc2ae4c1badebcc9a90746fd85ff
@@ -168,7 +168,7 @@ module GraphQL
168
168
  nil
169
169
  end
170
170
 
171
- attr_reader :pending
171
+ attr_reader :pending, :results
172
172
 
173
173
  private
174
174
 
@@ -118,12 +118,7 @@ module GraphQL
118
118
  #
119
119
  # @return [void]
120
120
  def yield
121
- if use_fiber_resume?
122
- Fiber.yield
123
- else
124
- parent_fiber = Thread.current[:parent_fiber]
125
- parent_fiber.transfer
126
- end
121
+ Fiber.yield
127
122
  nil
128
123
  end
129
124
 
@@ -168,7 +163,11 @@ module GraphQL
168
163
  ensure
169
164
  @pending_jobs = prev_queue
170
165
  prev_pending_keys.each do |source_instance, pending|
171
- source_instance.pending.merge!(pending)
166
+ pending.each do |key, value|
167
+ if !source_instance.results.key?(key)
168
+ source_instance.pending[key] = value
169
+ end
170
+ end
172
171
  end
173
172
  end
174
173
 
@@ -182,7 +181,7 @@ module GraphQL
182
181
  while first_pass || job_fibers.any?
183
182
  first_pass = false
184
183
 
185
- while (f = job_fibers.shift || spawn_job_fiber)
184
+ while (f = (job_fibers.shift || spawn_job_fiber))
186
185
  if f.alive?
187
186
  finished = run_fiber(f)
188
187
  if !finished
@@ -203,38 +202,37 @@ module GraphQL
203
202
  end
204
203
  join_queues(source_fibers, next_source_fibers)
205
204
  end
206
-
207
205
  end
208
206
  end
209
207
 
210
208
  run_fiber(manager)
211
209
 
210
+ if manager.alive?
211
+ raise "Invariant: Manager fiber didn't terminate properly."
212
+ end
213
+
214
+ if job_fibers.any?
215
+ raise "Invariant: job fibers should have exited but #{job_fibers.size} remained"
216
+ end
217
+ if source_fibers.any?
218
+ raise "Invariant: source fibers should have exited but #{source_fibers.size} remained"
219
+ end
212
220
  rescue UncaughtThrowError => e
213
221
  throw e.tag, e.value
214
222
  end
215
223
 
216
224
  def run_fiber(f)
217
- if use_fiber_resume?
218
- f.resume
219
- else
220
- f.transfer
221
- end
225
+ f.resume
222
226
  end
223
227
 
224
228
  def spawn_fiber
225
229
  fiber_vars = get_fiber_variables
226
- parent_fiber = use_fiber_resume? ? nil : Fiber.current
227
230
  Fiber.new(blocking: !@nonblocking) {
228
231
  set_fiber_variables(fiber_vars)
229
- Thread.current[:parent_fiber] = parent_fiber
230
232
  yield
231
233
  # With `.transfer`, you have to explicitly pass back to the parent --
232
234
  # if the fiber is allowed to terminate normally, control is passed to the main fiber instead.
233
- if parent_fiber
234
- parent_fiber.transfer(true)
235
- else
236
- true
237
- end
235
+ true
238
236
  }
239
237
  end
240
238
 
@@ -246,15 +244,6 @@ module GraphQL
246
244
  new_queue.clear
247
245
  end
248
246
 
249
- def use_fiber_resume?
250
- Fiber.respond_to?(:scheduler) &&
251
- (
252
- (defined?(::DummyScheduler) && Fiber.scheduler.is_a?(::DummyScheduler)) ||
253
- (defined?(::Evt) && ::Evt::Scheduler.singleton_class::BACKENDS.any? { |be| Fiber.scheduler.is_a?(be) }) ||
254
- (defined?(::Libev) && Fiber.scheduler.is_a?(::Libev::Scheduler))
255
- )
256
- end
257
-
258
247
  def spawn_job_fiber
259
248
  if @pending_jobs.any?
260
249
  spawn_fiber do
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module GraphQL
3
- VERSION = "2.1.8"
3
+ VERSION = "2.1.10"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.8
4
+ version: 2.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Mosolgo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-12-18 00:00:00.000000000 Z
11
+ date: 2023-12-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: racc