Skip to content

ANR from AndroidMqttClient during MQTT initialization #21

@alvarisi

Description

@alvarisi

Hi
@deepanshu42 @alfianlosari
we found that the initialization causing an ANR, we record them using ANR Watchdog with below stacktrace.

com.github.anrwatchdog.ANRError: Application Not Responding for at least 5000 ms.
Caused by: com.github.anrwatchdog.ANRError$$$_Thread: main (state = RUNNABLE)
at com.gojek.mqtt.client.v3.impl.AndroidMqttClient.<init>(AndroidMqttClient.kt:179)
at com.gojek.mqtt.client.v3.impl.AndroidMqttClient.<init>(AndroidMqttClient.kt:80)
at com.gojek.mqtt.client.factory.AndroidMqttClientFactory.createAndroidMqttClient(IAndroidMqttClientFactory.kt:49)
at com.gojek.mqtt.client.internal.MqttClientInternal.<init>(MqttClientInternal.kt:65)
at com.gojek.mqtt.client.factory.MqttClientFactory$Companion.create(MqttClientFactory.kt:15)
at com.gojek.courier.courier_dart_sdk.internal.MqttClientDelegate.<init>(MqttClientDelegate.kt:15)
at com.gojek.courier.courier_dart_sdk.CourierDartSdkPlugin.initialise(CourierDartSdkPlugin.kt:141)
at com.gojek.courier.courier_dart_sdk.CourierDartSdkPlugin.onMethodCall(CourierDartSdkPlugin.kt:65)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267)
at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292)
at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loopOnce(Looper.java:257)
at android.os.Looper.loop(Looper.java:342)
at android.app.ActivityThread.main(ActivityThread.java:9638)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)

Hence as part from the fix we are raising an MR for running them in background thread as quick fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions