class ThinkingSphinx::Deltas::SidekiqDelta
Constants
- JOB_PREFIX
- JOB_TYPES
Public Class Methods
clear!()
click to toggle source
Clear both the resque queues and any other state maintained in redis
# File lib/thinking_sphinx/deltas/sidekiq_delta.rb, line 22 def self.clear! self.clear_thinking_sphinx_queues FlagAsDeletedSet.clear_all! end
clear_thinking_sphinx_queues()
click to toggle source
LTRIM + LPOP deletes all items from the Resque queue without loading it into client memory (unlike Resque.dequeue). WARNING: This will clear ALL jobs in any queue used by a ResqueDelta job. If you're sharing a queue with other jobs they'll be deleted!
# File lib/thinking_sphinx/deltas/sidekiq_delta.rb, line 12 def self.clear_thinking_sphinx_queues JOB_TYPES.collect { |job| job.sidekiq_options['queue'] }.uniq.each do |queue| Sidekiq.redis { |redis| redis.srem "queues", queue } Sidekiq.redis { |redis| redis.del "queue:#{queue}" } end end
lock(index_name)
click to toggle source
Use simplistic locking. We're assuming that the user won't run more than one `rake ts:si` or `rake ts:in` task at a time.
# File lib/thinking_sphinx/deltas/sidekiq_delta.rb, line 30 def self.lock(index_name) Sidekiq.redis {|redis| redis.set("#{JOB_PREFIX}:index:#{index_name}:locked", 'true') } end
locked?(index_name)
click to toggle source
# File lib/thinking_sphinx/deltas/sidekiq_delta.rb, line 42 def self.locked?(index_name) Sidekiq.redis {|redis| redis.get("#{JOB_PREFIX}:index:#{index_name}:locked") == 'true' } end
unlock(index_name)
click to toggle source
# File lib/thinking_sphinx/deltas/sidekiq_delta.rb, line 36 def self.unlock(index_name) Sidekiq.redis {|redis| redis.del("#{JOB_PREFIX}:index:#{index_name}:locked") } end
Public Instance Methods
delete(index, instance)
click to toggle source
# File lib/thinking_sphinx/deltas/sidekiq_delta.rb, line 48 def delete(index, instance) return if self.class.locked?(index.reference) ThinkingSphinx::Deltas::SidekiqDelta::FlagAsDeletedJob.perform_async( index.name, index.document_id_for_key(instance.id) ) end
index(index)
click to toggle source
# File lib/thinking_sphinx/deltas/sidekiq_delta.rb, line 56 def index(index) return if self.class.locked?(index.reference) ThinkingSphinx::Deltas::SidekiqDelta::DeltaJob.perform_async(index.name) end