mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 16:10:43 +00:00
fix: when updating alert first check, if the scheduled_job exist or not (#4359)
Fixes #4360 In case some `scheduled_job` records (required for alerts to get scheduled properly) are missing for some alerts, they can be recreated by simply disabling and enabling it. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Improvements** - Enhanced error logging for trigger updates and creations, providing clearer context with the inclusion of the `schedule_key`. - Improved robustness of trigger management logic, facilitating easier diagnosis of issues related to alert triggers. - Increased flexibility in alert handling by dynamically setting the `is_realtime` property based on the alert's characteristics. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
@@ -127,7 +127,7 @@ async fn handle_alert_triggers(trigger: db::scheduler::Trigger) -> Result<(), an
|
||||
|
||||
let mut new_trigger = db::scheduler::Trigger {
|
||||
next_run_at: Utc::now().timestamp_micros(),
|
||||
is_realtime: false,
|
||||
is_realtime: alert.is_real_time,
|
||||
is_silenced: false,
|
||||
status: db::scheduler::TriggerStatus::Waiting,
|
||||
retries: 0,
|
||||
|
||||
@@ -61,7 +61,7 @@ pub async fn set(
|
||||
Ok(_) => {
|
||||
let trigger = db::scheduler::Trigger {
|
||||
org: org_id.to_string(),
|
||||
module_key: schedule_key,
|
||||
module_key: schedule_key.clone(),
|
||||
next_run_at: chrono::Utc::now().timestamp_micros(),
|
||||
is_realtime: alert.is_real_time,
|
||||
is_silenced: false,
|
||||
@@ -71,21 +71,35 @@ pub async fn set(
|
||||
match db::scheduler::push(trigger).await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => {
|
||||
log::error!("Failed to save trigger: {}", e);
|
||||
log::error!("Failed to save trigger for alert {schedule_key}: {}", e);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
} else if db::scheduler::exists(
|
||||
org_id,
|
||||
db::scheduler::TriggerModule::Alert,
|
||||
&schedule_key,
|
||||
)
|
||||
.await
|
||||
{
|
||||
match db::scheduler::update_trigger(trigger).await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => {
|
||||
log::error!("Failed to update trigger for alert {schedule_key}: {}", e);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
} else {
|
||||
match db::scheduler::update_trigger(trigger).await {
|
||||
match db::scheduler::push(trigger).await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(e) => {
|
||||
log::error!("Failed to update trigger: {}", e);
|
||||
log::error!("Failed to save trigger for alert {schedule_key}: {}", e);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Err(e) => Err(anyhow::anyhow!("Error save alert: {}", e)),
|
||||
Err(e) => Err(anyhow::anyhow!("Error save alert {schedule_key}: {}", e)),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user