datahen 1.5.1 → 1.5.3

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: 96d2bc30d1c96ce684d83efa54b6dff5966db2a1bba7ab4856b11caba2803086
4
- data.tar.gz: 985712d5d7e6559ac64b76669241f56d704c754deb06a164e1f449aad10ef29e
3
+ metadata.gz: beadb0e5b371134e96d8e1888250de66411eb287a30cfc5f717e525c19343d6c
4
+ data.tar.gz: 298daaf6f56f1fcfb4e842b9e82d0e4f8896315d264b9481aa2ed4ec55bc8a9b
5
5
  SHA512:
6
- metadata.gz: d9c6bd3e60034339a8354fe4bda365b91f21b6ec68da8f384d7380abcafa5ccce2c2aacd6cc7a8da37378b8681afe58765bcc461211812c623a8958eac7a5f72
7
- data.tar.gz: ac5eb5c8de4e4b0a6d28d96179bab4bf347662247b94e775ed0a25e0f0ef00a542f01f8a1a06525b565e7bd1055d5cd30b480a28d28c7ebf5de893b89b9f5e3a
6
+ metadata.gz: 8cba2e599b72315d65cd20440c6a8804d7298bd577d5d24f9408bc71e35f47ee5abb8e7d580b7b42cc95c10608f852339a1d44ecfedaedd82acb565f5ffb05d2
7
+ data.tar.gz: 6a8c1c8f7d8deca7663699f7f20ea0e9cf7e7608b2d93150fb2fd4da438780fecff010332e43675800f94012739bfcda6a85dd27df1055958e6de0bbd4c158ab
@@ -13,6 +13,9 @@ module Datahen
13
13
  finisher: nil
14
14
  }
15
15
 
16
+ CHECK_NIL = lambda{|v|v.nil?}
17
+ CHECK_EMPTY_BODY = lambda{|v|v.body.nil? || v.body.empty?}
18
+
16
19
  def self.env_auth_token
17
20
  ENV['DATAHEN_TOKEN']
18
21
  end
@@ -56,14 +59,14 @@ module Datahen
56
59
  target.merge(source.select{|k,v|target.has_key?(k)})
57
60
  end
58
61
 
59
- def retry times, delay = nil, err_msg = nil, stream = false
62
+ def retry(times, delay = nil, err_msg = nil, stream = false, check_nil = CHECK_NIL)
60
63
  limit = times.nil? ? nil : times.to_i
61
64
  delay = delay.nil? ? 5 : delay.to_i
62
65
  count = 0
63
66
  begin
64
67
  val = yield
65
68
  if stream
66
- return if val.nil?
69
+ return if check_nil.call(val)
67
70
  if val['error'] != ""
68
71
  raise StandardError.new(val['error'])
69
72
  end
@@ -60,7 +60,7 @@ module Datahen
60
60
  params = @options.merge({body: body.to_json})
61
61
 
62
62
  limit = opts.has_key?(:retry_limit) ? opts.fetch(:retry_limit) : self.default_retry_limit[:seeder]
63
- self.retry(limit, 5, "Error while updating the seeder.") do
63
+ self.retry(limit, 5, "Error while updating the seeder.", false, CHECK_EMPTY_BODY) do
64
64
  response = self.class.put("/jobs/#{job_id}/seeding_update", params)
65
65
  if response.code == 422 && response.body.to_s =~ /pq:\s*deadlock/i
66
66
  raise CustomRetryError.new(self.class.random_delay(5), response.body.to_s)
@@ -78,7 +78,7 @@ module Datahen
78
78
  params = @options.merge({body: body.to_json})
79
79
 
80
80
  limit = opts.has_key?(:retry_limit) ? opts.fetch(:retry_limit) : self.default_retry_limit[:finisher]
81
- self.retry(limit, 5, "Error while updating the finisher.") do
81
+ self.retry(limit, 5, "Error while updating the finisher.", false, CHECK_EMPTY_BODY) do
82
82
  response = self.class.put("/jobs/#{job_id}/finisher_update", params)
83
83
  if response.code == 422 && response.body.to_s =~ /pq:\s*deadlock/
84
84
  raise CustomRetryError.new(self.class.random_delay(5), response.body.to_s)
@@ -7,7 +7,7 @@ module Datahen
7
7
 
8
8
  def all(job_id, collection = 'default', opts = {})
9
9
  limit = opts.has_key?(:retry_limit) ? opts.fetch(:retry_limit) : 0
10
- self.retry(limit, 10, "Error while updating the seeder.", true) do
10
+ self.retry(limit, 10, "Error while updating the seeder.", true, CHECK_EMPTY_BODY) do
11
11
  self.class.get("/jobs/#{job_id}/output/collections/#{collection}/records", @options)
12
12
  end
13
13
  end
@@ -63,7 +63,7 @@ module Datahen
63
63
  params = @options.merge({body: body.to_json})
64
64
 
65
65
  limit = opts.has_key?(:retry_limit) ? opts.fetch(:retry_limit) : self.default_retry_limit[:parser]
66
- self.retry(limit, 5, "Error while updating the parser.") do
66
+ self.retry(limit, 5, "Error while updating the parser.", false, CHECK_EMPTY_BODY) do
67
67
  response = self.class.put("/jobs/#{job_id}/pages/#{gid}/parsing_update", params)
68
68
  if response.code == 422 && response.body.to_s =~ /pq:\s*deadlock/i
69
69
  raise Error::CustomRetryError.new(self.class.random_delay(5), response.body.to_s)
@@ -219,8 +219,9 @@ module Datahen
219
219
  self.dequeuer_is_alive!
220
220
 
221
221
  # ensure a valid response or try again
222
- if response.body.nil? || response.body.empty? || response.response.code.to_i != 200
223
- self.repeat_puts(response.nil? ? 'null' : response.body)
222
+ has_empty_response = (response.body.nil? || response.body.empty?)
223
+ if has_empty_response || response.response.code.to_i != 200
224
+ self.repeat_puts(has_empty_response ? 'null' : response.body)
224
225
  self.recollect_garbage
225
226
  return 0
226
227
  end
@@ -1,3 +1,3 @@
1
1
  module Datahen
2
- VERSION = "1.5.1"
2
+ VERSION = "1.5.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datahen
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
4
+ version: 1.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Parama Danoesubroto
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-08 00:00:00.000000000 Z
11
+ date: 2024-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor