defmodule Microwaveprop.Workers.Era5MonthBatchWorker do @moduledoc """ Legacy entry point for the ERA5 month-tile backfill. **Forwards** to `Era5SubmitWorker` in the new split-worker pipeline — kept in place so already-enqueued callers (`Era5FetchWorker`, `mix era5.backfill`, any in-flight Oban rows) don't need to be changed on the same deploy. On the next deploy cycle, callers will be updated to enqueue `Era5SubmitWorker` directly and this module can be removed. """ use Oban.Worker, queue: :era5_submit, max_attempts: 5, unique: [ period: :infinity, states: [:available, :scheduled, :executing, :retryable], keys: [:year, :month, :tile_lat, :tile_lon] ] alias Microwaveprop.Workers.Era5SubmitWorker require Logger @impl Oban.Worker def backoff(%Oban.Job{attempt: attempt}) do # Forwarding is cheap; retry fast on transient failure. min(30 * Integer.pow(2, attempt - 1), 3_600) end @impl Oban.Worker def perform(%Oban.Job{args: args}) do Logger.debug("Era5MonthBatchWorker forwarding to Era5SubmitWorker: #{inspect(args)}") args |> Era5SubmitWorker.new() |> Oban.insert() |> case do {:ok, _job} -> :ok {:error, reason} -> {:error, reason} end end end