realm-java: Error when deleting RealmObject: Key not found

Goal

I have some weird errors on deleting object, but I don’t understand why it’s happened. Unfortunately, I don’t encountered this issue myself, but according to crashlytics data, lot of users have this bug.

Actual Results

Stack Trace by firebase Crashlytics :

Non-fatal Exception: io.realm.exceptions.RealmError: Unrecoverable error. Key not found in /Users/cm/Realm/realm-java-release/realm/realm-library/src/main/cpp/io_realm_internal_Table.cpp line 280
       at io.realm.internal.Table.nativeMoveLastOver(Table.java)
       at io.realm.internal.Table.moveLastOver(Table.java:315)
       at io.realm.RealmObject.deleteFromRealm(RealmObject.java:117)
       at io.realm.RealmObject.deleteFromRealm(RealmObject.java:89)
       at com.samsic.contrattravail.data.factory.DocumentFactory$Companion.removeDocument(DocumentFactory.java:599)
       at com.samsic.contrattravail.data.factory.DocumentFactory$Companion.deleteDocumentsById(DocumentFactory.java:592)
       at com.samsic.contrattravail.data.factory.DocumentFactory$Companion.deleteDocuments$app_prodRelease(DocumentFactory.java:585)
       at com.samsic.contrattravail.data.factory.DocumentFactory$Companion.deleteCarteVitale(DocumentFactory.java:414)
       at com.samsic.contrattravail.data.factory.SalarieFactory$Companion.deleteSalarie(SalarieFactory.java:339)
       at com.samsic.contrattravail.data.factory.SalarieFactory$Companion.deleteSalarieIfUnused(SalarieFactory.java:438)
       at com.samsic.contrattravail.data.factory.SalarieFactory$Companion.removeUnusedTabletSalarie(SalarieFactory.java:387)
       at com.samsic.contrattravail.data.helper.SynchroReferentielHelper$Companion$cleanDataOnLaunch$1.write(SynchroReferentielHelper.java:137)
       at com.androidcore.realm.DatabaseWriteHelper$getWriterCompletable$1$1.execute(DatabaseWriteHelper.java:113)
       at io.realm.Realm.executeTransaction(Realm.java:1489)
       at com.androidcore.realm.DatabaseWriteHelper$getWriterCompletable$1.subscribe(DatabaseWriteHelper.java:112)
       at io.reactivex.internal.operators.completable.CompletableCreate.subscribeActual(CompletableCreate.java:39)
       at io.reactivex.Completable.subscribe(Completable.java:2309)
       at io.reactivex.internal.operators.single.SingleFlatMapCompletable$FlatMapCompletableObserver.onSuccess(SingleFlatMapCompletable.java:91)
       at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onSuccess(SingleSubscribeOn.java:68)
       at io.reactivex.internal.operators.single.SingleCreate$Emitter.onSuccess(SingleCreate.java:67)
       at com.androidcore.realm.AbstractDatabaseManager$getRealmEmitter$1.subscribe(AbstractDatabaseManager.java:161)
       at io.reactivex.internal.operators.single.SingleCreate.subscribeActual(SingleCreate.java:39)
       at io.reactivex.Single.subscribe(Single.java:3666)
       at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
       at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
       at android.os.Handler.handleCallback(Handler.java:739)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:145)
       at android.os.HandlerThread.run(HandlerThread.java:61)

Steps & Code to Reproduce

Version of Realm and tooling

Realm version(s): 7.0.0 Realm Sync feature enabled: No Android Studio version: 4.0.0 Android Build Tools version: 29.0.3 Gradle version: 6.5

About this issue

  • Original URL
  • State: closed
  • Created 4 years ago
  • Reactions: 1
  • Comments: 69 (25 by maintainers)

Most upvoted comments

I now have a good lead on this.

That’s not fixed the data corruption. With version 10.2.0, a crash occurs as soon as I touch the database. 2020-12-14 17:22:01.365 5818-7380/com.gco.realmtest E/REALM_JNI: jni: ThrowingException 5, No such object in /tmp/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 106, . 2020-12-14 17:22:01.365 5818-7380/com.gco.realmtest E/REALM_JNI: Exception has been thrown: Unrecoverable error. No such object in /tmp/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 106 2020-12-14 17:22:01.367 5818-7380/com.gco.realmtest E/AndroidRuntime: FATAL EXCEPTION: RealmThread_write Process: com.gco.realmtest, PID: 5818 io.realm.exceptions.RealmError: Unrecoverable error. No such object in /tmp/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 106 at io.realm.internal.OsSharedRealm.nativeGetSharedRealm(Native Method) at io.realm.internal.OsSharedRealm.<init>(OsSharedRealm.java:173) at io.realm.internal.OsSharedRealm.getInstance(OsSharedRealm.java:249) at io.realm.BaseRealm.<init>(BaseRealm.java:138) at io.realm.BaseRealm.<init>(BaseRealm.java:105) at io.realm.Realm.<init>(Realm.java:159) at io.realm.Realm.createInstance(Realm.java:495) at io.realm.RealmCache.createInstance(RealmCache.java:481) at io.realm.RealmCache.doCreateRealmOrGetFromCache(RealmCache.java:448) at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:412) at io.realm.Realm.getInstance(Realm.java:424) at com.gco.realmtest.realm.RealmThread.onLooperPrepared(RealmThread.kt:31) at android.os.HandlerThread.run(HandlerThread.java:66)

@Jeff11 Sorry. The core fixes seems to have slipped from the change log. The fix (https://github.com/realm/realm-core/pull/4051) was included by the upgrade to Core 10.1.3.

@GaelCO Thank you for reporting back. Sounds like we still have a bug to find.

Great news. Normally, I publish a new version during next week. So, I let you know if it’s fixed this problem in my app. I have never managed to reproduct, so I can’t validate the fix without publishing.

We just released 7.0.5 with fixes which could also lead to “Key not found” errors.

We just released 7.0.2 with a number of fixes. We have not yet been able to reproduce this particular bug, we there is indications that this will have been fixed by 7.0.2. So please upgrade. We are definitely interested in hearing if this issue is still around after 7.0.2