Anvil.Workers.AgreementRecompute (Anvil v0.1.1)

View Source

Background job worker that recomputes agreement metrics for labeled samples.

This worker can be scheduled to run periodically (nightly at 2 AM) or triggered on-demand for specific queues. It processes samples in batches to compute inter-rater agreement scores when multiple labelers have labeled the same sample.

Configuration

Queue: :agreement Max Attempts: 5 Priority: 2 (medium priority)

Scheduled Execution

Configured in config.exs via Oban.Plugins.Cron:

{"0 2 * * *", Anvil.Workers.AgreementRecompute}

Job Arguments

  • queue_id (optional) - If provided, only recomputes agreement for samples in this queue
  • batch_size (optional) - Number of samples to process per batch (default: 100)

Telemetry

Emits the following telemetry events:

  • [:anvil, :workers, :agreement_recompute, :started] - Job execution started
  • [:anvil, :workers, :agreement_recompute, :batch_processed] - Batch completed
  • [:anvil, :workers, :agreement_recompute, :completed] - Job completed successfully

Summary

Functions

Enqueues an agreement recomputation job for a specific queue.

Functions

enqueue(queue_id, opts \\ [])

@spec enqueue(
  String.t(),
  keyword()
) :: {:ok, Oban.Job.t()} | {:error, term()}

Enqueues an agreement recomputation job for a specific queue.

Uses uniqueness constraints to prevent duplicate jobs for the same queue within a 24-hour period.

Options

  • :batch_size - Number of samples per batch (default: 100)
  • :unique_period - Uniqueness window in milliseconds (default: 24 hours)