aws-amplify / aws-sdk-android

AWS SDK for Android. For more information, see our web site:
https://docs.amplify.aws
Other
1.02k stars 548 forks source link

TransferWorkerObserver$attachObserverForPendingTransfer$1.invokeSuspend (API 25) #3587

Closed onseok closed 3 weeks ago

onseok commented 3 weeks ago

Before opening, please confirm:

Language and Async Model

Kotlin

Amplify Categories

S3

Describe the bug

The amplify version that i am using is 2.16.0, and I can't re-produce the problem because I counter it on Firebase Crashlytics. But it occurs when I use workmanager for upload log files periodically using PeriodicWorkRequest.

StackTrace :

TransferWorkerObserver$attachObserverForPendingTransfer$1.invokeSuspend
Fatal Exception: java.lang.IllegalStateException: Couldn't read row 912, col 0 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
       at android.database.CursorWindow.nativeGetLong(CursorWindow.java)
       at android.database.CursorWindow.getLong(CursorWindow.java:511)
       at android.database.CursorWindow.getInt(CursorWindow.java:578)
       at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:69)
       at com.amplifyframework.storage.s3.transfer.TransferWorkerObserver$attachObserverForPendingTransfer$1.invokeSuspend(TransferWorkerObserver.kt:82)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:9)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:97)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

o9.J Dispatcher:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:201)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:432)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:333)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:908)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1057)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

Firebase Background Thread #1:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.park(LockSupport.java:161)
       at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2035)
       at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:413)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1058)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0(CustomThreadFactory.java:290)
       at java.lang.Thread.run(Thread.java:761)

o9.J Dispatcher:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:201)
       at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:432)
       at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:333)
       at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:908)
       at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1057)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1118)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

DefaultDispatcher-worker-6:
       at java.lang.Object.wait(Object.java)
       at java.lang.Thread.parkFor$(Thread.java:2127)
       at sun.misc.Unsafe.park(Unsafe.java:325)
       at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:324)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler.kt:301)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler.kt:301)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:301)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:301)

Environment Information (please complete the following information):