liveqa 1.9.0 → 1.9.1

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
  SHA1:
3
- metadata.gz: 9e2af9cc4ebfb7e97a8330c769db5ffb49989ec9
4
- data.tar.gz: 4261ba5bbe8cbebd535f876fe9f8762e460286cf
3
+ metadata.gz: 0cf621fc23d38f66505dc4983cff2e0c6fcf26b5
4
+ data.tar.gz: bdf797cb4b4934154630b44ad2efb05ef01cb14e
5
5
  SHA512:
6
- metadata.gz: 0f5fc2bd622bdf4e98573f3205ced2fce4ae9b569e398ab28633654cffaf2a3c1e2532c63da9f8352bcc74482d787fd6958104d0c02d52afe83baf3596374595
7
- data.tar.gz: 7e2fccdb0c9a117a852989f3ab3e7744b958a0f31f3014cff519614492b3d3cdc862956e375ef6f715c747908170674708ca034a2b578d41201b3c9034f84a91
6
+ metadata.gz: af70e6014944593db250372db0f2941654d1bdb33d5814ba2b419dcca048625ea46ed707bc02cb45ee1d98c208aa5b6ae798f757dd1bd93cd7b63143c6091615
7
+ data.tar.gz: b34ea34441bd718e033b2220d68670266efb4f073e850d8f8c1af765b672459873f17531653e975395f01182df2676fcbe423eb5ba4984960841cb6c6ee6bb55
@@ -4,12 +4,14 @@ module LiveQA
4
4
 
5
5
  def initialize
6
6
  @max_queue_size = 10_000
7
- @queue = Queue.new
8
- @worker = Worker.new(@queue)
9
- @worker_mutex = Mutex.new
7
+ @queue = Concurrent::Array.new
8
+ @worker = Worker.new(@queue, executor)
10
9
 
11
10
  at_exit do
12
- @worker_thread && @worker_thread[:should_exit] = true
11
+ unless worker_running?
12
+ executor.shutdown
13
+ executor.wait_for_termination
14
+ end
13
15
  end
14
16
  end
15
17
 
@@ -22,25 +24,19 @@ module LiveQA
22
24
  true
23
25
  end
24
26
 
25
- def flush
26
- while !@queue.empty? || @worker.is_requesting?
27
- ensure_worker_running
28
- sleep(0.1)
29
- end
30
- end
31
-
32
27
  private
33
28
 
29
+ def executor
30
+ @executor ||= Concurrent.global_io_executor
31
+ end
32
+
34
33
  def ensure_worker_running
35
34
  return if worker_running?
36
- @worker_mutex.synchronize do
37
- return if worker_running?
38
- @worker_thread = Thread.new { @worker.run }
39
- end
35
+ @worker_thread = Concurrent::Future.execute { @worker.run }
40
36
  end
41
37
 
42
38
  def worker_running?
43
- @worker_thread && @worker_thread.alive?
39
+ @worker_thread && @worker_thread.incomplete?
44
40
  end
45
41
 
46
42
  end
@@ -5,17 +5,18 @@ module LiveQA
5
5
  DEFAULT_WAIT_TIME = 2
6
6
 
7
7
  attr_reader :queue
8
- attr_reader :lock
9
8
  attr_reader :batches
9
+ attr_reader :executor
10
10
 
11
- def initialize(queue)
11
+ def initialize(queue, executor)
12
12
  @queue = queue
13
- @lock = Mutex.new
14
13
  @batches = []
14
+
15
+ @executor = executor
15
16
  end
16
17
 
17
18
  def run
18
- until Thread.current[:should_exit]
19
+ while running?
19
20
  return if queue.empty? && batches.empty?
20
21
 
21
22
  sleep(DEFAULT_WAIT_TIME) if queue.empty?
@@ -28,11 +29,14 @@ module LiveQA
28
29
 
29
30
  private
30
31
 
32
+ def running?
33
+ return true if !queue.empty? || !batches.empty?
34
+ executor.running?
35
+ end
36
+
31
37
  def create_new_batch
32
38
  batch = Batch.new
33
- lock.synchronize do
34
- batch << queue.pop until batch.full? || queue.empty?
35
- end
39
+ batch << queue.pop until batch.full? || queue.empty?
36
40
  batches.push(batch)
37
41
  end
38
42
 
@@ -1,3 +1,3 @@
1
1
  module LiveQA # :nodoc:
2
- VERSION = '1.9.0'.freeze
2
+ VERSION = '1.9.1'.freeze
3
3
  end
data/lib/liveqa.rb CHANGED
@@ -6,6 +6,7 @@ require 'json'
6
6
  require 'time'
7
7
  require 'cgi'
8
8
  require 'logger'
9
+ require 'concurrent'
9
10
 
10
11
  # Base
11
12
  require 'liveqa/version'
data/liveqa.gemspec CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
9
9
  s.platform = Gem::Platform::RUBY
10
10
  s.authors = ['LiveQA']
11
11
  s.email = ['support@liveqa.io']
12
- s.homepage = 'https://github.com/arkes/liveqa-ruby'
12
+ s.homepage = 'https://github.com/LiveQA/liveqa-ruby'
13
13
  s.summary = 'LiveQA ruby integration'
14
14
  s.description = 'LiveQA ruby integration'
15
15
 
@@ -18,6 +18,8 @@ Gem::Specification.new do |s|
18
18
  s.files = `git ls-files`.split("\n")
19
19
  s.test_files = `git ls-files -- spec/*`.split("\n")
20
20
 
21
+ s.add_dependency 'concurrent-ruby', '~> 1.0.5'
22
+
21
23
  s.add_development_dependency 'faker', '~> 1.8.4'
22
24
  s.add_development_dependency 'pry'
23
25
  s.add_development_dependency 'rake', '>= 0.9.0'
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe LiveQA::Processor::Worker do
4
4
  let(:queue) { Queue.new }
5
- let(:worker) { LiveQA::Processor::Worker.new(queue) }
5
+ let(:worker) { LiveQA::Processor::Worker.new(queue, Concurrent.global_io_executor) }
6
6
 
7
7
  context 'do nothing' do
8
8
  before do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liveqa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.0
4
+ version: 1.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - LiveQA
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2018-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.5
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: faker
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -151,7 +165,7 @@ files:
151
165
  - spec/lib/liveqa_spec.rb
152
166
  - spec/spec_helper.rb
153
167
  - spec/support/rack_app.rb
154
- homepage: https://github.com/arkes/liveqa-ruby
168
+ homepage: https://github.com/LiveQA/liveqa-ruby
155
169
  licenses:
156
170
  - MIT
157
171
  metadata: {}