Skip to content
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

The current offset on block-info isn't update correct, 104466100 != 106391228 on 3 #495

Open
huanghaoda8 opened this issue Nov 29, 2022 · 14 comments

Comments

@huanghaoda8
Copy link

OkDownload Version

v1.0.7
新版本,从阿里云存储服务器下载文件,采用多块下载必现的以下问题,导致onTaskEnd要么不回调,要么回调error,重下依旧失败;
The current offset on block-info isn't update correct, 104466100 != 106391228 on 3

采取单线程下载就不会出现该问题,请问这个问题有解决方案吗,网上重写MultiPointOutputStream.java的close()方法不能解决问题,由于下载文件较大,需要采用多块下载。

@DerrickChanJL
Copy link

同问

2 similar comments
@hellowwwwp
Copy link

同问

@alanqjt
Copy link

alanqjt commented Dec 28, 2022

同问

@tianshaokai
Copy link

@huanghaoda8 你那边报错是必现吗,我最近一直在找必现的case,如果这个问题比较急,可以交流一下

@huanghaoda8
Copy link
Author

@huanghaoda8 你那边报错是必现吗,我最近一直在找必现的case,如果这个问题比较急,可以交流一下

多块下载时必现,现在改成单链接下载,就不再出现了。根据log,包头返回的块范围值、总长度值没有问题,实际下载到流结束时,就必现的获取到的数据流长度与块长度不一致,不能确定是不是服务器问题;以下是可验证的下载链接:
https://obsbot-static-resource.oss-accelerate.aliyuncs.com/product_system_back/firmware_test/update1-0-1.zip

@tianshaokai
Copy link

@huanghaoda8 谢谢,我明天抽时间校验一下,你测试的是android 多少版本,什么型号手机,不同型号都必现吗

@tianshaokai
Copy link

@huanghaoda8 https://github.com/tianshaokai/okdownload 你可以在这个代码里,修改单次下载 改为你上边的链接试一下,我测试了两遍目前没有发现问题,如果有问题可以随时通过邮箱联系我([email protected])

@zhongxingqiang
Copy link

@tianshaokai 修改是不是增加了同步锁。 在android10中以前我增加了这段代码
synchronized (noSyncLengthMap) {
// make sure the length of noSyncLengthMap is equal to outputStreamMap
outputStreamMap.remove(blockIndex);
noSyncLengthMap.remove(blockIndex);
但还是偶尔会出现这个错误,概率比较低。我再把这个同步锁加上看看会不会复现此问题

@tianshaokai
Copy link

@zhongxingqiang 就算增加了你说的这个同步锁,依然偶现问题

@zhongxingqiang
Copy link

@tianshaokai 在done方法增加同步锁后 让一个任务反复下载,测试了半小时没有出现。 在inspectComplete中如果出现此问题我修改为不抛异常 这样可以继续完成任务 不知道有其他大的影响不

@tianshaokai
Copy link

tianshaokai commented Jan 15, 2023

@zhongxingqiang 你这样改就是吞了异常,出了问题无法获取到原因,如果到了线上就变成了线上事故

@zhongxingqiang
Copy link

@tianshaokai 那我就在taskEnd回调中 如果出现这个异常就再次下载 可以么
你是怎么测试复现的 我又跑了半个小时还没复现

@tianshaokai
Copy link

@zhongxingqiang 你可以按照自己理解的改,发布到线上,每天那么大的日活量帮你测试一下,看看有什么问题,多线程问题本地是不好复现的

@zhongxingqiang
Copy link

@tianshaokai 好的 感谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants