From 2eecebc66abba32fa9688f993e30ba82733a1250 Mon Sep 17 00:00:00 2001 From: fethij <32542424+fethij@users.noreply.github.com> Date: Thu, 28 May 2026 23:34:48 +0200 Subject: [PATCH] Fix integer division in failed-service-start heuristic hasRepeatedFailedServiceStarts compared the failure ratio against serviceStartFailurePercentage (a Float, default 0.5), but computed the ratio with integer division: failures.size / (failures.size + successes.size) Since failures.size is always <= the total, this integer division evaluates to 0 in every case except when there are zero successes, where it is 1. As a result the check only ever passes at a 100% failure rate rather than the configured percentage, so the heuristic effectively never detects users with a mixed (e.g. 50-99%) FCM service-start failure rate. Convert the numerator to Float so the comparison uses the intended fractional failure rate. --- .../securesms/notifications/SlowNotificationHeuristics.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt index 6c1359d077e..2150b9cdffa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/SlowNotificationHeuristics.kt @@ -164,7 +164,7 @@ object SlowNotificationHeuristics { return false } - if (failures.size / (failures.size + successes.size) >= failurePercentage) { + if (failures.size.toFloat() / (failures.size + successes.size) >= failurePercentage) { Log.w(TAG, "User often unable start FCM service. ${failures.size} failed : ${successes.size} successful") return true }