redis-scheduler 0.4 → 0.5

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 (2) hide show
  1. data/lib/redis-scheduler.rb +10 -14
  2. metadata +2 -2
@@ -120,22 +120,18 @@ private
120
120
  ## zset yourself.
121
121
  class InvalidEntryException < StandardError; end
122
122
  def nonblocking_get descriptor
123
- catch :cas_retry do
123
+ loop do
124
124
  @redis.watch @queue
125
125
  entry, at = @redis.zrangebyscore @queue, 0, Time.now.to_f, :withscores => true, :limit => [0, 1]
126
- if entry
127
- entry =~ /^\d+:(\S+)$/ or raise InvalidEntryException, entry
128
- item = $1
129
- processing_descriptor = Marshal.dump [item, Time.now.to_i, descriptor]
130
- @redis.multi do # try and grab it
131
- @redis.zrem @queue, entry
132
- @redis.sadd @processing_set, processing_descriptor
133
- end or begin
134
- sleep CAS_DELAY
135
- throw :cas_retry
136
- end
137
- [item, processing_descriptor, Time.at(at.to_f)]
138
- end
126
+ break unless entry
127
+ entry =~ /^\d+:(\S+)$/ or raise InvalidEntryException, entry
128
+ item = $1
129
+ descriptor = Marshal.dump [item, Time.now.to_i, descriptor]
130
+ @redis.multi do # try and grab it
131
+ @redis.zrem @queue, entry
132
+ @redis.sadd @processing_set, descriptor
133
+ end and break [item, descriptor, Time.at(at.to_f)]
134
+ sleep CAS_DELAY # transaction failed. retry!
139
135
  end
140
136
  end
141
137
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.4'
4
+ version: '0.5'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-12 00:00:00.000000000 Z
12
+ date: 2012-05-28 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A basic chronological scheduler for Redis. Add work items to be processed
15
15
  at specific times in the future, and easily retrieve all items that are ready for