snowplow / snowplow-android-tracker

Snowplow event tracker for Android. Add analytics to your Android apps and games
http://snowplowanalytics.com
Apache License 2.0
109 stars 63 forks source link

TrackerEvent.<init> - ConcurrentModificationException #692

Closed ShivaS0111 closed 1 month ago

ShivaS0111 commented 3 months ago

Describe the bug Fatal Exception: java.util.ConcurrentModificationException

To Reproduce unable to reproduce in dev environment, facing issue in prod, reported in the firebase crashlog.

Expected behavior should not throw an error

Screenshots

Screenshot 2024-06-18 at 2 14 29 PM Screenshot 2024-06-18 at 2 15 38 PM

log file snowplow_crash_issue_86b88a0970251b5bc3b1863997677833_crash_session_66713D77028800011DFB8A366C99B6D9_DNE_0_v2_stacktrace.txt

Device informatoin (please complete the following information):

jbeemster commented 3 months ago

Hi @ShivaS0111 which version of the Tracker are you using?

ShivaS0111 commented 3 months ago

HI @jbeemster, Snowplow tracker version: 4.1.2

ShivaS0111 commented 3 months ago

Hi @jbeemster, any update on this, need to upgrade to any specific version?

matus-tomlein commented 3 months ago

Hi @ShivaS0111, thanks for getting back to us on the tracker version!

Unfortunately, we believe the issue is still present in the latest version of the tracker. We have added this to our backlog and will try to address in our upcoming sprints.

avinash-ivy commented 1 month ago

Hi @matus-tomlein Is there an ETA you can provide? We have decided to use Snowplow for remote logging. However, after pushing our changes live, we were forced to disable this feature due to crashes, so remote logging is currently unavailable for our app. Based on your ETA, we will decide whether we need to search for an alternative solution.

matus-tomlein commented 1 month ago

Sorry for the delay @avinash-ivy, this has been added to our next sprint, so should be released in around 2 weeks.

matus-tomlein commented 1 month ago

@avinash-ivy We are currently working on this and just to help us replicate – could you please let us know if at any point in your app, do you make changes to events that are already tracked? What I mean is that if you initialize an event (e.g.. using the SelfDescribing class), then you track it using tracker.track(event), is there a chance in parallel with this or after, the event instance is being modified?

Second question – alternatively, is it possible that the data that you pass to a SelfDescribingJson or the event using a dictionary is modified after it is tracked?