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не найден