realm-java icon indicating copy to clipboard operation
realm-java copied to clipboard

RealmResults iterator throw ArrayIndexOutOfBoundsException in concurrent case

Open sherardxu opened this issue 1 year ago • 3 comments

How frequently does the bug occur?

Sometimes

Description

I'm using toFlow to cache in ViewModel and when I read the cache in multiple scenes, sometimes an exception is thrown.

Stacktrace & log output

java.lang.ArrayIndexOutOfBoundsException: length=10; index=10
	at java.util.ArrayList.add(ArrayList.java:468)
	at io.realm.internal.OsSharedRealm.addIterator(OsSharedRealm.java:515)
	at io.realm.internal.OsResults$Iterator.<init>(OsResults.java:68)
	at io.realm.OrderedRealmCollectionImpl$RealmCollectionIterator.<init>(OrderedRealmCollectionImpl.java:531)
	at io.realm.OrderedRealmCollectionImpl.iterator(OrderedRealmCollectionImpl.java:221)
	at io.realm.RealmResults.iterator(RealmResults.java:71)

Can you reproduce the bug?

Sometimes

Reproduction Steps

No response

Version

10.18.0

What Atlas App Services are you using?

Local Database only

Are you using encryption?

Yes

Platform OS and version(s)

Android

Build environment

Android Studio version: 2023.3.1 Patch 1 Android Build Tools version: 34.0.0 Gradle version: 8.6

sherardxu avatar May 28 '24 03:05 sherardxu

➤ PM Bot commented:

Jira ticket: RJAVA-1263

sync-by-unito[bot] avatar May 28 '24 03:05 sync-by-unito[bot]

Happens quite a lot on my project as well. Encryption: OFF

caeduk avatar Jun 15 '24 11:06 caeduk

this should probably be a synchronised list?

final List<WeakReference<OsResults.Iterator>> iterators = new ArrayList<>();

caeduk avatar Jun 15 '24 11:06 caeduk