OpenListTeam / OpenListTeam/OpenList

[BUG] 115开放平台PROPFIND文件夹时随机性报错

Open
#2,043 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Go
Stars
24.7k
Forks
2.3k
Avg merge
1d 20h
Merged PRs (30d)
36

Description

请确认以下事项
  • 我已确认阅读并同意 AGPL-3.0 第15条
    本程序不提供任何明示或暗示的担保,使用风险由您自行承担。

  • 我已确认阅读并同意 AGPL-3.0 第16条
    无论何种情况,版权持有人或其他分发者均不对使用本程序所造成的任何损失承担责任。

  • 我确认我的描述清晰,语法礼貌,能帮助开发者快速定位问题,并符合社区规则。

  • 我已确认阅读了OpenList文档

  • 我已确认没有重复的问题或讨论。

  • 我已确认是OpenList的问题,而不是其他原因(例如 网络依赖操作)。

  • 我认为此问题必须由OpenList处理,而非第三方。

  • 我已确认这个问题在最新版本中没有被修复。

  • 我没有阅读这个清单,只是闭眼选中了所有的复选框,请关闭这个 Issue

OpenList 版本(必填)

v4.1.9 (Commit: 8742344)

使用的存储驱动(必填)

115开放平台

问题描述(必填)

115开放平台PROPFIND文件夹时随机性报错。
从日志中可以看到在List "/115/照片视频备份/immich备份/immich_external_library/2021-7-4小麦岛草地音乐"时报错了。我通过rclone脚本每天晚上备份到115网盘,有以下发现:
1、报错的文件夹是随机的。
2、“2021-7-4小麦岛草地音乐”这个文件夹只有44个文件,可以排除文件数量过多的影响。
3、rclone脚本已经做了优化,经过观察不会触发115风控。且通过日志观察当前的文件夹报错后, 后面的文件夹执行正常,也可以说明没有触发115风控。

rclone脚本:
/usr/bin/rclone copy /mnt/mergerfs/immich_photos/immich_external_library/ openlist:/115/照片视频备份/immich备份/immich_external_library -P --stats 60s -vv --transfers 1 --checksum --low-level-retries 2 --retries 3 --timeout 60m --retries-sleep 8m --contimeout 10m --checkers=1 --tpslimit=1 --tpslimit-burst=1 --check-first

日志(必填)

GIN] 2026/01/28 - 20:00:20 | 207 | 18.990321094s | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library"
[GIN] 2026/01/28 - 20:00:20 | 207 | 1.307397ms | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library/"
[GIN] 2026/01/28 - 20:00:21 | 207 | 231.384502ms | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library/2021-10-4九仙山羊腿/"
[GIN] 2026/01/28 - 20:00:23 | 207 | 851.297196ms | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library/2021-12-25雪后小麦岛/"
[GIN] 2026/01/28 - 20:00:23 | 207 | 246.515862ms | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library/2021-6新疆溜达/"
ERRO[2026-01-28 20:00:38] fs/list: code: 0, message:
failed to list objs
github.com/OpenListTeam/OpenList/v4/internal/op.list.func1
/home/runner/work/OpenList/OpenList/internal/op/fs.go:62
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).doCall.func2
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:198
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).doCall
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:200
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).Do
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:113
github.com/OpenListTeam/OpenList/v4/internal/op.list
/home/runner/work/OpenList/OpenList/internal/op/fs.go:51
github.com/OpenListTeam/OpenList/v4/internal/op.List
/home/runner/work/OpenList/OpenList/internal/op/fs.go:27
github.com/OpenListTeam/OpenList/v4/internal/fs.list
/home/runner/work/OpenList/OpenList/internal/fs/list.go:26
github.com/OpenListTeam/OpenList/v4/internal/fs.List
/home/runner/work/OpenList/OpenList/internal/fs/fs.go:28
github.com/OpenListTeam/OpenList/v4/server/webdav.walkFS
/home/runner/work/OpenList/OpenList/server/webdav/file.go:96
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePropfind
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:711
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:83
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
/home/runner/work/OpenList/OpenList/server/webdav.go:47
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
/home/runner/work/OpenList/OpenList/server/webdav.go:146
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:644
github.com/gin-gonic/gin.(*Engine).ServeHTTP
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:600
net/http.serverHandler.ServeHTTP
/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:3340
net/http.(*conn).serve
/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:2109
runtime.goexit
/opt/hostedtoolcache/go/1.25.0/x64/src/runtime/asm_amd64.s:1693
ERRO[2026-01-28 20:00:38] failed list /115/照片视频备份/immich备份/immich_external_library/2021-7-4小麦岛草地音乐: code: 0, message:
failed to list objs
github.com/OpenListTeam/OpenList/v4/internal/op.list.func1
/home/runner/work/OpenList/OpenList/internal/op/fs.go:62
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).doCall.func2
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:198
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).doCall
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:200
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).Do
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:113
github.com/OpenListTeam/OpenList/v4/internal/op.list
/home/runner/work/OpenList/OpenList/internal/op/fs.go:51
github.com/OpenListTeam/OpenList/v4/internal/op.List
/home/runner/work/OpenList/OpenList/internal/op/fs.go:27
github.com/OpenListTeam/OpenList/v4/internal/fs.list
/home/runner/work/OpenList/OpenList/internal/fs/list.go:26
github.com/OpenListTeam/OpenList/v4/internal/fs.List
/home/runner/work/OpenList/OpenList/internal/fs/fs.go:28
github.com/OpenListTeam/OpenList/v4/server/webdav.walkFS
/home/runner/work/OpenList/OpenList/server/webdav/file.go:96
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePropfind
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:711
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:83
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
/home/runner/work/OpenList/OpenList/server/webdav.go:47
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
/home/runner/work/OpenList/OpenList/server/webdav.go:146
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:644
github.com/gin-gonic/gin.(*Engine).ServeHTTP
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:600
net/http.serverHandler.ServeHTTP
/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:3340
net/http.(*conn).serve
/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:2109
runtime.goexit
/opt/hostedtoolcache/go/1.25.0/x64/src/runtime/asm_amd64.s:1693
failed get objs
ERRO[2026-01-28 20:00:38] PROPFIND /dav/115/照片视频备份/immich备份/immich_external_library/2021-7-4小麦岛草地音乐/ code: 0, message:
failed to list objs
github.com/OpenListTeam/OpenList/v4/internal/op.list.func1
/home/runner/work/OpenList/OpenList/internal/op/fs.go:62
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).doCall.func2
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:198
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).doCall
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:200
github.com/OpenListTeam/OpenList/v4/pkg/singleflight.(*Group[...]).Do
/home/runner/work/OpenList/OpenList/pkg/singleflight/singleflight.go:113
github.com/OpenListTeam/OpenList/v4/internal/op.list
/home/runner/work/OpenList/OpenList/internal/op/fs.go:51
github.com/OpenListTeam/OpenList/v4/internal/op.List
/home/runner/work/OpenList/OpenList/internal/op/fs.go:27
github.com/OpenListTeam/OpenList/v4/internal/fs.list
/home/runner/work/OpenList/OpenList/internal/fs/list.go:26
github.com/OpenListTeam/OpenList/v4/internal/fs.List
/home/runner/work/OpenList/OpenList/internal/fs/fs.go:28
github.com/OpenListTeam/OpenList/v4/server/webdav.walkFS
/home/runner/work/OpenList/OpenList/server/webdav/file.go:96
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).handlePropfind
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:711
github.com/OpenListTeam/OpenList/v4/server/webdav.(*Handler).ServeHTTP
/home/runner/work/OpenList/OpenList/server/webdav/webdav.go:83
github.com/OpenListTeam/OpenList/v4/server.ServeWebDAV
/home/runner/work/OpenList/OpenList/server/webdav.go:47
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server.WebDAVAuth
/home/runner/work/OpenList/OpenList/server/webdav.go:146
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/OpenListTeam/OpenList/v4/server/middlewares.StoragesLoaded
/home/runner/work/OpenList/OpenList/server/middlewares/check.go:35
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:644
github.com/gin-gonic/gin.(*Engine).ServeHTTP
/home/runner/go/pkg/mod/github.com/gin-gonic/gin@v1.10.1/gin.go:600
net/http.serverHandler.ServeHTTP
/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:3340
net/http.(*conn).serve
/opt/hostedtoolcache/go/1.25.0/x64/src/net/http/server.go:2109
runtime.goexit
/opt/hostedtoolcache/go/1.25.0/x64/src/runtime/asm_amd64.s:1693
failed get objs
[GIN] 2026/01/28 - 20:00:38 | 404 | 14.159728998s | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library/2021-7-4小麦岛草地音乐/"
[GIN] 2026/01/28 - 20:00:38 | 207 | 318.214343ms | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library/2021-7太平角公园日落溜达/"
[GIN] 2026/01/28 - 20:00:40 | 207 | 487.001422ms | 192.168.1.201 | PROPFIND "/dav/115/照片视频备份/immich备份/immich_external_library/2021-8-15琅玡台露营/"

配置文件内容(必填)

{
"force": false,
"site_url": "",
"cdn": "",
"jwt_secret": "xxxxxxxxxxxxxxx",
"token_expires_in": 48,
"database": {
"type": "sqlite3",
"host": "",
"port": 0,
"user": "",
"password": "",
"name": "",
"db_file": "data/data.db",
"table_prefix": "x_",
"ssl_mode": "",
"dsn": ""
},
"meilisearch": {
"host": "http://localhost:7700",
"api_key": "",
"index": "openlist"
},
"scheme": {
"address": "0.0.0.0",
"http_port": 5244,
"https_port": -1,
"force_https": false,
"cert_file": "",
"key_file": "",
"unix_file": "",
"unix_file_perm": "",
"enable_h2c": false,
"enable_h3": false
},
"temp_dir": "data/temp",
"bleve_dir": "data/bleve",
"dist_dir": "",
"log": {
"enable": true,
"name": "data/log/log.log",
"max_size": 50,
"max_backups": 30,
"max_age": 28,
"compress": false,
"filter": {
"enable": false,
"filters": [
{
"cidr": "",
"path": "/ping",
"method": ""
},
{
"cidr": "",
"path": "",
"method": "HEAD"
},
{
"cidr": "",
"path": "/dav/",
"method": "PROPFIND"
}
]
}
},
"delayed_start": 0,
"max_buffer_limitMB": -1,
"mmap_thresholdMB": 4,
"max_connections": 0,
"max_concurrency": 64,
"tls_insecure_skip_verify": true,
"tasks": {
"download": {
"workers": 5,
"max_retry": 1,
"task_persistant": false
},
"transfer": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"upload": {
"workers": 5,
"max_retry": 0,
"task_persistant": false
},
"copy": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"move": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"decompress_upload": {
"workers": 5,
"max_retry": 2,
"task_persistant": false
},
"allow_retry_canceled": false
},
"cors": {
"allow_origins": [
""
],
"allow_methods": [
"
"
],
"allow_headers": [
"*"
]
},
"s3": {
"enable": false,
"port": 5246,
"ssl": false
},
"ftp": {
"enable": false,
"listen": ":5221",
"find_pasv_port_attempts": 50,
"active_transfer_port_non_20": false,
"idle_timeout": 900,
"connection_timeout": 30,
"disable_active_mode": false,
"default_transfer_binary": false,
"enable_active_conn_ip_check": true,
"enable_pasv_conn_ip_check": true
},
"sftp": {
"enable": false,
"listen": ":5222"
},
"last_launched_version": "v4.1.9",
"proxy_address": ""

复现链接(可选)

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce repeated WebDAV PROPFIND requests against the 115 storage and trace the listing path through server/webdav/file.go and server/webdav/webdav.go into internal/fs/list.go and internal/op/fs.go. Compare successful and failed listings using the supplied logs; done means the affected folders can be listed consistently without the reported failed-list error.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.