aliyun / aliyun-oss-android-sdk

Android SDK for aliyun object storage service
803 stars 310 forks source link

2.9.15 断点续传存在死锁可能 #415

Closed google-mirror closed 6 days ago

google-mirror commented 3 weeks ago

线上dump出现大量类似的trace:

----
Thread[ReferenceQueueDaemon,5,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:217)
 java.lang.Daemons$Daemon.run(Daemons.java:139)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_2,5,main]
----
Thread[RenderThread,7,main]
----
Thread[[GT]upload#13,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[FinalizerWatchdogDaemon,5,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 java.lang.Daemons$FinalizerWatchdogDaemon.sleepUntilNeeded(Daemons.java:341)
 java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:321)
 java.lang.Daemons$Daemon.run(Daemons.java:139)
 java.lang.Thread.run(Thread.java:919)
----
Thread[FinalizerDaemon,5,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:190)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:211)
 java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:273)
 java.lang.Daemons$Daemon.run(Daemons.java:139)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#20,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#11,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_4,5,main]
----
Thread[oss-android-log-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#3,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_7,5,main]
----
Thread[Binder:4174_3,5,main]
----
Thread[[GT]upload#25,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:interceptor,5,main]
 android.os.MessageQueue.nativePollOnce(Native Method)
 android.os.MessageQueue.next(MessageQueue.java:336)
 android.os.Looper.loop(Looper.java:181)
 android.os.HandlerThread.run(HandlerThread.java:67)
----
Thread[ConnectivityThread,5,main]
 android.os.MessageQueue.nativePollOnce(Native Method)
 android.os.MessageQueue.next(MessageQueue.java:336)
 android.os.Looper.loop(Looper.java:181)
 android.os.HandlerThread.run(HandlerThread.java:67)
----
Thread[oss-android-api-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_8,5,main]
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_6,5,main]
----
Thread[[GT]upload#14,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-extensionapi-thread,2,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:2)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:2)
 java.util.concurrent.FutureTask.run(FutureTask.java:266)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#5,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#23,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#25,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#7,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-api-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Okio Watchdog,6,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 com.android.okhttp.okio.AsyncTimeout.awaitTimeout(AsyncTimeout.java:313)
 com.android.okhttp.okio.AsyncTimeout.access$000(AsyncTimeout.java:42)
 com.android.okhttp.okio.AsyncTimeout$Watchdog.run(AsyncTimeout.java:288)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-api-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[queued-work-looper,5,main]
 android.os.MessageQueue.nativePollOnce(Native Method)
 android.os.MessageQueue.next(MessageQueue.java:336)
 android.os.Looper.loop(Looper.java:181)
 android.os.HandlerThread.run(HandlerThread.java:67)
----
Thread[[GT]upload#24,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[main,5,main]
 android.os.MessageQueue.nativePollOnce(Native Method)
 android.os.MessageQueue.next(MessageQueue.java:336)
 android.os.Looper.loop(Looper.java:181)
 android.app.ActivityThread.main(ActivityThread.java:7561)
 java.lang.reflect.Method.invoke(Native Method)
 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
----
Thread[Binder:4174_9,5,main]
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-extensionapi-thread,2,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:2)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:2)
 java.util.concurrent.FutureTask.run(FutureTask.java:266)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#26,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#23,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#4,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Signal Catcher,5,system]
----
Thread[HeapTaskDaemon,5,system]
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_1,5,main]
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-api-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-extensionapi-thread,2,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:2)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:2)
 java.util.concurrent.FutureTask.run(FutureTask.java:266)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-api-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[[GT]upload#3,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-extensionapi-thread,2,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:2)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:2)
 java.util.concurrent.FutureTask.run(FutureTask.java:266)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_5,5,main]
----
Thread[[GT]upload#1,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.FutureTask.awaitDone(FutureTask.java:450)
 java.util.concurrent.FutureTask.get(FutureTask.java:192)
 com.alibaba.sdk.android.oss.internal.OSSAsyncTask.getResult(Unknown Source:2)
 com.alibaba.sdk.android.oss.OSSImpl.resumableUpload(Unknown Source:7)
 com.alibaba.sdk.android.oss.OSSClient.resumableUpload(Unknown Source:2)
 ...
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Jit thread pool worker thread 0,5,main]
----
Thread[Binder:4174_A,5,main]
----
Thread[oss-android-extensionapi-thread,2,system]
 java.lang.Object.wait(Native Method)
 java.lang.Object.wait(Object.java:442)
 java.lang.Object.wait(Object.java:568)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:2)
 com.alibaba.sdk.android.oss.internal.ResumableUploadTask.doMultipartUpload(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:1)
 com.alibaba.sdk.android.oss.internal.BaseMultipartUploadTask.call(SourceFile:2)
 java.util.concurrent.FutureTask.run(FutureTask.java:266)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[oss-android-multipart-thread,2,system]
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:190)
 java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2067)
 java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:387)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1092)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
 java.lang.Thread.run(Thread.java:919)
----
Thread[Binder:4174_B,5,main]

是否, 断点文件运行时被删、断网等异常情况下触发你们的bug?

google-mirror commented 3 weeks ago

可以看出5个oss-android-extensionapi-thread已经全部被占了, 但是似乎并没有任务正在上传

wlll129 commented 2 weeks ago

@google-mirror 断网时会继续上传其他未上传的分片,并且每个分片都会重试,默认重试2次,所以分片都处理完后才结束。 如果想收到异常直接结束,可以设置request.setExceptionTerminationMode(ResumableUploadRequest.ExceptionTerminationMode.EXCEPTION);

google-mirror commented 6 days ago

@google-mirror 断网时会继续上传其他未上传的分片,并且每个分片都会重试,默认重试2次,所以分片都处理完后才结束。 如果想收到异常直接结束,可以设置request.setExceptionTerminationMode(ResumableUploadRequest.ExceptionTerminationMode.EXCEPTION);

不太像, 线上卡了好几个小时, 重试2次不应该这么久, 我们这边把sdk改了, 对外提供timeout和interrupt