gaffer_hooks behaviour (gaffer v0.7.0)
View SourceHook 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.
[gaffer, queue, create]:queue_create_event/0[gaffer, queue, update]:queue_update_event/0[gaffer, queue, pause]:queue_pause_event/0[gaffer, queue, resume]:queue_resume_event/0[gaffer, queue, delete]:queue_delete_event/0[gaffer, job, insert]:job_insert_event/0[gaffer, job, claim]:job_claim_event/0[gaffer, job, complete]:job_complete_event/0[gaffer, job, fail]:job_fail_event/0[gaffer, job, cancel]:job_cancel_event/0[gaffer, job, schedule]:job_schedule_event/0[gaffer, job, delete]:job_delete_event/0
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
-type actor() :: user | worker | runner | pruner.
Identifies which Gaffer process or the public API caused an event.
-type event() :: [atom()].
Hook event path.
-type event_data() :: queue_create_event() | queue_update_event() | queue_pause_event() | queue_resume_event() | queue_delete_event() | job_insert_event() | job_claim_event() | job_complete_event() | job_fail_event() | job_cancel_event() | job_schedule_event() | job_delete_event().
Union of all hook event payloads.
A hook module or function.
-type hook_fun() :: fun((event(), event_data()) -> term()).
A hook callback function.
-type job_cancel_event() :: #{actor := user | worker, job := gaffer:job()}.
Payload for [gaffer, job, cancel].
Triggered by actors:
userviagaffer:cancel/2.workerwhengaffer_worker:perform/1returns{cancel, _}.
-type job_claim_event() :: #{actor := runner, queue := gaffer:queue(), jobs := [gaffer:job()]}.
Payload for [gaffer, job, claim].
Triggered by actors:
runnerwhen claiming jobs from the storage driver.
-type job_complete_event() :: #{actor := worker, job := gaffer:job()}.
Payload for [gaffer, job, complete].
Triggered by actors:
workerwhengaffer_worker:perform/1returnscompleteor{complete, _}.
-type job_delete_event() :: #{actor := user | pruner, queue := gaffer:queue(), job_id := gaffer:job_id()}.
Payload for [gaffer, job, delete].
Triggered by actors:
userviagaffer:delete/2orgaffer:prune/1.pruneron its periodic prune timer.
-type job_fail_event() :: #{actor := worker | runner, job := gaffer:job()}.
Payload for [gaffer, job, fail].
Triggered by actors:
workerwhengaffer_worker:perform/1returns{fail, _}or the worker process crashes.runnerwhen killing the worker on timeout.
-type job_insert_event() :: #{actor := user | worker, job := gaffer:job()}.
Payload for [gaffer, job, insert].
Triggered by actors:
userviagaffer:insert/2orgaffer:insert/3.workerwhen forwarding a terminal-state job to itsforwardtarget queue.
-type job_schedule_event() :: #{actor := worker, job := gaffer:job()}.
Payload for [gaffer, job, schedule].
Triggered by actors:
workerwhengaffer_worker:perform/1returns{schedule, _}.
-type queue_create_event() :: #{actor := user, queue := gaffer:queue(), conf := gaffer:queue_conf()}.
Payload for [gaffer, queue, create].
Triggered by actors:
userviagaffer:create_queue/1, or viagaffer:ensure_queue/1when the queue does not yet exist.
-type queue_delete_event() :: #{actor := user, queue := gaffer:queue()}.
Payload for [gaffer, queue, delete].
Triggered by actors:
userviagaffer:delete_queue/1orgaffer:delete_queue/2.
-type queue_pause_event() :: #{actor := user, queue := gaffer:queue()}.
Payload for [gaffer, queue, pause].
Triggered by actors:
userviagaffer:pause/1.
-type queue_resume_event() :: #{actor := user, queue := gaffer:queue()}.
Payload for [gaffer, queue, resume].
Triggered by actors:
userviagaffer:resume/1.
-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:
userviagaffer:update_queue/2(sourceisupdate), or viagaffer:ensure_queue/1when the queue already exists (sourceisensureandupdatesis#{}).
Callbacks
-callback gaffer_hook(event(), event_data()) -> term().
Called after queue and job events with event-specific payload.