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

Admin Only

Sync Operation Details

{{ config.name }}

{{ sync.status | replace('_', ' ') | title }}
Queued At
{{ sync.queued_at.strftime('%Y-%m-%d %H:%M:%S UTC') if sync.queued_at else '-' }}
Started At
{{ sync.started_at.strftime('%Y-%m-%d %H:%M:%S UTC') if sync.started_at else '-' }}
Completed At
{{ sync.completed_at.strftime('%Y-%m-%d %H:%M:%S UTC') if sync.completed_at else '-' }}
Duration
{% if sync.started_at and sync.completed_at %} {{ ((sync.completed_at - sync.started_at).total_seconds()) | round(1) }}s {% elif sync.started_at %} Running... {% else %} - {% endif %}
Jobs Retrieved
{{ sync.jobs_retrieved_count or 0 }}
Manifests Updated
{{ sync.manifests_updated_count or 0 }}
{% if sync.errors and sync.errors|length > 0 %}

Errors ({{ sync.errors|length }})

{% for error in sync.errors %}
{{ error.error_type }} {% if error.step_context %} Step: {{ error.step_context }} {% endif %}
{{ error.error_timestamp.strftime('%H:%M:%S') if error.error_timestamp else '' }}

{{ error.error_message }}

{% if error.related_entity_id %}

Related entity: {{ error.related_entity_id }}

{% endif %} {% if 'access denied' in error.error_message.lower() or 'permission' in error.error_message.lower() %}

Suggested Action:

Check that the service account has the required permissions. For BigQuery, ensure roles/bigquery.dataViewer and roles/bigquery.resourceViewer are granted. For GCS, ensure roles/storage.objectViewer is granted on the manifest bucket.

{% elif 'quota' in error.error_message.lower() %}

Suggested Action:

BigQuery quota exceeded. Wait a few minutes and retry, or check your project's quota limits in the Google Cloud Console.

{% elif 'not found' in error.error_message.lower() %}

Suggested Action:

The requested resource was not found. Verify that the GCS bucket and manifest path are correct in the project configuration.

{% elif 'timeout' in error.error_message.lower() or 'timed out' in error.error_message.lower() %}

Suggested Action:

The operation timed out. This may occur with large datasets. Try again - if the issue persists, consider increasing timeout limits or reducing the query scope.

{% endif %}
{% endfor %}
{% elif sync.status == 'completed' %}

Sync completed successfully with no errors.

{% endif %}

Sync ID: {{ sync.id }}

{% if sync.initiated_by_id %}

Initiated by: {{ sync.initiated_by_id }}

{% endif %}
← Back to Configuration
{% endblock %}