{% extends "base.html" %} {% block content %}

Atomic Service Timeline

Execution history of atomic service across runners
Back to Runners
Service Configuration
Service Interval {{ service_interval_minutes }} minutes
Retention {{ retention_minutes }} min / {{ max_records }} max
Executions Shown {{ pagination.start_item }}–{{ pagination.end_item }} / {{ pagination.total_items }} {% if used_fallback %} no recorded history {% endif %}
Filters
{% if filter_selected_atomic_service_run_id %} {% endif %}
{% for known_runner_id in runner_id_choices %} {% endfor %}
Reset
Execution Timeline
{% if running_atomic_service %} {% endif %} {% if filter_selected_atomic_service_run_id and not selected_atomic_service_found %} {% endif %} {% if timeline_data %}
Window {{ pagination.start_item }}–{{ pagination.end_item }} of {{ pagination.total_items }} executions, newest first
{% if pagination.total_pages > 1 %} {% endif %}
{% for execution in timeline_data %} {% endfor %}
Runner ID Service Run ID Start (UTC) End (UTC) Duration Status Reason
R: {{ execution.runner_id[:8] }}… {% if execution.runner_alive is sameas false %} dead {% endif %} {% if execution.atomic_service_run_id %} AS: {{ execution.atomic_service_run_id[:8] }}… {% if execution.is_selected %} selected {% endif %} {% else %} {% endif %} {{ execution.start.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] }} {% if execution.end %} {{ execution.end.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] }} {% else %} {% endif %} {% if execution.end %} {{ execution.duration|round(3) }}s {% else %} {% endif %} {% if execution.status == 'running' %} running {% elif execution.status == 'completed' %} completed {% elif execution.status == 'abandoned' %} abandoned {% elif execution.status == 'blocked' %} blocked {% else %} {{ execution.status }} {% endif %} {% if execution.reason %} {{ execution.reason }} {% else %} {% endif %} timeline Timeline
{% if pagination.total_pages > 1 %}
{% endif %} {% else %}

No atomic service executions match the current filters.

{% endif %}
{% if timeline_data %}
Total Executions

{{ timeline_data|length }}

Avg Duration
{% set avg_duration = (timeline_data | map(attribute='duration') | sum) / timeline_data|length %}

{{ avg_duration|round(2) }}s

Max Duration
{% set max_duration = timeline_data | map(attribute='duration') | max %}

{{ max_duration|round(2) }}s

{% endif %}
{% endblock %}