balsamique 0.1.1 → 0.1.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/balsamique.rb +17 -1
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 875fa74f76e93f583746ce80088297a1d0ee34ac
4
- data.tar.gz: 0554405360376134aff714697848c98cb911b959
3
+ metadata.gz: 97da891f4d7cc4a5fb4937242efb0b19ff59b2ea
4
+ data.tar.gz: 98e1e8d0209f5f156386ed555b24091a3075c196
5
5
  SHA512:
6
- metadata.gz: 173858d448408ba15351c0bcb908b615a403de5bdacc694e3caa3ff4708213dc6d4e84a23776585f755e8bb2e5036d8691903237d361e92b36a01885e07b6f09
7
- data.tar.gz: be3fe7aff6d2fd2589abfc3173b8fe57c94dbda2e7a658a3730d6c84771c16a08d88ba9b4ed9612db3cd0fcf0c1751ae119a8e7e39a08d6cf2a425b0ac29e2b2
6
+ metadata.gz: 7a062e41ec03c5c37a88c272c07415fb143c2c6664dd1581830d8273c7d7b6635f4370019bc616b7788e0db145ee6fe830e3bf6101b8e120ac879bc44f645f6c
7
+ data.tar.gz: 027de2bdcfb47d070c8ac40b39ad1998ec987b33a91aaf787f79a8d061c10ed072a6668e4ab469c1f83b85a0dfb3125a2b116f1ac9404dcfe104cdb6142e3f3d
data/lib/balsamique.rb CHANGED
@@ -24,6 +24,10 @@ class Balsamique
24
24
  REPORT_RETRY_DELAY = 60.0 # seconds
25
25
  RETRY_DELAY = 600.0 # seconds
26
26
 
27
+ def rand_delay(delay = RETRY_DELAY)
28
+ delay - 0.5 * rand() * delay
29
+ end
30
+
27
31
  def redis
28
32
  @redis
29
33
  end
@@ -74,6 +78,18 @@ class Balsamique
74
78
  self.assemble_timestamp(self.dec36(echunk), self.dec36(eslice))
75
79
  end
76
80
 
81
+ SET_ID_FLOOR = <<EOF
82
+ local floor = tonumber(ARGV[1])
83
+ local id = tonumber(redis.call('hget', KEYS[1], ''))
84
+ if (not id) or floor > id then
85
+ redis.call('hset', KEYS[1], '', floor)
86
+ end
87
+ EOF
88
+ SET_ID_FLOOR_SHA = Digest::SHA1.hexdigest(SET_ID_FLOOR)
89
+ def set_id_floor(id_floor)
90
+ redis_eval(SET_ID_FLOOR_SHA, SET_ID_FLOOR, [@unique], [id_floor.to_i])
91
+ end
92
+
77
93
  # Lua script ENQUEUE_JOB takes keys
78
94
  # [tasks_h, args_h, jobstat_h, task1_z, queues_h, uniq_h]
79
95
  # and args [tasks, args, run_at, uniq].
@@ -152,7 +168,7 @@ end
152
168
  EOF
153
169
  DEQUEUE_TASK_SHA = Digest::SHA1.hexdigest(DEQUEUE_TASK)
154
170
 
155
- def dequeue(tasks, retry_delay = RETRY_DELAY, timestamp = Time.now.to_f)
171
+ def dequeue(tasks, retry_delay = rand_delay, timestamp = Time.now.to_f)
156
172
  stats_chunk, stats_slice = self.class.enc36_slice_timestamp(timestamp)
157
173
  questats_key = @questats_prefix + stats_chunk
158
174
  keys = [@args, @tasks, questats_key, @retries]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: balsamique
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - DWNLD
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-04 00:00:00.000000000 Z
11
+ date: 2016-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis