Stream processing statuses

During the processing, the stream can go through the following statuses:

Note

restart, handler_lost statuses are transient. A user will never be able to get a stream in these statuses. However, the transition through these statuses is logged as usual.

Note

not_found status is internal, and will be sent for feedback if the stream has been removed during the processing. A user will never be able to get a stream in this status.

Note

deleted status is virtual, no stream with such status may exist. But, this status may be seen in stream logs.

Status transition matrix

The following matrix shows statuses that may be received after each listed status.

The “+” symbol means that the status listed in the first row may occur after the status in the first column. Empty field means that there are no cases when the status may occur.

The ∅ symbol means that there is no stream in the system (it was not created or it was already deleted).

pending

in_progress

done

restart

pause

cancel

failure

handler_lost

+

+

pending

+

+

+

+

+

in_progress

+

+

+

+

+ 1

+

+

+

done

+

+

+

+

restart

+

+

pause

+

+

+

+

cancel

+

+

+

+

failure

+

+

+

+

handler_lost

+

1not supported for video

*stream status list may be expanded in the future

Processing pipeline

By default, the new stream is created with the pending status and immediately enters the processing queue. Stream processing can be postponed by specifying the pause status when creating.

As soon as a free stream handler appears with a request for a pool from the queue, the stream is accepted for processing and it is assigned the in_progress status.

After the stream has been processed by the handler, it is assigned to the status done in case of success, or failure if any errors have occurred. However, stream processing status may be downgraded from in_progress for the following reasons:

During the processing routine, any change in the stream status is logged. Thus, you can restore the stream processing pipeline from the logs.

Streams with a failure status may be restarted automatically. See streams automatic restart for details.

Streams automatic restart

The possibility of autorestart is actual for streams with failure status. Parameters (possibility, maximum number of restart attempts, delay between attempts) are specified by the user for each stream in autorestart section (see create stream request description). The parameters and autorestart status can be received using get stream request.

Stream autorestart statuses

  • disabled - stream autorestart is disabled by user (restart parameter in autorestart section in stream creation request)

  • enabled - stream autorestart is enabled, but not active at the moment (stream is not in failure status)

  • in_progress - autorestart in progress

  • failed - the allowed number of auto-restart attempts have been made, but did not lead to success

  • denied - stream autorestart is allowed by user, but not allowed due to fatal error* received in feedback request

*fatal error is considered error which text equals Failed to authorize in Luna Platform

Note

stream autorestart status list may be expanded in the future

Stream autorestart process

Here and below are described only about streams with enabled autorestart.

Each stream restart attempt will automatically change:

  • stream status to restart and then to pending

  • stream autorestart current_attempt will be increased by 1

  • last_attempt_time will be actualized

The following conditions will trigger a stream restart:

  • stream status is failure

  • stream autorestart status is enabled

  • stream autorestart current_attempt is null or current_attempt is less than attempt_count

  • stream autorestart last_attempt_time is null or difference between the current time and last_attempt_time is greater than or equal to stream autorestart delay

The following conditions will trigger a stream autorestart failure:

(this cause no more automatically attempts to restart stream)

  • stream status is failure

  • stream autorestart status is in_progress

  • stream autorestart current_attempt is equals to attempt_count

The following conditions will trigger a stream autorestart complete:

(this cause stream autorestart status change to enabled and reset stream autorestart current_attempt and last_attempt_time)

  • stream status is not equals failure status

  • stream autorestart status is in_progress

  • stream autorestart last_attempt_time is null or difference between the current time and last_attempt_time is greater than or equal to stream autorestart delay