This page needs JavaScript to show the specification. The source is in
spec/ on GitHub
.
action_failure_no_rollback
p_request->t_call
p_slot->t_call
t_call->j_call__and_0
j_call__and_0->p_slot
j_call__and_0->p_reply
p_request
request
p_slot
slot
p_reply
reply
t_call
call
j_call__and_0
✚
and_fork_join
p_order->t_split
p_pack->t_ship
p_invoice->t_ship
t_split->j_split__and_0
t_ship->p_shipped
j_split__and_0->p_pack
j_split__and_0->p_invoice
p_order
order
p_pack
pack
p_invoice
invoice
p_shipped
shipped
t_split
split
t_ship
ship
j_split__and_0
✚
clock_restart
p_typing->t_type
p_activity->t_touch
p_session->t_touch
p_session->t_expire
t_type->p_activity
t_touch->p_session
t_expire->p_expired
p_typing
typing
p_activity
activity
p_session
session
p_expired
expired
t_type
type [10000, ∞]ms
t_touch
touch [0, ∞]ms
t_expire
expire [30000, ∞]ms
competing_for_one_token
p_offer->t_left
p_offer->t_right
t_left->p_leftDone
t_right->p_rightDone
p_offer
offer
p_leftDone
leftDone
p_rightDone
rightDone
t_left
left
t_right
right
deadline_reaps
p_ticket->t_answer
p_reminder->t_reopen
t_answer->p_answered
t_reopen->p_ticket
p_ticket
ticket
p_answered
answered
p_reminder
reminder
t_answer
answer [0, 500]ms
t_reopen
reopen [2000, 2000]ms
deadlock_found
p_jobs->t_grabA
p_jobs->t_grabB
p_lockA->t_grabA
p_lockA->t_finishB
p_holdsA->t_finishA
p_lockB->t_grabB
p_lockB->t_finishA
p_holdsB->t_finishB
t_grabA->p_holdsA
t_grabB->p_holdsB
t_finishA->j_finishA__and_0
t_finishB->j_finishB__and_0
j_finishA__and_0->p_lockA
j_finishA__and_0->p_lockB
j_finishA__and_0->p_done
j_finishB__and_0->p_lockA
j_finishB__and_0->p_lockB
j_finishB__and_0->p_done
p_jobs
jobs
p_lockA
lockA
p_holdsA
holdsA
p_lockB
lockB
p_holdsB
holdsB
p_done
done
t_grabA
grabA
t_grabB
grabB
t_finishA
finishA
t_finishB
finishB
j_finishA__and_0
✚
j_finishB__and_0
✚
deadlock_free_proved
p_jobs->t_takeA
p_lockA->t_takeA
p_holdsA->t_takeB
p_lockB->t_takeB
p_holdsBoth->t_finish
t_takeA->p_holdsA
t_takeB->p_holdsBoth
t_finish->j_finish__and_0
j_finish__and_0->p_lockA
j_finish__and_0->p_lockB
j_finish__and_0->p_done
p_jobs
jobs
p_lockA
lockA
p_holdsA
holdsA
p_lockB
lockB
p_holdsBoth
holdsBoth
p_done
done
t_takeA
takeA
t_takeB
takeB
t_finish
finish
j_finish__and_0
✚
delayed_fallback
p_pending->t_deliver
p_pending->t_fallback
p_reply->t_deliver
t_deliver->p_delivered
t_fallback->p_fellBack
p_pending
pending
p_reply
reply
p_delivered
delivered
p_fellBack
fellBack
t_deliver
deliver [0, ∞]ms prio=10
t_fallback
fallback [3000, ∞]ms prio=-10
drain_then_close
p_order->t_pack
p_packed->t_ship
t_pack->p_packed
t_ship->p_shipped
p_order
order
p_packed
packed
p_shipped
shipped
t_pack
pack
t_ship
ship
environment_injection
p_request->t_serve
p_worker->t_serve
t_serve->j_serve__and_0
j_serve__and_0->p_worker
j_serve__and_0->p_reply
p_request
request
p_worker
worker
p_reply
reply
t_serve
serve
j_serve__and_0
✚
how_a_net_is_drawn
p_inbox->t_triage
×2
p_archive->t_compact
≥3
p_review->t_flush
*
p_paused->t_triage
p_config->t_triage
read
t_triage->j_triage__xor_0
t_flush->p_log
reset+out
t_compact->p_paused
j_triage__xor_0->p_archive
archive
j_triage__xor_0->j_triage__and_1
j_triage__and_1->p_review
j_triage__and_1->p_log
p_inbox
inbox
p_archive
archive
p_review
review
p_log
log
p_paused
paused
p_config
config
t_triage
triage [0, 500]ms prio=5
t_flush
flush [0, ∞]ms
t_compact
compact [0, ∞]ms
j_triage__xor_0
✕
j_triage__and_1
✚
inhibitor_blocks
p_job->t_take
p_lock->t_take
p_lock->t_release
t_take->p_lock
t_release->p_done
p_job
job
p_lock
lock
p_done
done
t_take
take
t_release
release
input_cardinalities
p_orders->t_pair
×2
p_orders->t_batch
≥3
p_returns->t_sweep
*
t_pair->p_pairs
t_sweep->p_swept
t_batch->p_batches
p_orders
orders
p_pairs
pairs
p_returns
returns
p_swept
swept
p_batches
batches
t_pair
pair
t_sweep
sweep
t_batch
batch
nu_fork_join
p_order->t_fork
p_payReq->t_pay
p_pickReq->t_pick
p_paid->t_ship
p_picked->t_ship
t_fork->j_fork__and_0
t_pay->p_paid
t_pick->p_picked
t_ship->p_shipped
j_fork__and_0->p_payReq
j_fork__and_0->p_pickReq
p_order
order
p_payReq
payReq
p_pickReq
pickReq
p_paid
paid
p_picked
picked
p_shipped
shipped
t_fork
fork
t_pay
pay
t_pick
pick
t_ship
ship
j_fork__and_0
✚
priority_order
p_ticket->t_escalate
p_ticket->t_file
t_escalate->p_escalated
t_file->p_filed
p_ticket
ticket
p_escalated
escalated
p_filed
filed
t_escalate
escalate prio=10
t_file
file
proved_without_enumerating
p_source->t_produce
p_queue->t_takeA
p_queue->t_takeB
p_lock->t_takeA
p_lock->t_takeB
p_busyA->t_doneA
p_busyB->t_doneB
t_produce->j_produce__and_0
t_takeA->p_busyA
t_takeB->p_busyB
t_doneA->j_doneA__and_0
t_doneB->j_doneB__and_0
j_produce__and_0->p_source
j_produce__and_0->p_queue
j_doneA__and_0->p_lock
j_doneA__and_0->p_done
j_doneB__and_0->p_lock
j_doneB__and_0->p_done
p_source
source
p_queue
queue
p_lock
lock
p_busyA
busyA
p_busyB
busyB
p_done
done
t_produce
produce
t_takeA
takeA
t_takeB
takeB
t_doneA
doneA
t_doneB
doneB
j_produce__and_0
✚
j_doneA__and_0
✚
j_doneB__and_0
✚
read_arc_keeps_token
p_job->t_serve
p_served->t_audit
p_config->t_serve
read
p_config->t_audit
read
p_config->t_retire
t_serve->p_served
t_audit->p_audited
p_job
job
p_served
served
p_config
config
p_audited
audited
t_serve
serve
t_audit
audit
t_retire
retire
reset_clears_place
p_pending->t_work
p_restartReq->t_restart
t_work->p_done
t_restart->j_restart__and_0
j_restart__and_0->p_pending
reset+out
j_restart__and_0->p_log
p_pending
pending
p_done
done
p_restartReq
restartReq
p_log
log
t_work
work
t_restart
restart
j_restart__and_0
✚
run_events
p_request->t_think
p_draft->t_answer
t_think->p_draft
t_answer->p_reply
p_request
request
p_draft
draft
p_reply
reply
t_think
think
t_answer
answer
snapshot_resume
p_inbox->t_draft
p_drafted->t_send
t_draft->p_drafted
t_send->p_sent
p_inbox
inbox
p_drafted
drafted
p_sent
sent
t_draft
draft
t_send
send
timeout_forwards_input
p_jobs->t_process
×2
t_process->j_process__xor_0
j_process__xor_0->p_results
results
j_process__xor_0->p_retry
⏱500ms ⟵jobs
p_jobs
jobs
p_results
results
p_retry
retry
t_process
process
j_process__xor_0
✕
two_subnets_glued
cluster_a
a
cluster_b
b
p_a_mid->t_a_finish
t_a_run->p_a_mid
t_a_finish->p_handoff
p_b_mid->t_b_finish
t_b_run->p_b_mid
t_b_finish->p_sink
p_source->t_a_run
p_handoff->t_b_run
p_a_mid
a/mid
t_a_run
a/run
t_a_finish
a/finish
p_b_mid
b/mid
t_b_run
b/run
t_b_finish
b/finish
p_source
source
p_handoff
handoff
p_sink
sink
window_too_early
p_draft->t_send
p_sent->t_archive
t_send->p_sent
t_archive->p_archived
p_draft
draft
p_sent
sent
p_archived
archived
t_send
send [200, 1000]ms
t_archive
archive [5000, ∞]ms
xor_branch
p_ticket->t_triage
t_triage->j_triage__xor_0
j_triage__xor_0->p_fast
fast
j_triage__xor_0->j_triage__and_1
j_triage__and_1->p_review
j_triage__and_1->p_log
p_ticket
ticket
p_fast
fast
p_review
review
p_log
log
t_triage
triage
j_triage__xor_0
✕
j_triage__and_1
✚