@@ -93,6 +93,16 @@ pub async fn set_alert_manager(manager: Arc<dyn AlertManagerTrait>) {
9393 * ALERTS . write ( ) . await = Some ( manager) ;
9494}
9595
96+ fn ensure_schedulable_in_oss ( alert : & dyn AlertTrait ) -> Result < ( ) , AlertError > {
97+ if matches ! ( alert. get_alert_type( ) , AlertType :: Threshold )
98+ && alert. get_query_type ( ) == AlertQueryType :: Promql
99+ {
100+ return Err ( AlertError :: NotPresentInOSS ( "promql alerts" ) ) ;
101+ }
102+
103+ Ok ( ( ) )
104+ }
105+
96106pub fn create_default_alerts_manager ( ) -> Alerts {
97107 let ( tx, rx) = mpsc:: channel :: < AlertTask > ( 1000 ) ;
98108 let alerts = Alerts {
@@ -1147,7 +1157,19 @@ impl AlertManagerTrait for Alerts {
11471157
11481158 let alert: Box < dyn AlertTrait > = match & alert. alert_type {
11491159 AlertType :: Threshold => {
1150- Box :: new ( ThresholdAlert :: from ( alert) ) as Box < dyn AlertTrait >
1160+ let alert = ThresholdAlert :: from ( alert) ;
1161+ if let Err ( e) = alert. validate_oss_query_type ( ) {
1162+ warn ! (
1163+ "Skipping unsupported alert task for alert {}: {e}" ,
1164+ alert. id
1165+ ) ;
1166+ map. entry ( tenant_id. clone ( ) )
1167+ . or_default ( )
1168+ . insert ( alert. id , Box :: new ( alert) as Box < dyn AlertTrait > ) ;
1169+ continue ;
1170+ }
1171+
1172+ Box :: new ( alert) as Box < dyn AlertTrait >
11511173 }
11521174 AlertType :: Anomaly ( _) => {
11531175 return Err ( anyhow:: Error :: msg (
@@ -1366,6 +1388,7 @@ impl AlertManagerTrait for Alerts {
13661388 . await
13671389 . map_err ( |e| AlertError :: CustomError ( e. to_string ( ) ) ) ?;
13681390 } else if should_create_task {
1391+ ensure_schedulable_in_oss ( alert. as_ref ( ) ) ?;
13691392 self . sender
13701393 . send ( AlertTask :: Create ( alert. clone_box ( ) ) )
13711394 . await
@@ -1464,6 +1487,7 @@ impl AlertManagerTrait for Alerts {
14641487
14651488 /// Start a scheduled alert task
14661489 async fn start_task ( & self , alert : Box < dyn AlertTrait > ) -> Result < ( ) , AlertError > {
1490+ ensure_schedulable_in_oss ( alert. as_ref ( ) ) ?;
14671491 self . sender
14681492 . send ( AlertTask :: Create ( alert) )
14691493 . await
0 commit comments