Autonomous annotation
The SPL annotation @autonomous
defines
autonomous regions and can be applied to an operator or operators
in an application graph to remove those operators from a consistent
region.
The
@autonomous
annotation can be applied
to primitive and composite operators. Thus causing the operator state
to be independent from other operators in the graph and revert to
its default behavior. Teracloud®
Streams calculates
the boundaries of the autonomous region that is based on the reachability
graph of the annotated operator. The reachability graph of the annotated
operator stops when one of the following conditions are met.- There is an operator with a
@consistent
annotation. - An operator in the reachability graph of the annotated operator has at least one input port with incoming stream connections that come exclusively from operators in a consistent region and at least one input port with incoming stream connections that come exclusively from autonomous operators. In this case, the common operator is considered to be in the consistent region.
If an operator is autonomous, the successful completion of a drain or a reset of a consistent region does not depend on it. In addition, failures of this operator do not cause the reset of a consistent region, unless they are in a PE in which there are other operators in a consistent region.
The SPL compiler reports errors when
an @autonomous
annotation is applied in the following
situations.
- When
@autonomous
is placed at the same operator invocation as a@consistent
annotation. - When
@autonomous
is applied to operators that, via its own stream connections or its reachability graph, connect to the input port of an operator that has incoming stream connections from both autonomous operators and operators within a consistent region.