AlphaWallet / AlphaWallet/alpha-wallet-android
Completely decouple transactions fetch from TransactionViewModel (TVM)
- Lingua principale
- Java
- Stelle
- 646
- Fork
- 579
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
Recently this was reported from crashlytics:
```
Caused by java.lang.OutOfMemoryError: Failed to allocate a 897920 byte allocation with 717464 free bytes and 700KB until OOM
at java.lang.StringBuilder.toString + 408(StringBuilder.java:408)
at org.json.JSONStringer.toString + 430(JSONStringer.java:430)
at org.json.JSONArray.toString + 586(JSONArray.java:586)
at com.alphawallet.app.service.TransactionsNetworkClient.lambda$fetchLastTransactions$0$TransactionsNetworkClient + 76(TransactionsNetworkClient.java:76)
at com.alphawallet.app.service.-$$Lambda$TransactionsNetworkClient$pI6X5v-wFy_e2wipNKXrQfnX1vs.call(lambda)
at io.reactivex.internal.operators.single.SingleFromCallable.subscribeActual + 44(SingleFromCallable.java:44)
at io.reactivex.Single.subscribe + 3603(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run + 89(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run + 578(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run + 66(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call + 57(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run + 237(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run + 272(ScheduledThreadPoolExecutor.java:272)
at java.util.concurrent.ThreadPoolExecutor.runWorker + 1133(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run + 607(ThreadPoolExecutor.java:607)
at java.lang.Thread.run + 762(Thread.java:762)
```
It implies that during a transaction fetch, the phone ran out of memory.
- [ ] Limit transaction fetch to 2000 tx per fetch. This is fine because the next tx fetch will resume from last block recorded.
- [ ] Write transactions straight to database during fetch. Simply return the TransactionMeta entries. Even these may not be needed; the entries could be generated on the fly.
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Valutazione
Questa issue non è ancora stata valutata.