Closed joaomlneto closed 2 months ago
Slight but meaningful changes from the above definition.
processManager.crashNode(0)
).Before Faults were being applied automatically. Now, they are either enabled or disabled. The Scheduler can then decide to schedule these instead of messages: Whenever we invoke Scheduler.Next(actions)
from the scheduler, we now also pass the set of enabled faults (the faults that have a true
precondition): Scheduler.Next(actions, faults)
.
The set of faults are configured in the config.yml
file. See example.
Discussion card on Trello
Requesting comments on how to implement the faults. This is a synopsis of what I want to implement.
A
Fault
is a <Trigger
,Behavior
> tuple. A Trigger checks whether a given behavior is to be applied. A behavior is something happening outside of the specification of the application.Some examples of triggers:
node 0
N
{0, 2, 4}
Some examples of behaviors:
round
field in messageThis should place little to no limits on expressivity and allows for reusability via composition.
When to inject faults, the option that makes most sense to me is the following:
So, after the translator does its thing, we’d pass the message through the faults. Something like this
Since we’re likely to have a small number of faults, the
O(N)
should be negligible.