gaffer_hooks behaviour (gaffer v0.7.0)

View Source

Hook behaviour for observing queue and job events.

Every hook callback receives an event path and a payload map. The payload always carries an actor field identifying which Gaffer process (or the user) caused the event. See each event's type below for its path, payload shape, and actors.

Summary

Types

Identifies which Gaffer process or the public API caused an event.

Hook event path.

Union of all hook event payloads.

A hook module or function.

A hook callback function.

Payload for [gaffer, job, cancel].

Payload for [gaffer, job, claim].

Payload for [gaffer, job, complete].

Payload for [gaffer, job, delete].

Payload for [gaffer, job, fail].

Payload for [gaffer, job, insert].

Payload for [gaffer, job, schedule].

Payload for [gaffer, queue, create].

Payload for [gaffer, queue, delete].

Payload for [gaffer, queue, pause].

Payload for [gaffer, queue, resume].

Payload for [gaffer, queue, update].

Callbacks

Called after queue and job events with event-specific payload.

Types

actor()

-type actor() :: user | worker | runner | pruner.

Identifies which Gaffer process or the public API caused an event.

event()

-type event() :: [atom()].

Hook event path.

event_data()

Union of all hook event payloads.

hook()

-type hook() :: module() | hook_fun().

A hook module or function.

hook_fun()

-type hook_fun() :: fun((event(), event_data()) -> term()).

A hook callback function.

job_cancel_event()

-type job_cancel_event() :: #{actor := user | worker, job := gaffer:job()}.

Payload for [gaffer, job, cancel].

Triggered by actors:

job_claim_event()

-type job_claim_event() :: #{actor := runner, queue := gaffer:queue(), jobs := [gaffer:job()]}.

Payload for [gaffer, job, claim].

Triggered by actors:

  • runner when claiming jobs from the storage driver.

job_complete_event()

-type job_complete_event() :: #{actor := worker, job := gaffer:job()}.

Payload for [gaffer, job, complete].

Triggered by actors:

job_delete_event()

-type job_delete_event() ::
          #{actor := user | pruner, queue := gaffer:queue(), job_id := gaffer:job_id()}.

Payload for [gaffer, job, delete].

Triggered by actors:

job_fail_event()

-type job_fail_event() :: #{actor := worker | runner, job := gaffer:job()}.

Payload for [gaffer, job, fail].

Triggered by actors:

  • worker when gaffer_worker:perform/1 returns {fail, _} or the worker process crashes.
  • runner when killing the worker on timeout.

job_insert_event()

-type job_insert_event() :: #{actor := user | worker, job := gaffer:job()}.

Payload for [gaffer, job, insert].

Triggered by actors:

job_schedule_event()

-type job_schedule_event() :: #{actor := worker, job := gaffer:job()}.

Payload for [gaffer, job, schedule].

Triggered by actors:

queue_create_event()

-type queue_create_event() :: #{actor := user, queue := gaffer:queue(), conf := gaffer:queue_conf()}.

Payload for [gaffer, queue, create].

Triggered by actors:

queue_delete_event()

-type queue_delete_event() :: #{actor := user, queue := gaffer:queue()}.

Payload for [gaffer, queue, delete].

Triggered by actors:

queue_pause_event()

-type queue_pause_event() :: #{actor := user, queue := gaffer:queue()}.

Payload for [gaffer, queue, pause].

Triggered by actors:

queue_resume_event()

-type queue_resume_event() :: #{actor := user, queue := gaffer:queue()}.

Payload for [gaffer, queue, resume].

Triggered by actors:

queue_update_event()

-type queue_update_event() ::
          #{actor := user,
            queue := gaffer:queue(),
            conf := gaffer:queue_conf(),
            updates := map(),
            source := ensure | update}.

Payload for [gaffer, queue, update].

Triggered by actors:

Callbacks

gaffer_hook/2

-callback gaffer_hook(event(), event_data()) -> term().

Called after queue and job events with event-specific payload.