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.


1 @autonomous
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.