View Issue Details

IDProjectCategoryView StatusLast Update
0007480Talerwallet (Android App)public2022-11-17 20:24
Reportersebasjm Assigned Togrote  
PriorityhighSeveritycrashReproducibilityalways
Status assignedResolutionopen 
Product Versiongit (master) 
Target Version0.9.1 
Summary0007480: exchange crash: opening the app before kudos exchange is added
Description

type: crash
osVersion:
google/sunfish/sunfish:13/TP1A.221105.002/2022111000:user/release-keys
package: net.taler.wallet.fdroid:20
process: net.taler.wallet.fdroid

java.lang.AssertionError: Wallet core failed to return exchanges!
   at
net.taler.wallet.exchanges.ExchangeManager$list$1$1.invoke(ExchangeManager.kt:2)
   at
net.taler.wallet.exchanges.ExchangeManager$list$1$1.invoke(ExchangeManager.kt:1)
   at net.taler.wallet.backend.WalletResponse.onError(WalletResponse.kt:17)
   at
net.taler.wallet.exchanges.ExchangeManager$list$1.invokeSuspend(ExchangeManager.kt:62)
   at
kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:9)
   at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:107)
   at android.os.Handler.handleCallback(Handler.java:942)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loopOnce(Looper.java:201)
   at android.os.Looper.loop(Looper.java:288)
   at android.app.ActivityThread.main(ActivityThread.java:7904)
   at java.lang.reflect.Method.invoke(Native Method)
   at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
   at com.android.internal.os.ExecInit.main(ExecInit.java:49)
   at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
   at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:355)
   Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException:
[StandaloneCoroutine{Cancelling}@142c24c, Dispatchers.Main.immediate]
TagsNo tags attached.

Activities

grote

2022-11-17 18:50

developer   ~0019437

From Florian:

This can actually happen. We were hiding this case before, but that was
effectively hiding errors that we can now surface to the user.

Example: We have "exchange.demo.taler.net" as a built-in trusted
exchange for "KUDOS". When the wallet starts the first time, we have
never contacted "exchange.demo.taler.net" before, so we technically
don't know its actual supported currency yet. But we still want it
included in the getExchanges response, so that we can surface errors
when updating the exchange /keys and /wire info fails. Thus it'll have
status "unknown" and no currency. (We could also report the currency as
KUDOS in this case, but we still would have the "unknown" case for other
attributes of the exchange)

Issue History

Date Modified Username Field Change
2022-11-17 18:43 sebasjm New Issue
2022-11-17 18:43 sebasjm Status new => assigned
2022-11-17 18:43 sebasjm Assigned To => grote
2022-11-17 18:50 grote Note Added: 0019437
2022-11-17 20:24 sebasjm Target Version git (master) => 0.9.1