Hi all,
I am using Oban for the first time and I am experiencing a weird behaviour.
I have this config
config :services, MyApp.Repo,
url: "postgres://postgres:postgres@postgres:5432/myapp",
stacktrace: true,
show_sensitive_data_on_connection_error: true,
pool_size: 10
config :services, Oban,
repo: MyApp.Repo,
queues: [
default: 1,
],
plugins: [
Oban.Plugins.Pruner
]
When I launch this job
defmodule Services.Jobs.ObanTest do
@moduledoc false
use Oban.Worker, queue: :default
require Logger
def perform(%Job{args: %{"id" => id}}) do
Logger.info("#{id}: processing ...")
Process.sleep(100)
:ok
end
def perform(%Job{}) do
Logger.info("Enqueueing jobs ...")
jobs = for i <- 1..100, do: new(%{"id" => i})
Oban.insert_all(jobs)
:ok
end
end
Oban processes all the jobs but in weird timing:
09:11:31.156 pid=<0.1709.0> [info] Enqueueing jobs ...
09:11:31.255 pid=<0.1710.0> [info] 7: processing ...
09:11:31.364 pid=<0.1711.0> [info] 18: processing ...
09:11:31.472 pid=<0.1712.0> [info] 32: processing ...
09:11:31.581 pid=<0.1713.0> [info] 46: processing ...
09:11:31.689 pid=<0.1714.0> [info] 60: processing ...
09:11:31.798 pid=<0.1715.0> [info] 74: processing ...
09:11:31.907 pid=<0.1716.0> [info] 89: processing ...
09:11:47.313 pid=<0.1717.0> [info] 1: processing ...
09:11:48.292 pid=<0.1718.0> [info] 15: processing ...
09:11:48.402 pid=<0.1719.0> [info] 88: processing ...
09:11:49.298 pid=<0.1720.0> [info] 13: processing ...
09:11:49.406 pid=<0.1721.0> [info] 38: processing ...
09:11:49.514 pid=<0.1722.0> [info] 67: processing ...
09:11:49.622 pid=<0.1723.0> [info] 85: processing ...
09:11:50.318 pid=<0.1724.0> [info] 25: processing ...
09:11:50.428 pid=<0.1725.0> [info] 68: processing ...
09:12:06.445 pid=<0.1726.0> [info] 19: processing ...
Why does it sometimes stop for +/- 15 seconds ?
Is it due to my Repo configuration ?
Edit: and sometimes I do have the feeling that not everything is enqueued:
iex(11)> 09:49:05.143 pid=<0.782.0> [info] 21: processing ...
09:49:05.143 pid=<0.783.0> [info] 22: processing ...
09:49:05.143 pid=<0.784.0> [info] 23: processing ...
09:49:05.144 pid=<0.786.0> [info] 25: processing ...
09:49:05.144 pid=<0.785.0> [info] 24: processing ...
09:49:05.144 pid=<0.787.0> [info] 26: processing ...
09:49:05.144 pid=<0.788.0> [info] 27: processing ...
09:49:05.144 pid=<0.789.0> [info] 28: processing ...
09:49:05.144 pid=<0.790.0> [info] 29: processing ...
09:49:05.144 pid=<0.791.0> [info] 30: processing ...
09:49:05.144 pid=<0.792.0> [info] 31: processing ...
09:49:05.144 pid=<0.793.0> [info] 32: processing ...
09:49:05.144 pid=<0.794.0> [info] 33: processing ...
09:49:05.144 pid=<0.795.0> [info] 34: processing ...
09:49:05.144 pid=<0.796.0> [info] 35: processing ...
09:49:05.144 pid=<0.797.0> [info] 36: processing ...
09:49:05.144 pid=<0.798.0> [info] 37: processing ...
09:49:05.144 pid=<0.799.0> [info] 38: processing ...
09:49:05.144 pid=<0.800.0> [info] 39: processing ...
09:49:05.145 pid=<0.801.0> [info] 40: processing ...
nil
iex(12)> Oban.cancel_all_jobs(Oban.Job)
{:ok, 0}
Am I missing something ?
Regards.