How each refusal comes about
reserve.hold: out_of_stock
1 reserve.hold(order: order-1, sku: sku-2, qty: 1) refused: out_of_stock (move 1 takes 1 from stock(sku-2): posted 0, held out 0)
reserve.hold: key_conflict
1 receive.do(delivery: delivery-1, sku: sku-2, qty: 1) done
2 reserve.hold(order: order-3, sku: sku-2, qty: 1) done
3 reserve.hold(order: order-3, sku: sku-2, qty: 2) refused: key_conflict
reserve.hold: already_refused
1 reserve.hold(order: order-1, sku: sku-2, qty: 1) refused: out_of_stock (move 1 takes 1 from stock(sku-2): posted 0, held out 0)
2 reserve.hold(order: order-1, sku: sku-2, qty: 1) refused: already_refused
reserve.post: key_conflict
1 receive.do(delivery: delivery-1, sku: sku-2, qty: 2) done
2 reserve.hold(order: order-3, sku: sku-2, qty: 2) done
3 reserve.post(order: order-3, sku: sku-2) done
4 reserve.post(order: order-3, sku: sku-2, qty: 1) refused: key_conflict
reserve.post: already_voided
1 receive.do(delivery: delivery-1, sku: sku-2, qty: 2) done
2 reserve.hold(order: order-3, sku: sku-2, qty: 2) done
3 reserve.void(order: order-3, sku: sku-2) done
4 reserve.post(order: order-3, sku: sku-2) refused: already_voided
reserve.post: expired
1 receive.do(delivery: delivery-1, sku: sku-2, qty: 2) done
2 reserve.hold(order: order-3, sku: sku-2, qty: 2) done
3 pass 30 minutes reserve(order-3, sku-2) expired
4 reserve.post(order: order-3, sku: sku-2) refused: expired
reserve.post: over_hold
1 receive.do(delivery: delivery-1, sku: sku-2, qty: 2) done
2 reserve.hold(order: order-3, sku: sku-2, qty: 2) done
3 reserve.post(order: order-3, sku: sku-2, qty: 3) refused: over_hold
reserve.post: no_such_hold
1 reserve.post(order: order-1, sku: sku-2) refused: no_such_hold
reserve.void: already_posted
1 receive.do(delivery: delivery-1, sku: sku-2, qty: 2) done
2 reserve.hold(order: order-3, sku: sku-2, qty: 2) done
3 reserve.post(order: order-3, sku: sku-2) done
4 reserve.void(order: order-3, sku: sku-2) refused: already_posted
reserve.void: expired
1 receive.do(delivery: delivery-1, sku: sku-2, qty: 2) done
2 reserve.hold(order: order-3, sku: sku-2, qty: 2) done
3 pass 30 minutes reserve(order-3, sku-2) expired
4 reserve.void(order: order-3, sku: sku-2) refused: expired
reserve.void: no_such_hold
1 reserve.void(order: order-1, sku: sku-2) refused: no_such_hold