Skip to content

百度网盘并发上传时有大概率出错 #5628

Description

@javalaw

Please make sure of the following things

  • I have read the documentation.
    我已经阅读了文档

  • I'm sure there are no duplicate issues or discussions.
    我确定没有重复的issue或讨论。

  • I'm sure it's due to AList and not something else(such as Network ,Dependencies or Operational).
    我确定是AList的问题,而不是其他原因(例如网络依赖操作)。

  • I'm sure this issue is not fixed in the latest version.
    我确定这个问题在最新版本中没有被修复。

AList Version / AList 版本

v3.29.1

Driver used / 使用的存储驱动

百度网盘

Describe the bug / 问题描述

分几种情况讨论:

  1. 百度网盘上传线程数设置为1,同时上传一个文件,一切正常
  2. 百度网盘上传线程数设置为1,同时上传多个文件,一切正常
  3. 百度网盘上传线程数设置为3,同时上传一个文件,有一定概率出错:报错为{"error_code":31299, "error_msg":"Invalid param keylist"}(partseq>=1的情况)或{"error_code":31299, "error_msg":"Invalid param size"} (partseq == 0的情况)
  4. 百度网盘上传线程数设置为3,同时上传多个文件,几乎肯定出错:报错同上。

我是百度网盘VIP,所以chunksize为32MB,不知道在4MB的情况下是否也存在同样问题。

Reproduction / 复现链接

找两个大小差不多的文件同时进行上传,文件大小超过一个分片即可复现,最好用几百M~1G的,方便复现,我是使用rclone进行同步时复现的:
.\rclone.exe sync D:\Data\Backup\Test Alist:/baiduDisk/try/test -P --local-encoding None --timeout=1h --transfers=2

Config / 配置

全是默认配置,云盘驱动也都是默认配置。

Logs / 日志

�[37mDEBU�[0m[2023-12-02 08:38:57]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:15]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:15]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:16]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:16]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:16]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param size"}
�[37mDEBU�[0m[2023-12-02 08:39:29]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:46]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:47]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:48]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}
�[37mDEBU�[0m[2023-12-02 08:39:48]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param size"}
�[37mDEBU�[0m[2023-12-02 08:39:48]/var/www/alist/drivers/baidu_netdisk/driver.go:317 github.com/alist-org/alist/v3/drivers/baidu_netdisk.(*BaiduNetdisk).uploadSlice() 400 Bad Request{"error_code":31299, "error_msg":"Invalid param keylist"}

简单跟了下源码,开启resty的debug设置后发现这部分请求其实没有读到文件。
正常情况下的resty debug log:

2023/12/02 08:38:45.385910 DEBUG RESTY 
==============================================================================
~~~ REQUEST ~~~
POST  /rest/2.0/pcs/superfile2?access_token=121.xxx&method=upload&partseq=0&path=xxx.mp4&type=tmpfile&uploadid=xxx  HTTP/1.1
HOST   : d.pcs.baidu.com
HEADERS:
	Content-Type: multipart/form-data; boundary=f71ef1962e4331d741886c8e4214ea4abb4f3a9273ef6bb540f43e736532
	User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
BODY   :
***** REQUEST TOO LARGE (size - 33554664) *****
------------------------------------------------------------------------------

异常情况下的resty debug log:

2023/12/02 08:38:57.453717 DEBUG RESTY 
==============================================================================
~~~ REQUEST ~~~
POST  /rest/2.0/pcs/superfile2?access_token=121xxx&method=upload&partseq=1&path=xxx.mp4&type=tmpfile&uploadid=xxx  HTTP/1.1
HOST   : d.pcs.baidu.com
HEADERS:
	Content-Type: multipart/form-data; boundary=b0ad7b4e3bdb41b92edde1b08b3da76c57c0b05e716ee12a64b9d08104e8
	Cookie: BAIDUID=xxx; BAIDUID_BFESS=xxx; BAIDUID=xxx; BAIDUID_BFESS=5xxx
	User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
BODY   :
--b0ad7b4e3bdb41b92edde1b08b3da76c57c0b05e716ee12a64b9d08104e8
Content-Disposition: form-data; name="file"; filename="xxx.mp4"
Content-Type: application/octet-stream


--b0ad7b4e3bdb41b92edde1b08b3da76c57c0b05e716ee12a64b9d08104e8--

------------------------------------------------------------------------------

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions