-
Notifications
You must be signed in to change notification settings - Fork 777
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
断点续传进度有误 #39
Comments
有些资源下载时候(http://uCQMz.zjgyxz.hwm6b6.cn/vp/yx_ljun1/yongbingduijue.apk ),下载完之前,关掉app,之后再次进入,通过StatusUtil.getCurrentInfo()获取不到断点信息,而且status会显示completed、但是人物并没有下载完成。还有下载工程中希望像filedownloader一样用.temp给临时文件命名~~ |
找不到页面.....@HeyAragon |
@HeyAragon 你的问题,提新的issue,具体我没有看明白。 @qianshengta 你的问题,你留意下日志。 前言当你点击
根据你的描述,我这边反复测试都没有复现,由于是非常极端的情况。 不过根据理论分析你的问题是很有可能因为以下原因导致的,其中一个是bug,另外一个则不是 原因一,极端情况非BUG如果一暂停完成,立马杀了对应的进程,则两个异步线程还未完成,则断点数据没有被同步进数据库,下次启动只是从最近一次同步的断点开始。 原因二,极端BUG该情况是,由于目前其实两个线程只有启动有先后顺序,但是是在两个不同池子里的不同线程,实际运行没有先后顺序,并且是在数据库还未进行过首次常规进度同步的前提下(默认是任务启动后1.5s执行),导致: 同步进度到数据库的job在刷新缓存到文件系统的job之前,此时,由于 但是这个理论概率是很低的:1. 刷新缓存到文件系统的job启动时间 早于 同步进度到数据库系统的job的启动时间;2. 刷新缓存文件系统的job通常会快于这块的数据库操作;3. 如果任务启动大于1.5s(默认),那么此时数据库便是完全开放刷新的,因此这种情况便不会将进度只存储在缓存。 不过这个极端BUG依然会在1.0.2-SNAPSHOT中修复 以上两个原因都可以一定程度通过日志进行验证需要特别留意的是在全程操作中,是否有
介于你描述的这么好复现,还是希望你能提供下日志进行对原因的验证,如果你无法从日志中得到验证,麻烦适配Debug后,复现然后将全程的日志,截图贴出来,谢谢。 |
@Jacksgong 好的 日志的话我明天上班的时候去收集下。 |
@Jacksgong |
@qianshengta 可否有办法提供全程完整的日志,哪怕不要截图,就提供文本。这样我不是很清楚,首先你第一次暂停与第一次重新开始都没有问题,然后你第二次暂停的时候,该次停止时的进度比启动的时的进度还少?进度还回退了,我没有看明白? |
好的,我明天得时候提供下完整的log。 |
@Jacksgong 您也小早点睡吧,明天再研究吧 |
@Jacksgong 卸载app后从新测试,这次下载到大约百分之四五十的时候暂停 |
@qianshengta 你的日志并没有适配okcat,因此截图出来可读性很差,我现在手头有点事情,你如果方便的话,这段时间,你可否直接将连续完整的日志,直接复制粘贴为文本发送给我,我手头一点事情忙完,我本地通过用okcat文本去解析看,这样提高效率。 |
@Jacksgong |
@qianshengta 好的,等你的日志,不过以防万一,最好也提供一份日志原件,我下午有点东西也要处理下。
|
@Jacksgong |
收到了,我一会儿看下,下次可以直接在Issue中上传,直接附件拉到评论框就可以了。 |
你这个日志的颜色可读性太差了,再次建议使用okcat,我这边不得不再根据你提供的日志文件的日志格式编写的 以下所有数据皆来自你给的日志文件:"60%"的两份文件:以上两个看起来没有任何问题。"15%"的两份文件:"15%"的这两个日志文件,第一个直接释放了文件锁,而没有完成刷新缓存到文件系统的日志,如果你的日志是完整的,那么这里我猜测极大的可能是文件系统存在问题,刷新失败导致。 但是这里的失败日志被我 请你引用1.0.2-SNAPSHOT版本(引用参考这里),然后再次验证(如果你之前就是引了这个snapshot版本,你需要确认下你本地snapshot缓存是否刷新),看看是否存在内容包含 而如果是最后同步到文件系统失败,因此该进度在进程被杀了以后,由于无法有效的同步到文件系统而丢失,这个问题便相对比较无解,而下次启动没有使用上一次进程中的最后的进度,也是正确的做法,因为真正文件系统中的进度并非上一次进程的最后的进度。 |
…lesystem failed, because on the final time it is significant refs #39
@Jacksgong |
@qianshengta ok,看到这个日志我就知道原因,可能确实是在部分机型上面比较容易出现,如果都是
|
…ith output-stream and ensure close output-stream after the last operation for output-stream refs #39
评论中提到的所有问题,都已经在 |
在demo的SingleDownload中,我下载了百分之五六十,然后点击取消,关掉app,刷掉进程。然后重新进去,个别时候没有进度需要重新下载,个别时候进度只有百分之二三十左右,但是我退出之前显示的进度确实百分之五六十。不知道这个问题是出在哪里。
The text was updated successfully, but these errors were encountered: