Defining the scope of consistent regions with primitive operators
When the @consistent
annotation is applied to a primitive
operator, the annotation indicates that the operator and all downstream operators of that
operator participate in a consistent region.
The annotated primitive operator is considered the start operator of the consistent region.
If different annotated primitive operators share a set of downstream operators, 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
The following figure shows an example of a primitive operator with the
@consistent
annotation. The consistent region is defined by the
downstream operators of the annotated operator. In this example, operators
op2-6
and op10
are
downstream operators.
Although op4
has an input stream from the autonomous region that originates from op11
, op4
and its downstream operators are treated as part of the consistent region.

Primitive operators with separate consistent regions
The following figure shows an example with the @consistent
annotation placed on
two primitive operators (op1
and
op7
). The downstream operators of each operator do 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.
