Defining the scope of consistent regions with primitive operators
@consistentannotation is applied to a primitive operator, the annotation indicates that the operator and the reachability graph of that operator participate in a consistent region. The annotated primitive operator is considered the start operator of the consistent region. The reachability graph of an operator is any other operator that the start operator reaches through all its outgoing stream connections, which means all the connections of all the output ports.
When the reachability graphs of different annotated primitive operators share a common operator, they form a single consistent region. When a single consistent region is formed by different annotations and those annotations have different parameter values, the SPL compiler assigns the value of each parameter by computing the maximum parameter value among the different annotations. If the value of one of the parameters is a submission-time value, then the value must be set during submission time.
The failure of any operator in the region results in a reset of the whole region.
The following figures show examples of how consistent regions are
computed when the
@consistent annotation is applied
to primitive operators.
One primitive operator with one consistent region
following figure shows an example of a primitive operator with the
The consistent region is defined by the reachability graph of the
annotated operator. In this example, operators
in the reachability graph.
op4 has an input stream from the autonomous region that originates from
op4 and its downstream operators are treated as part of the consistent region.
Primitive operators with separate consistent regions
following figure shows an example with the
placed on two primitive operators (
The reachability graph of each operator does not form a single region
because they do not share a common operator. As a result, two independent
consistent regions are formed, which is shown by different patterns
on operators in each region.