brian.meeker

brian.meeker

We are currently upgrading to the latest Oban and Oban Pro dependencies and are seeing an issue testing workflows that cancel jobs.

This is a simplified version of the test we are running. The idea is that something happens in CancelWorker that causes us to cancel the rest of the workflow. RecordArgsWorker is a test helper job we use.

workflow_id = "test-workflow"

Workflow.new(workflow_id: workflow_id)
|> Workflow.add(:a, RecordArgsWorker.new(%{}))
|> Workflow.add(
  :b,
  CancelWorker.new(%{}),
  deps: [:a]
)
|> Workflow.add(:c, RecordArgsWorker.new(%{}), deps: [:b])

assert %{completed: 1, cancelled: 2} = run_workflow(workflow)

This test worked with Oban 2.18.3 and Oban Pro 1.5.0-rc.7. It fails after we upgrade to Oban 2.19.1 and Oban Pro 1.5.0 with the following exception.

** (Ecto.Query.CastError) deps/oban_pro/lib/oban/pro/engines/smart.ex:1393: value `"draining"` cannot be dumped to type :binary_id in query:

     from p0 in Oban.Pro.Producer,
       where: p0.uuid == ^"draining",
       where: fragment("?->'global_limit' ? 'tracked'", p0.meta),
       select: p0

     stacktrace:
       (elixir 1.17.3) lib/enum.ex:2531: Enum."-reduce/3-lists^foldl/2-0-"/3
       (elixir 1.17.3) lib/enum.ex:1829: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3
       (elixir 1.17.3) lib/enum.ex:2531: Enum."-reduce/3-lists^foldl/2-0-"/3
       (ecto 3.12.5) lib/ecto/repo/queryable.ex:214: Ecto.Repo.Queryable.execute/4
       (ecto 3.12.5) lib/ecto/repo/queryable.ex:19: Ecto.Repo.Queryable.all/3
       (ecto 3.12.5) lib/ecto/repo/queryable.ex:154: Ecto.Repo.Queryable.one/3
       (oban_pro 1.5.0) lib/oban/pro/engines/smart.ex:1395: anonymous fn/2 in Oban.Pro.Engines.Smart.track_cancelled_jobs/2
       (elixir 1.17.3) lib/enum.ex:992: anonymous fn/3 in Enum.each/2
       (stdlib 6.1.2) maps.erl:860: :maps.fold_1/4
       (elixir 1.17.3) lib/enum.ex:2543: Enum.each/2

Digging through code in my deps directory, I see how the invalid UUID gets there when draining jobs, but I’m not sure what the fix is. And I don’t want to be posting Oban Pro code here. :sweat_smile:

Is this a known issue? We can wait on the upgrade if necessary until this is fixed or we find a workaround.

Showing Posts 1 to 2

sorentwo

sorentwo

Oban Core Team

The “fix” to isolate draining workflows was added in a subsequent RC. It makes sense that it would fail after upgrading.

Much appreciated! We’ll take care of the fix :slightly_smiling_face:

It wasn’t a known issue, but it is now. There’s no real workaround and you’ll need to hold off on an upgrade until we get a patch out.

brian.meeker

brian.meeker OP

This issue has been fixed in Oban Pro 1.5.1. Thanks to @sorentwo for the fix!

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

Latest on Elixir Forum

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews