NTP-66631 | Dark knight worker stability (#16300)

This commit is contained in:
Ujjwal Kumar
2025-05-26 12:24:35 +05:30
committed by GitHub
parent e35f4b20a7
commit b8e2314b63
4 changed files with 22 additions and 11 deletions

View File

@@ -16,6 +16,7 @@ import coil.ImageLoaderFactory
import com.navi.base.cache.repository.NaviCacheRepository import com.navi.base.cache.repository.NaviCacheRepository
import com.navi.base.utils.TrustedTimeClientAccessor import com.navi.base.utils.TrustedTimeClientAccessor
import com.navi.bbps.common.model.NaviBbpsManager import com.navi.bbps.common.model.NaviBbpsManager
import com.navi.common.utils.log
import com.navi.moneymanager.common.manager.MMLibManager import com.navi.moneymanager.common.manager.MMLibManager
import com.navi.pay.common.setup.NaviPayManager import com.navi.pay.common.setup.NaviPayManager
import com.navi.traceflow.Config import com.navi.traceflow.Config
@@ -97,5 +98,7 @@ open class NaviApplication : BaseApplication(), ImageLoaderFactory, Configuratio
Configuration.Builder() Configuration.Builder()
.setWorkerFactory(workerFactory = workerFactory.get()) .setWorkerFactory(workerFactory = workerFactory.get())
.setMinimumLoggingLevel(if (BuildConfig.DEBUG) Log.DEBUG else Log.ERROR) .setMinimumLoggingLevel(if (BuildConfig.DEBUG) Log.DEBUG else Log.ERROR)
.setInitializationExceptionHandler { it.log() }
.setWorkerInitializationExceptionHandler { it.throwable.log() }
.build() .build()
} }

View File

@@ -219,10 +219,10 @@ class NaviPayToContacts @Inject constructor() {
class NaviPayDarkKnightWorker { class NaviPayDarkKnightWorker {
fun onDarkKnightTriggered(triggeredTime: String) { fun onDarkKnightTriggered(isTriggeredWithinOffHours: Boolean) {
NaviTrackEvent.trackEventOnClickStream( NaviTrackEvent.trackEventOnClickStream(
eventName = "NaviPay_DarkKnight_Triggered", eventName = "NaviPay_DarkKnight_Triggered",
eventValues = mapOf("triggeredTime" to triggeredTime), eventValues = mapOf("isTriggeredWithinOffHours" to isTriggeredWithinOffHours.toString()),
) )
} }

View File

@@ -36,7 +36,10 @@ constructor(@ApplicationContext private val context: Context) : DarkKnightSchedu
override suspend fun schedulePeriodicSync() { override suspend fun schedulePeriodicSync() {
val constraints = val constraints =
Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build() Constraints.Builder()
.setRequiredNetworkType(networkType = NetworkType.CONNECTED)
.setRequiresStorageNotLow(requiresStorageNotLow = true)
.build()
val initialDelay = calculateInitialDelayInMillis() val initialDelay = calculateInitialDelayInMillis()

View File

@@ -12,7 +12,6 @@ import androidx.hilt.work.HiltWorker
import androidx.work.CoroutineWorker import androidx.work.CoroutineWorker
import androidx.work.WorkerParameters import androidx.work.WorkerParameters
import com.navi.base.utils.BaseUtils import com.navi.base.utils.BaseUtils
import com.navi.base.utils.DateUtils
import com.navi.base.utils.TrustedTimeAccessor import com.navi.base.utils.TrustedTimeAccessor
import com.navi.base.utils.log import com.navi.base.utils.log
import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper import com.navi.common.firebaseremoteconfig.FirebaseRemoteConfigHelper
@@ -33,7 +32,6 @@ import com.navi.pay.tstore.list.model.view.OrderStatusOfView
import com.navi.pay.tstore.list.repository.OrderRepository import com.navi.pay.tstore.list.repository.OrderRepository
import com.navi.pay.tstore.utils.error.OrderErrorMappingManager import com.navi.pay.tstore.utils.error.OrderErrorMappingManager
import com.navi.pay.utils.DARK_KNIGHT_WORKER import com.navi.pay.utils.DARK_KNIGHT_WORKER
import com.navi.pay.utils.DATE_TIME_FORMAT_DATE_MONTH_NAME_YEAR_AT_TIME
import com.navi.pay.utils.NAVI_PAY_LITMUS_EXPERIMENTS import com.navi.pay.utils.NAVI_PAY_LITMUS_EXPERIMENTS
import com.navi.payments.shared.feature.arc.usecase.ArcNudgeSyncUseCase import com.navi.payments.shared.feature.arc.usecase.ArcNudgeSyncUseCase
import dagger.assisted.Assisted import dagger.assisted.Assisted
@@ -81,14 +79,17 @@ constructor(
return@withContext Result.success() return@withContext Result.success()
} }
val currentHour = DateTime(TrustedTimeAccessor.getCurrentTimeMillis()).hourOfDay
val isTriggeredWithinOffHours = currentHour >= 1 && currentHour < 5
naviPayAnalytics.onDarkKnightTriggered( naviPayAnalytics.onDarkKnightTriggered(
triggeredTime = isTriggeredWithinOffHours = isTriggeredWithinOffHours
DateUtils.getFormattedDateTimeAsStringFromDateTimeObject(
dateTime = DateTime(TrustedTimeAccessor.getCurrentTimeMillis()),
format = DATE_TIME_FORMAT_DATE_MONTH_NAME_YEAR_AT_TIME,
)
) )
if (!isTriggeredWithinOffHours) {
return@withContext Result.success()
}
if (!BaseUtils.isUserLoggedIn()) { if (!BaseUtils.isUserLoggedIn()) {
naviPayAnalytics.onUserNotLoggedIn() naviPayAnalytics.onUserNotLoggedIn()
return@withContext Result.success() return@withContext Result.success()
@@ -172,7 +173,11 @@ constructor(
tasks.add( tasks.add(
async { async {
commonRepository.fetchNpciKeys( commonRepository.fetchNpciKeys(
metricInfo = getMetricInfo<NpciKeysResponse>(screenName = screenName) metricInfo =
getMetricInfo<NpciKeysResponse>(
screenName = screenName,
isNae = { false },
)
) )
} }
) )