Sha256: 71c3edc9990ac31a18949de84d616192c7a8cd8f5505af4e1c426bf10154f979

Contents?: true

Size: 1.58 KB

Versions: 38

Compression:

Stored size: 1.58 KB

Contents

local function find_digest_in_process_set(digest, threshold)
  local process_cursor = 0
  local job_cursor     = 0
  local pattern        = "*" .. digest .. "*"
  local found          = false

  log_debug("Searching in process list",
            "for digest:", digest,
            "cursor:", process_cursor)

  repeat
    local process_paginator   = redis.call("SSCAN", "processes", process_cursor, "MATCH", "*")
    local next_process_cursor = process_paginator[1]
    local processes           = process_paginator[2]
    log_debug("Found number of processes:", #processes, "next cursor:", next_process_cursor)

    for _, process in ipairs(processes) do
      local workers_key = process .. ":workers"
      log_debug("searching in process set:", process,
                "for digest:", digest,
                "cursor:", process_cursor)

      local jobs = redis.call("HGETALL", workers_key)

      if #jobs == 0 then
        log_debug("No entries in:", workers_key)
      else
        for i = 1, #jobs, 2 do
          local jobstr = jobs[i +1]
          if string.find(string.gsub(jobstr, ':RUN', ''), string.gsub(digest, ':RUN', '')) then
            log_debug("Found digest", digest, "in:", workers_key)
            found = true
            break
          end

          local job = cjson.decode(jobstr)
          if job.payload.created_at > threshold then
            found = true
            break
          end
        end
      end

      if found == true then
        break
      end
    end

    process_cursor = next_process_cursor
  until found == true or process_cursor == "0"

  return found
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
sidekiq-unique-jobs-8.0.0 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.29 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.28 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.27 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.26 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.25 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.24 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.23 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.22 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.21 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.20 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.19 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.18 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.17 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.16 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.15 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.14 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.13 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.12 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua
sidekiq-unique-jobs-7.1.11 lib/sidekiq_unique_jobs/lua/shared/_find_digest_in_process_set.lua