element-hq / element-hq/element-android

If doKeyDownloadForUsers() fails, we don't encrypt for the right devices?

Open
#692 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Kotlin
Stars
3.7k
Forks
917
PR merge metrics
No merged PRs in 30d

Description

Trying to debug a situation where RiotX was failing to send decryptable messages to Riot/Web (https://github.com/matrix-org/riot-web-rageshakes/issues/1943), my best guess is that the following exceptions stopped RiotX calculating the current device list for a given room, and so failed to encrypt to the right targets:

```
11-19 11:27:23.964Z NetworkConnection(ioException=com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:41)
at im.vector.matrix.android.internal.network.Request$execute$1.invokeSuspend(Unknown Source:11)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $
at com.squareup.moshi.JsonReader.syntaxError(JsonReader.java:233)
at com.squareup.moshi.JsonUtf8Reader.checkLenient(JsonUtf8Reader.java:1051)
at com.squareup.moshi.JsonUtf8Reader.doPeek(JsonUtf8Reader.java:366)
at com.squareup.moshi.JsonUtf8Reader.peek(JsonUtf8Reader.java:193)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:134)
at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:41)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:96)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:76)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:37)
... 7 more

11-19 11:27:23.964Z 2408 E/ /DeviceListManager: ##doKeyDownloadForUsers(): error
NetworkConnection(ioException=com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:41)
at im.vector.matrix.android.internal.network.Request$execute$1.invokeSuspend(Unknown Source:11)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $
at com.squareup.moshi.JsonReader.syntaxError(JsonReader.java:233)
at com.squareup.moshi.JsonUtf8Reader.checkLenient(JsonUtf8Reader.java:1051)
at com.squareup.moshi.JsonUtf8Reader.doPeek(JsonUtf8Reader.java:366)
at com.squareup.moshi.JsonUtf8Reader.peek(JsonUtf8Reader.java:193)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:134)
at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:41)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:96)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:76)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:37)
... 7 more

11-19 11:27:23.987Z NetworkConnection(ioException=com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:41)
at im.vector.matrix.android.internal.network.Request$execute$1.invokeSuspend(Unknown Source:11)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $
at com.squareup.moshi.JsonReader.syntaxError(JsonReader.java:233)
at com.squareup.moshi.JsonUtf8Reader.checkLenient(JsonUtf8Reader.java:1051)
at com.squareup.moshi.JsonUtf8Reader.doPeek(JsonUtf8Reader.java:366)
at com.squareup.moshi.JsonUtf8Reader.peek(JsonUtf8Reader.java:193)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:134)
at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:41)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:96)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:76)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:37)
... 7 more

11-19 11:27:23.989Z 2408 E/ /DeviceListManager: ## refreshOutdatedDeviceLists() : ERROR updating device keys for users [@andrewm:amorgan.xyz, @matthew:matrix.org, @jryans:matrix.org, @valere35:matrix.org]
NetworkConnection(ioException=com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:41)
at im.vector.matrix.android.internal.network.Request$execute$1.invokeSuspend(Unknown Source:11)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: com.squareup.moshi.JsonEncodingException: Use JsonReader.setLenient(true) to accept malformed JSON at path $
at com.squareup.moshi.JsonReader.syntaxError(JsonReader.java:233)
at com.squareup.moshi.JsonUtf8Reader.checkLenient(JsonUtf8Reader.java:1051)
at com.squareup.moshi.JsonUtf8Reader.doPeek(JsonUtf8Reader.java:366)
at com.squareup.moshi.JsonUtf8Reader.peek(JsonUtf8Reader.java:193)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:134)
at com.squareup.moshi.JsonAdapter.fromJson(JsonAdapter.java:41)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:96)
at im.vector.matrix.android.internal.network.RetrofitExtensionsKt.toFailure(RetrofitExtensions.kt:76)
at im.vector.matrix.android.internal.network.Request.execute(Request.kt:37)
... 7 more
```

Separately, the lack of logging here makes it almost impossible to see what's gone wrong - we should be logging the results of trying to keep our device lists accurate, so we can see when/how it fails.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.