Skip to content

UpdateSourcePerformanceActivity.Execute

Purpose

Обновляет performance-показатели loader config после post-record outcome.

Код: internal/worker/loader/finalize_raw_data.go

Flow

flowchart TD
    Start([Start]) --> Validate[Validate data_source_id, loader_config_id, outcome]
    Validate --> Valid{Valid?}
    Valid -- No --> Invalid[Return non-retryable validation error]
    Valid -- Yes --> OccurredAt{occurred_at set?}
    OccurredAt -- No --> Now[Use current UTC time]
    OccurredAt -- Yes --> Normalize[Normalize occurred_at to UTC]
    Now --> Normalize
    Normalize --> Outcome{outcome}
    Outcome -- success --> SuccessUpdate[Increment total_runs and successful_runs]
    SuccessUpdate --> SuccessTimestamps[Set last_run_at and last_success_at]
    SuccessTimestamps --> ResetFailure[Reset last_failure_start_date and failed_runs_after_success]
    ResetFailure --> Result[Return updated flag]
    Outcome -- failure --> FailureUpdate[Increment total_runs, failed_runs, failed_runs_after_success]
    FailureUpdate --> Buckets[Update day/month/quarter/year failed buckets]
    Buckets --> FailureTimestamps[Set last_run_at and last_failure_at]
    FailureTimestamps --> FailureStart{last_failure_start_date is null?}
    FailureStart -- Yes --> SetStart[Set last_failure_start_date = occurred_at]
    FailureStart -- No --> KeepStart[Keep existing last_failure_start_date]
    SetStart --> Result
    KeepStart --> Result
    Result --> End([End])
    Invalid --> End

Input / Output

Input (loader.UpdateSourcePerformanceRequest): - data_source_id - loader_config_id - outcome: success или failure - occurred_at - error_type (optional) - error_message (optional)

Output (loader.UpdateSourcePerformanceResult): - updated - outcome - occurred_at

Behavior

Activity обновляет terry.loader_configs по конкретному loader_config_id.

Success: - инкрементирует total_runs и successful_runs - выставляет last_run_at и last_success_at - сбрасывает last_failure_start_date - сбрасывает failed_runs_after_success

Failure: - инкрементирует total_runs, failed_runs, failed_runs_after_success - инкрементирует failed counters за day/month/quarter/year - сбрасывает period bucket, если occurred_at попадает в новый день, месяц, квартал или год - выставляет last_run_at и last_failure_at - выставляет last_failure_start_date=occurred_at, только если он был NULL

Error Taxonomy

  • invalid request или unknown outcome: non-retryable validation error
  • DB update error: retryable
  • updated=false означает, что активный loader config с указанными data_source_id и loader_config_id не найден

Callers