apptentive / apptentive-android

Apptentive Android SDK
http://www.apptentive.com
BSD 3-Clause "New" or "Revised" License
65 stars 64 forks source link

Active Conversation Error on Login and Message Center Loading #183

Closed sirivanleo closed 4 years ago

sirivanleo commented 4 years ago

Seems similar to this https://github.com/apptentive/apptentive-android/issues/167

I tried looking in the documentation for this failure but it doesn't appear to be documented https://learn.apptentive.com/knowledge-base/android-integration-reference/#apptentive-logincallback

We are seeing an increase in login failures when users try to open message center. This failure is being thrown. One timestamp is at 2019-07-23T15:21:22.044-0400

Unable to login: active conversation was not loaded

We're currently using sdk version 5.4.0 this issue is estimated to be impacting about 10% of our customer base.

Unfortunately as we haven't seen this internally we cannot get debug apptentive logs so I can't provide those, at this time.

Most likely the issue is happening with a race condition here

This field also seems related here

    private boolean activeConversationFailedToResolve; // TODO: this is a temporary solution until we restore conversation state
CaseyApptentive commented 4 years ago

Hi @sirivanleo, thanks so much for reaching out. We'll take a look at this as soon as possible and follow up directly when we know more.

Let me know if there's anything I can do for you in the meantime.

weeeBox commented 4 years ago

Hey @sirivanleo,

Do you use on-device encryption with Apptentive?

Race condition is unlikely since we only read/write SDK state in a single thread. This error indicates that the SDK was not able to load data from disk (corrupted files, failed encryption, etc).

Would you be able to provide the full log from any of the affected devices?

sirivanleo commented 4 years ago

Looking at our ApptentiveConfiguration we use this constructor

public ApptentiveConfiguration(@NonNull String apptentiveKey, @NonNull String apptentiveSignature)

after that we modify that configuration based on local debug flag keep in mind this is kotlin

 if (FeedbackPrefUtil.isDebuggingEnabled()) {
         configuration.logLevel = ApptentiveLog.Level.VERBOSE
         configuration.isTroubleshootingModeEnabled = true
      } else {
         configuration.logLevel = ApptentiveLog.Level.INFO
         configuration.isTroubleshootingModeEnabled = false
      }
      Apptentive.register(app, configuration)

Tracing the sdk I expect encryption to be off by default and we do not enable it.

CaseyApptentive commented 4 years ago

Hi @sirivanleo -- could you email me directly at casey@apptentive.com with which app you're working on? I'll add @weeeBox to the thread and can take a deeper look at the issue once we have the app name.

Thanks for helping track this down!

sirivanleo commented 4 years ago

I asked around and managed to get a stacktrace from the sdk side. I'll attach public facing trace here and share the project specific logs via email. Also I was told veronica@apptentive.com should have escalated this.

apptentive-sdk-stacktrace.txt

CaseyApptentive commented 4 years ago

Thanks, @sirivanleo !

And yes, I mentioned this to Veronica and can confirm the app you're working on. I'll look for your email as well and we'll take the conversation there with all involved cc'd.

Thanks again.

weeeBox commented 4 years ago

Hey @sirivanleo,

We've examined to logs and it looks like an existing issue which was fixed in 5.4.2. Please, update to the latest SDK version and let us know if it works! The fix would restore the data in all the existing app installs so after the update you should be able to see the issue occurrences going down.

sirivanleo commented 4 years ago

We can confirm that sdk 5.4.4 resolves this serialization issue

CaseyApptentive commented 4 years ago

Thanks for verifying, @sirivanleo! As this thread is split between GitHub and email, please help me make sure that all appropriate teams are aware.

Thanks again!