关于OSS上传问题排查记录

本次排查遇到以下问题:

1.iOS OSS库版本过老,OSS 库原存在的问题。

2.上传时从服务端获取OSS上传token接口偶现返回为空结果,导致无法获取身份信息上传失败。

3.IOS任务中有上传重复文件处理中有bug。

4.网络监控库版本过老,弱网时偶尔会出现判定为无网的通知。

5.IOS上传中断网或者切换网络的时候存在问题。

问题说明以及处理:

1.iOS OSS库版本过老,OSS 库原存在的问题。

说明:目前线上使用的OSS 库为2.8.0,IOS OSS 库最新版本为2.10.7。版本更新解决问题如下地址https://github.com/aliyun/aliyun-oss-ios-sdk/releases(此问题bugly 上有崩溃记录,并且版本中修复的问题,做弱网测试的时候出现过。)

处理:更换最新的iOS OSS 库

 

2.上传时从服务端获取OSS上传token接口偶现返回为空结果,导致无法获取身份信息上传失败。

说明:原接口处理部分逻辑写的比较单一,认为接口在正常情况下会给出正常数据。如果接口异常会返回error。但是没有考虑会出现给返回结果但是结果数据为空。(bugly 上对文件出错的记录中有此问题)

处理:和后端沟通结果做出错返回,客户端做所有数据监测,如果数据不全,不创建上传token(iOS OSS 库使用的数模token),下次上传继续从服务器获取OSS 上传token。(此问题在bugly 上的记录如下)(和阿里云沟通此问题后修改3次获取token出错的容错处理,https://github.com/ZXLBoaConstrictor/ZXLUpload/blob/master/ZXLUploadDome/ZXLUploadDome/ZXLUploadManager/JLBAliOSSManager.m 代码中有加处理)关于OSS上传问题排查记录

 

3.IOS任务中有上传重复文件处理中有bug

说明:当一个上传任务中有多个重复文件,并且文件很小、网络很好的时候,会出现上传文件找不到的问题。 原设想逻辑中相同文件只传一次,但是在处理过程中在筛选一个任务中需要上传的文件唯一值后(会产生一个需要上传的文件唯一值数组),在进行上传过程中匹配一个会从需要上传的数组中删除一个文件唯一值,这里没有进行删除操作,会出现上传失败,文件找不到问题。

处理结果:修改逻辑当需要上传的文件,上传任务开始时从需要上传的文件唯一值数组中删除此文件唯一值。(在bugly 上记录如下)

关于OSS上传问题排查记录

 

4.网络监控库版本过老,弱网时偶尔会出现判定为无网的通知。

说明:IOS 使用的网络环境库  Reachability 库 (苹果官方提供),为2011年的老版本,目前最新的2016年的库。

处理:更换最新的网络环境库。

 

5.IOS上传中断网或者切换网络的时候存在问题。

说明:当上传中断网或者切换网络,目前的逻辑是立即判定所有文件上传失败,并且取消当前任务。但是IOS OSS库中对上传取消的操作不会立即返回出错,这个时候操作比较快网络又连接上逻辑中又重新上传,此时取消操作返回,这会判定此文件上传失败。

处理:当上传中断网或者切换网络时,对上传请求做记录对比,如果返回结果的任务请求和当前文件记录不一样不做结果处理。(目前正在验证中,bugly上记录)

关于OSS上传问题排查记录