@@ -465,25 +465,32 @@ def handle_result(self, subscription: UptimeSubscription | None, result: CheckRe
465
465
return
466
466
467
467
subscription_interval_ms = 1000 * subscription .interval_seconds
468
+ num_intervals = (
469
+ result ["scheduled_check_time_ms" ] - last_update_ms
470
+ ) / subscription_interval_ms
471
+
468
472
# If the scheduled check is two or more intervals since the last seen check, we can declare the
469
473
# intervening checks missed.
470
- if last_update_raw is not None :
471
- if (2 * subscription_interval_ms ) <= result ["scheduled_check_time_ms" ] - last_update_ms :
472
- num_missed_checks = (
473
- int (
474
- (result ["scheduled_check_time_ms" ] - last_update_ms )
475
- / subscription_interval_ms
476
- )
477
- - 1
478
- )
479
- metrics .distribution (
480
- "uptime.result_processer.num_missing_check" ,
481
- num_missed_checks ,
482
- tags = metric_tags ,
483
- )
484
- logger .warning (
485
- "uptime.result_processor.num_missing_check" ,
486
- extra = {"num_missed_checks" : num_missed_checks , ** result },
474
+ if last_update_raw is not None and num_intervals > 1 :
475
+ num_missed_checks = num_intervals - 1
476
+ metrics .distribution (
477
+ "uptime.result_processer.num_missing_check" ,
478
+ num_missed_checks ,
479
+ tags = metric_tags ,
480
+ )
481
+ logger .info (
482
+ "uptime.result_processor.num_missing_check" ,
483
+ extra = {"num_missed_checks" : num_missed_checks , ** result },
484
+ )
485
+ if num_intervals != int (num_intervals ):
486
+ logger .info (
487
+ "uptime.result_processor.invalid_check_interval" ,
488
+ extra = {
489
+ "last_update_ms" : last_update_ms ,
490
+ "current_update_ms" : result ["scheduled_check_time_ms" ],
491
+ "interval_ms" : subscription_interval_ms ,
492
+ ** result ,
493
+ },
487
494
)
488
495
489
496
if features .has ("organizations:uptime-detailed-logging" , organization ):
0 commit comments