Sha256: c9e25be8ee768f646592ddca70bffa7620622779060905be93cccc57840c07ec

Contents?: true

Size: 1009 Bytes

Versions: 30

Compression:

Stored size: 1009 Bytes

Contents

require "gem_stasher"

class GemStashUpdateWorker
  include Sidekiq::Worker

  sidekiq_options :retry => false

  def perform
    begin
      TerminalBuild.stash_worker_lock.lock do
        while TerminalBuild.stash_counter.getset(0) > 0
          update_stash!
        end
      end
    rescue Redis::Lock::LockTimeout => e
      Sidekiq::Logging.logger.warn "Lock timeout."

      # To avoid excessive cpu burning but still ensure robust updates
      GemStashUpdateWorker.perform_in 1.minute
    end
  end

  def update_stash!
    builds = TerminalBuild.all

    stasher = GemStasher.new Sidekiq::Logging.logger, Rails.root.join("public/gems")
    stasher.maintain_cache builds.map(&:path)
    stasher.update_index

    TerminalBuild.transaction do
      builds.each do |build|
        begin
          build.gems_ready = true

          build.save!
        rescue => e
          Sidekiq::Logging.logger.warn "error occured during update of build #{build.id}: #{e}"
        end
      end
    end

  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
smartkiosk-server-0.13.1 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.13 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.12.1 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.12 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.11 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.10 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.9 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.8 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.7 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.6 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.5 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.4 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.3 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.2 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11.1 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.11 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.10.19 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.10.18 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.10.17 app/workers/gem_stash_update_worker.rb
smartkiosk-server-0.10.16 app/workers/gem_stash_update_worker.rb