Reduce logging to FetchEventLogger
Build / Build and release (push) Canceled after 0s
version-code-change / Update version.properties (push) Canceled after 0s

This commit is contained in:
Prem Nirmal
2026-05-14 09:35:16 +01:00
parent cc8cbdb359
commit 88ee891849
4 changed files with 5 additions and 21 deletions
@@ -26,14 +26,14 @@ class UpdateReceiver : BroadcastReceiver() {
Injector.appComponent().inject(this)
if (intent.action == "android.intent.action.MY_PACKAGE_REPLACED") {
val pendingResult = goAsync()
coroutineScope.launch(Dispatchers.Main) {
coroutineScope.launch(Dispatchers.IO) {
stocksProvider.fetch()
pendingResult.finish()
}
}
if (intent.action == "android.intent.action.BOOT_COMPLETED") {
val pendingResult = goAsync()
coroutineScope.launch(Dispatchers.Main) {
coroutineScope.launch(Dispatchers.IO) {
stocksProvider.scheduleUpdate()
pendingResult.finish()
}
@@ -26,11 +26,6 @@ class RefreshWorker(context: Context, params: WorkerParameters) : CoroutineWorke
return if (applicationContext.isNetworkOnline()) {
if (!alarmScheduler.isCurrentTimeWithinScheduledUpdateTime()) {
Timber.d("RefreshWorker skipped: outside configured update window")
fetchEventLogger.log(
source = "RefreshWorker",
event = "skipped_window",
detail = "outside configured update window"
)
return Result.success()
}
val result = stocksProvider.fetch()
@@ -139,15 +139,14 @@ class StocksProvider constructor(
updateTime.toInstant()
)
logFetchEvent(
source = "StocksProvider",
event = "schedule_next",
detail = "reason=$reason delayMs=$clampedDelayMs nextAt=${updateTime.toInstant()}"
)
appPreferences.setRefreshing(false)
}
private fun logFetchEvent(source: String, event: String, detail: String) =
fetchEventLogger.log(source = source, event = event, detail = detail)
private fun logFetchEvent(event: String, detail: String) =
fetchEventLogger.log(source = "StocksProvider", event = event, detail = detail)
private fun resetConsecutiveFailures() {
preferences.edit { putInt(CONSECUTIVE_FETCH_FAILURES, 0) }
@@ -187,7 +186,6 @@ class StocksProvider constructor(
)
}
logFetchEvent(
source = "StocksProvider",
event = "failure_backoff",
detail = "reason=$reason failures=$failureCount backoffMs=$backoffMs regularMs=$regularScheduleMs chosenMs=$retryDelayMs"
)
@@ -242,7 +240,6 @@ class StocksProvider constructor(
return@withContext try {
Timber.d("Starting fetch allowScheduling=%s tickers=%d", allowScheduling, tickerSet.size)
logFetchEvent(
source = "StocksProvider",
event = "fetch_start",
detail = "allowScheduling=$allowScheduling tickers=${tickerSet.size}"
)
@@ -278,13 +275,13 @@ class StocksProvider constructor(
widgetDataProvider.broadcastUpdateAllWidgets()
Timber.d("Fetch succeeded stocks=%d", fetchedStocks.size)
logFetchEvent(
source = "StocksProvider",
event = "fetch_success",
detail = "stocks=${fetchedStocks.size}"
)
FetchResult.success(quoteMap.values.filter { tickerSet.contains(it.symbol) }.toList())
}
} catch (ex: CancellationException) {
shouldScheduleInFinally = false
failureReason = "cancelled"
failureError = ex
FetchResult.failure<List<Quote>>(FetchException("Failed to fetch", ex))
@@ -298,7 +295,6 @@ class StocksProvider constructor(
if (shouldScheduleInFinally) {
// Keep scheduling chain alive across transient failures.
logFetchEvent(
source = "StocksProvider",
event = "fetch_failure",
detail = "reason=$failureReason error=${failureError?.message.orEmpty()}"
)
@@ -34,7 +34,6 @@ class RefreshReceiver : BroadcastReceiver() {
) {
Injector.appComponent().inject(this)
val pendingResult = goAsync()
val startedAtMs = System.currentTimeMillis()
Timber.d(
"RefreshReceiver triggered action=%s hasExtras=%s",
intent.action,
@@ -93,12 +92,6 @@ class RefreshReceiver : BroadcastReceiver() {
detail = e.message.orEmpty()
)
} finally {
Timber.d("RefreshReceiver finishing elapsedMs=%d", System.currentTimeMillis() - startedAtMs)
fetchEventLogger.log(
source = "RefreshReceiver",
event = "finished",
detail = "elapsedMs=${System.currentTimeMillis() - startedAtMs}"
)
pendingResult.finish()
}
}