Skip to content

Commit 838191a

Browse files
committed
Merge branch 'main' into alerts-updates
Signed-off-by: parmesant <[email protected]>
2 parents 2c523de + dc04eb3 commit 838191a

File tree

7 files changed

+39
-54
lines changed

7 files changed

+39
-54
lines changed

src/alerts/alert_structs.rs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -88,17 +88,10 @@ impl Context {
8888

8989
pub(crate) fn default_disabled_string(&self) -> String {
9090
format!(
91-
"{} is now `disabled`. No more evals will be run till it is `disabled`.",
91+
"{} is now `disabled`. No more evals will be run till the sate is `disabled`.",
9292
self.alert_info.alert_name
9393
)
9494
}
95-
96-
// fn default_silenced_string(&self) -> String {
97-
// format!(
98-
// "Notifications for {} have been silenced ",
99-
// self.alert_info.alert_name
100-
// )
101-
// }
10295
}
10396

10497
#[derive(Debug, Clone)]

src/alerts/mod.rs

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,6 @@ impl AlertConfig {
561561
let state_str = alert_json["state"].as_str().unwrap_or("resolved");
562562
match state_str.to_lowercase().as_str() {
563563
"triggered" => AlertState::Triggered,
564-
// "silenced" => AlertState::Silenced,
565564
"resolved" => AlertState::NotTriggered,
566565
_ => AlertState::NotTriggered,
567566
}
@@ -766,25 +765,22 @@ fn extract_alias_from_expr(expr: &Expr) -> Option<(String, Option<String>)> {
766765
// This is an aliased expression
767766
let alias_name = alias_expr.name.clone();
768767

769-
match alias_expr.expr.as_ref() {
770-
Expr::AggregateFunction(agg_func) => {
771-
let agg_name = format!("{:?}", agg_func.func);
772-
Some((agg_name, Some(alias_name)))
773-
}
768+
if let Expr::AggregateFunction(agg_func) = alias_expr.expr.as_ref() {
769+
let agg_name = format!("{:?}", agg_func.func);
770+
Some((agg_name, Some(alias_name)))
771+
} else {
774772
// Handle other aggregate expressions like Count, etc.
775-
_ => {
776-
// Check if the inner expression is an aggregate
777-
let expr_str = format!("{:?}", alias_expr.expr);
778-
if expr_str.contains("count")
779-
|| expr_str.contains("sum")
780-
|| expr_str.contains("avg")
781-
|| expr_str.contains("min")
782-
|| expr_str.contains("max")
783-
{
784-
Some((expr_str, Some(alias_name)))
785-
} else {
786-
None
787-
}
773+
// Check if the inner expression is an aggregate
774+
let expr_str = format!("{:?}", alias_expr.expr);
775+
if expr_str.contains("count")
776+
|| expr_str.contains("sum")
777+
|| expr_str.contains("avg")
778+
|| expr_str.contains("min")
779+
|| expr_str.contains("max")
780+
{
781+
Some((expr_str, Some(alias_name)))
782+
} else {
783+
None
788784
}
789785
}
790786
}

src/alerts/target.rs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,13 @@ use ulid::Ulid;
3737
use url::Url;
3838

3939
use crate::{
40-
alerts::{AlertError, alert_traits::CallableTarget},
40+
alerts::{AlertError, AlertState, Context, alert_traits::CallableTarget},
4141
parseable::PARSEABLE,
4242
storage::object_storage::target_json_path,
4343
};
4444

4545
use super::ALERTS;
4646

47-
use super::{AlertState, Context};
48-
4947
pub static TARGETS: Lazy<TargetConfigs> = Lazy::new(|| TargetConfigs {
5048
target_configs: RwLock::new(HashMap::new()),
5149
});
@@ -571,14 +569,7 @@ impl CallableTarget for AlertManager {
571569
.to_rfc3339_opts(chrono::SecondsFormat::Millis, true)
572570
.into();
573571
}
574-
AlertState::Disabled => alert["labels"]["status"] = "disabled".into(), // AlertState::Silenced => {
575-
// alert["labels"]["status"] = "silenced".into();
576-
// alert["annotations"]["reason"] =
577-
// serde_json::Value::String(payload.default_silenced_string());
578-
// // alert["endsAt"] = Utc::now()
579-
// // .to_rfc3339_opts(chrono::SecondsFormat::Millis, true)
580-
// // .into();
581-
// }
572+
AlertState::Disabled => alert["labels"]["status"] = "disabled".into(),
582573
};
583574

584575
if let Err(e) = client

src/catalog/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,8 @@ pub async fn get_first_event(
366366
Mode::All | Mode::Ingest => {
367367
// get current snapshot
368368
let stream_first_event = PARSEABLE.get_stream(stream_name)?.get_first_event();
369-
if let Some(event) = stream_first_event {
370-
first_event_at = event;
369+
if let Some(first_event) = stream_first_event {
370+
first_event_at = first_event;
371371
} else {
372372
let mut meta = storage.get_object_store_format(stream_name).await?;
373373
let meta_clone = meta.clone();

src/handlers/http/alerts.rs

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -344,8 +344,8 @@ pub async fn modify_alert(
344344
let alert = alerts.get_alert_by_id(alert_id).await?;
345345

346346
// validate that the user has access to the tables mentioned in the query
347-
348347
user_auth_for_query(&session_key, alert.get_query()).await?;
348+
349349
// validate the request
350350
let mut new_config = alert_request.into().await?;
351351

@@ -391,21 +391,19 @@ pub async fn modify_alert(
391391
}
392392
};
393393

394-
// remove the task
395-
alerts.delete_task(alert_id).await?;
396-
397-
// remove alert from memory
398-
alerts.delete(alert_id).await?;
399-
400-
// move on to saving the alert in ObjectStore
394+
// save the new alert in ObjectStore
401395
alerts.update(new_alert).await;
402-
403396
let path = alert_json_path(*new_alert.get_id());
404-
405397
let store = PARSEABLE.storage.get_object_store();
406398
let alert_bytes = serde_json::to_vec(&new_alert.to_alert_config())?;
407399
store.put_object(&path, Bytes::from(alert_bytes)).await?;
408400

401+
// remove the task
402+
alerts.delete_task(alert_id).await?;
403+
404+
// remove alert from memory
405+
alerts.delete(alert_id).await?;
406+
409407
let config = new_alert.to_alert_config().to_response();
410408

411409
// start the task
@@ -415,7 +413,11 @@ pub async fn modify_alert(
415413
}
416414

417415
// PUT /alerts/{alert_id}/evaluate_alert
418-
pub async fn evaluate_alert(alert_id: Path<Ulid>) -> Result<impl Responder, AlertError> {
416+
pub async fn evaluate_alert(
417+
req: HttpRequest,
418+
alert_id: Path<Ulid>,
419+
) -> Result<impl Responder, AlertError> {
420+
let session_key = extract_session_key_from_req(&req)?;
419421
let alert_id = alert_id.into_inner();
420422

421423
let guard = ALERTS.write().await;
@@ -427,6 +429,8 @@ pub async fn evaluate_alert(alert_id: Path<Ulid>) -> Result<impl Responder, Aler
427429

428430
let alert = alerts.get_alert_by_id(alert_id).await?;
429431

432+
user_auth_for_query(&session_key, alert.get_query()).await?;
433+
430434
let config = alert.to_alert_config().to_response();
431435

432436
// remove task

src/livetail.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ impl Stream for ReceiverPipe {
161161
impl Drop for ReceiverPipe {
162162
fn drop(&mut self) {
163163
if let Some(map) = self._ref.upgrade()
164-
&& let Some(pipes) = map.write().unwrap().get_mut(&self.stream)
164+
&& let Ok(mut guard) = map.write()
165+
&& let Some(pipes) = guard.get_mut(&self.stream)
165166
{
166167
pipes.retain(|x| x.id != self.id)
167168
}

src/migration/metadata_migration.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub fn v2_v3(mut storage_metadata: JsonValue) -> JsonValue {
8686
for privilege in privileges.iter_mut() {
8787
let privilege_value = privilege.get_mut("privilege");
8888
if let Some(value) = privilege_value
89-
&& value.as_str().unwrap() == "ingester"
89+
&& matches!(value.as_str(), Some("ingester"))
9090
{
9191
*value = JsonValue::String("ingestor".to_string());
9292
}
@@ -125,7 +125,7 @@ pub fn v3_v4(mut storage_metadata: JsonValue) -> JsonValue {
125125
for privilege in privileges.iter_mut() {
126126
let privilege_value = privilege.get_mut("privilege");
127127
if let Some(value) = privilege_value
128-
&& value.as_str().unwrap() == "ingester"
128+
&& matches!(value.as_str(), Some("ingester"))
129129
{
130130
*value = JsonValue::String("ingestor".to_string());
131131
}

0 commit comments

Comments
 (0)