diff options
Diffstat (limited to 'worker_node/lib/event_channel.rb')
-rw-r--r-- | worker_node/lib/event_channel.rb | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/worker_node/lib/event_channel.rb b/worker_node/lib/event_channel.rb index 9574bc7..c1c0d9c 100644 --- a/worker_node/lib/event_channel.rb +++ b/worker_node/lib/event_channel.rb @@ -2,18 +2,20 @@ class EventChannel class << self def setup return if @dalli - @dalli = Dalli::Client.new(Settings.memcached, namespace: "aclog-worker-node:") + @dalli = Dalli::Client.new(Settings.memcached, namespace: "aclog-worker-node") @channel = EM::Channel.new end def push(data) raise ScriptError, "Call EventChannel.setup first" unless @dalli if id = data[:identifier] - if @dalli.get(id) - WorkerNode.logger.debug("UniqueChannel") { "Duplicate event: #{id}" } + key, val = id.split("#", 2) + cur = @dalli.get(key) + if cur && (!val || (cur <=> val) > -1) + WorkerNode.logger.debug("UniqueChannel") { "Duplicate event: #{key}" } return else - @dalli.set(id, true) + @dalli.set(key, val || true) end end @channel << data |