pilgr / Paper

Paper is a fast NoSQL-like storage for Java/Kotlin objects on Android with automatic schema migration support.
Apache License 2.0
2.35k stars 234 forks source link

v2.5 #96

Closed radvansky-tomas closed 7 years ago

radvansky-tomas commented 7 years ago

Hi I have this crash happening now: 10-02 11:52:12.161 9782-9782/com.healthera.healtheraapp W/System.err: io.paperdb.PaperDbException: Couldn't read/deserialize file /data/user/0/com.healthera.healtheraapp/files/io.paperdb/key_mini_users.pt for table key_mini_users 10-02 11:52:12.161 9782-9782/com.healthera.healtheraapp W/System.err: at io.paperdb.DbStoragePlainFile.readTableFile(DbStoragePlainFile.java:266) 10-02 11:52:12.161 9782-9782/com.healthera.healtheraapp W/System.err: at io.paperdb.DbStoragePlainFile.select(DbStoragePlainFile.java:151) 10-02 11:52:12.161 9782-9782/com.healthera.healtheraapp W/System.err: at io.paperdb.Book.read(Book.java:68) 10-02 11:52:12.161 9782-9782/com.healthera.healtheraapp W/System.err: at io.paperdb.Book.read(Book.java:53) 10-02 11:52:12.162 9782-9782/com.healthera.healtheraapp W/System.err: at com.healthera.healtheraapp.datamanagers.DataManager.getMiniUsers(DataManager.java:79) 10-02 11:52:12.162 9782-9782/com.healthera.healtheraapp W/System.err: at com.healthera.healtheraapp.datamanagers.DataManager.getMiniUser(DataManager.java:56) 10-02 11:52:12.162 9782-9782/com.healthera.healtheraapp W/System.err: at com.healthera.healtheraapp.datamanagers.DataManager.saveUsersPreferredPharmacy(DataManager.java:29) 10-02 11:52:12.162 9782-9782/com.healthera.healtheraapp W/System.err: at com.healthera.healtheraapp.managers.SyncManager$7.onSuccess(SyncManager.java:238) 10-02 11:52:12.162 9782-9782/com.healthera.healtheraapp W/System.err: at com.healthera.healtheraapp.managers.SyncManager$7.onSuccess(SyncManager.java:221) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at com.healthera.healtheraapp.http.base.BaseHttpClient$1$3.run(BaseHttpClient.java:124) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at android.os.Handler.handleCallback(Handler.java:789) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at android.os.Looper.loop(Looper.java:164) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6541) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at java.lang.reflect.Method.invoke(Native Method) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 10-02 11:52:12.163 9782-9782/com.healthera.healtheraapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 10-02 11:52:12.164 9782-9782/com.healthera.healtheraapp W/System.err: Caused by: com.esotericsoftware.kryo.KryoException: org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException 10-02 11:52:12.164 9782-9782/com.healthera.healtheraapp W/System.err: Serialization trace: 10-02 11:52:12.164 9782-9782/com.healthera.healtheraapp W/System.err: miniUsers (com.healthera.healtheraapp.datamanagers.objects.MiniUsers) 10-02 11:52:12.164 9782-9782/com.healthera.healtheraapp W/System.err: mContent (io.paperdb.PaperTable) 10-02 11:52:12.164 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:144) 10-02 11:52:12.164 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.CompatibleFieldSerializer.read(CompatibleFieldSerializer.java:145) 10-02 11:52:12.165 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:734) 10-02 11:52:12.165 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125) 10-02 11:52:12.165 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:543) 10-02 11:52:12.165 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:712) 10-02 11:52:12.165 9782-9782/com.healthera.healtheraapp W/System.err: at io.paperdb.DbStoragePlainFile.readContent(DbStoragePlainFile.java:275) 10-02 11:52:12.165 9782-9782/com.healthera.healtheraapp W/System.err: at io.paperdb.DbStoragePlainFile.readTableFile(DbStoragePlainFile.java:259) 10-02 11:52:12.165 9782-9782/com.healthera.healtheraapp W/System.err: ... 16 more 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: Caused by: org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: at org.objenesis.instantiator.android.Android18Instantiator.findConstructorIdForJavaLangObjectConstructor(Android18Instantiator.java:84) 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: at org.objenesis.instantiator.android.Android18Instantiator.<init>(Android18Instantiator.java:39) 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: at org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:96) 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.Kryo$DefaultInstantiatorStrategy.newInstantiatorOf(Kryo.java:1323) 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1127) 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1136) 10-02 11:52:12.166 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:562) 10-02 11:52:12.167 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.CompatibleFieldSerializer.read(CompatibleFieldSerializer.java:71) 10-02 11:52:12.167 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.Kryo.readClassAndObject(Kryo.java:816) 10-02 11:52:12.167 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:134) 10-02 11:52:12.167 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.CollectionSerializer.read(CollectionSerializer.java:40) 10-02 11:52:12.167 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:734) 10-02 11:52:12.168 9782-9782/com.healthera.healtheraapp W/System.err: at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125) 10-02 11:52:12.169 9782-9782/com.healthera.healtheraapp W/System.err: ... 23 more 10-02 11:52:12.169 9782-9782/com.healthera.healtheraapp W/System.err: Caused by: java.lang.reflect.InvocationTargetException 10-02 11:52:12.170 9782-9782/com.healthera.healtheraapp W/System.err: at java.lang.reflect.Method.invoke(Native Method) 10-02 11:52:12.170 9782-9782/com.healthera.healtheraapp W/System.err: at org.objenesis.instantiator.android.Android18Instantiator.findConstructorIdForJavaLangObjectConstructor(Android18Instantiator.java:72) 10-02 11:52:12.170 9782-9782/com.healthera.healtheraapp W/System.err: ... 35 more 10-02 11:52:12.170 9782-9782/com.healthera.healtheraapp W/System.err: Caused by: java.lang.UnsupportedOperationException: ObjectStreamClass.getConstructorId(Class<?>) is not supported on SDK 26 10-02 11:52:12.170 9782-9782/com.healthera.healtheraapp W/System.err: at java.io.ObjectStreamClass.getConstructorId(ObjectStreamClass.java:2294) 10-02 11:52:12.170 9782-9782/com.healthera.healtheraapp W/System.err: ... 37 more

pilgr commented 7 years ago

Which Paper version is in use? On which Android version does it happen?

pilgr commented 7 years ago

oops, sorry I see the version in the header

pilgr commented 7 years ago

How often does it happen? All the time or just for a small percentage of users?

radvansky-tomas commented 7 years ago

It happened on SKD26 (emulator) and on some xiaomi phone, i think it was android 5.0.2. But on these devices it was constant

ghost commented 7 years ago

Have the same problem on my Pixel and emulator with SDK26. Tried 2.1 and 2.5 paper version.

io.paperdb.PaperDbException: Couldn't read/deserialize file /data/user/0/se.euroaccident.appear.dev/files/io.paperdb/session_id_key.pt for table session_id_key
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.paperdb.DbStoragePlainFile.readTableFile(DbStoragePlainFile.java:281)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.paperdb.DbStoragePlainFile.readTableFile(DbStoragePlainFile.java:270)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.paperdb.DbStoragePlainFile.readTableFile(DbStoragePlainFile.java:248)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.paperdb.DbStoragePlainFile.select(DbStoragePlainFile.java:147)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.paperdb.Book.read(Book.java:68)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at se.euroaccident.appear.data.storage.PersistentStorage.lambda$read$1(PersistentStorage.java:51)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at se.euroaccident.appear.data.storage.PersistentStorage$$Lambda$2.call(Unknown Source:6)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:46)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Maybe.subscribe(Maybe.java:3726)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at hu.akarnokd.rxjava2.debug.MaybeOnAssemblyCallable.subscribeActual(MaybeOnAssemblyCallable.java:43)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Maybe.subscribe(Maybe.java:3726)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.internal.operators.maybe.MaybeFlatMapSingle.subscribeActual(MaybeFlatMapSingle.java:47)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Single.subscribe(Single.java:2702)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at hu.akarnokd.rxjava2.debug.SingleOnAssembly.subscribeActual(SingleOnAssembly.java:41)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Single.subscribe(Single.java:2702)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.internal.operators.single.SingleFlatMapCompletable.subscribeActual(SingleFlatMapCompletable.java:44)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Completable.subscribe(Completable.java:1635)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at hu.akarnokd.rxjava2.debug.CompletableOnAssembly.subscribeActual(CompletableOnAssembly.java:39)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Completable.subscribe(Completable.java:1635)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.internal.operators.maybe.MaybeFlatMapCompletable$FlatMapCompletableObserver.onSuccess(MaybeFlatMapCompletable.java:91)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at hu.akarnokd.rxjava2.debug.MaybeOnAssembly$OnAssemblyMaybeObserver.onSuccess(MaybeOnAssembly.java:68)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.internal.operators.maybe.MaybeFromCallable.subscribeActual(MaybeFromCallable.java:61)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Maybe.subscribe(Maybe.java:3726)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at hu.akarnokd.rxjava2.debug.MaybeOnAssemblyCallable.subscribeActual(MaybeOnAssemblyCallable.java:43)
10-05 11:45:07.613 7371-7371/se.euroaccident.appear.dev E/BaseLoginPresenter:     at io.reactivex.Maybe.subscribe(Maybe.java:3726)
nick-kleban commented 7 years ago

Same for me on SDK26. Paper version 2.1 and 2.5. At the bottom lays next exception.

Caused by: com.esotericsoftware.kryo.KryoException: org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException Serialization trace: mContent (io.paperdb.PaperTable) at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:144) at com.esotericsoftware.kryo.serializers.FieldSerializer.read(FieldSerializer.java:543) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:712) at io.paperdb.DbStoragePlainFile.readContent(DbStoragePlainFile.java:275) at io.paperdb.DbStoragePlainFile.readTableFile(DbStoragePlainFile.java:259) ... 48 more Caused by: org.objenesis.ObjenesisException: java.lang.reflect.InvocationTargetException at org.objenesis.instantiator.android.Android18Instantiator.findConstructorIdForJavaLangObjectConstructor(Android18Instantiator.java:84) at org.objenesis.instantiator.android.Android18Instantiator.(Android18Instantiator.java:39) at org.objenesis.strategy.StdInstantiatorStrategy.newInstantiatorOf(StdInstantiatorStrategy.java:86) at com.esotericsoftware.kryo.Kryo$DefaultInstantiatorStrategy.newInstantiatorOf(Kryo.java:1323) at com.esotericsoftware.kryo.Kryo.newInstantiator(Kryo.java:1127) at com.esotericsoftware.kryo.Kryo.newInstance(Kryo.java:1136) at com.esotericsoftware.kryo.serializers.FieldSerializer.create(FieldSerializer.java:562) at com.esotericsoftware.kryo.serializers.CompatibleFieldSerializer.read(CompatibleFieldSerializer.java:71) at com.esotericsoftware.kryo.Kryo.readObject(Kryo.java:734) at com.esotericsoftware.kryo.serializers.ObjectField.read(ObjectField.java:125) ... 52 more Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at org.objenesis.instantiator.android.Android18Instantiator.findConstructorIdForJavaLangObjectConstructor(Android18Instantiator.java:72) ... 61 more Caused by: java.lang.UnsupportedOperationException: ObjectStreamClass.getConstructorId(Class<?>) is not supported on SDK 25 at java.io.ObjectStreamClass.getConstructorId(ObjectStreamClass.java:2294) ... 63 more Caused by: hu.akarnokd.rxjava2.debug.RxJavaAssemblyException

pilgr commented 7 years ago

could you upload to GitHub a small project to reproduce this issue?

nick-kleban commented 7 years ago

Sure i'll try to do it now. I also found a bug in Kryo github - that seems should resolve my issue in v4.0.1 and it's strange because paper is already using this version.

nick-kleban commented 7 years ago

Sorry while doing an example project actually found that it was our fault. I found in build file next line: resolutionStrategy { force 'org.objenesis:objenesis:2.1' } After updating to 2.5.1 an issue was fixed. Idk right now what part of our project uses 2.1 version, will test it more and message to you if i'll find something else.

radvansky-tomas commented 7 years ago

Same here sorry

pilgr commented 7 years ago

ok, closing the issue