You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Collecting data with photo and text tests fails without printing stack trace. Using debugger, I caught the following in LocalMutationSyncWorker:124:
java.lang.ClassCastException: com.google.android.ground.model.submission.TextTaskData cannot be cast to com.google.android.ground.model.submission.PhotoTaskData
at com.google.android.ground.persistence.remote.firebase.protobuf.ModelToProtoExtKt.toMessage(ModelToProtoExt.kt:170)
at com.google.android.ground.persistence.remote.firebase.protobuf.ModelToProtoExtKt.createSubmissionMessage(ModelToProtoExt.kt:78)
at com.google.android.ground.persistence.remote.firebase.schema.SubmissionDocumentReference.addMutationToBatch(SubmissionDocumentReference.kt:35)
at com.google.android.ground.persistence.remote.firebase.FirestoreDataStore.addSubmissionMutationToBatch(FirestoreDataStore.kt:125)
at com.google.android.ground.persistence.remote.firebase.FirestoreDataStore.applyMutations(FirestoreDataStore.kt:96)
at com.google.android.ground.persistence.sync.LocalMutationSyncWorker.processMutations(LocalMutationSyncWorker.kt:118)
at com.google.android.ground.persistence.sync.LocalMutationSyncWorker.access$processMutations(LocalMutationSyncWorker.kt:43)
at com.google.android.ground.persistence.sync.LocalMutationSyncWorker$processMutations$2.invokeSuspend(Unknown Source:15)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
The text was updated successfully, but these errors were encountered:
It appears photo tasks are still being stored in mutations under newTaskData as TextTaskData instead of PhotoTaskData. I suggest fixing at the source and adding a throw/catch to report this in logs.
@shobhitagarwal1612@scolsen It appears the problem is that ValueJsonConverter still converts photos to TextTaskData when loading from the local db, and only stores the remote path to the local mutation queue. We would also need to full local path to be able to queue up uploads in the media sync worker.
It looks like we have a hack in UserMediaRepository::getLocalFileFromRemotePath to reconstruct the local path to work around this fact.
Collecting data with photo and text tests fails without printing stack trace. Using debugger, I caught the following in
LocalMutationSyncWorker:124
:The text was updated successfully, but these errors were encountered: