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

添加回收站后,无法保存空文件 #7826

Open
4 tasks done
qing9-cc opened this issue Jan 17, 2025 · 2 comments
Open
4 tasks done

添加回收站后,无法保存空文件 #7826

qing9-cc opened this issue Jan 17, 2025 · 2 comments
Labels
bug Something isn't working

Comments

@qing9-cc
Copy link

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.41.0

Driver used / 使用的存储驱动

本机存储

Describe the bug / 问题描述

我挂载本机存储,并且将回收站设置好之后,新建空文档,并编辑文档,无法正常保存
显示错误

Image

Reproduction / 复现链接

局域网无外网

Config / 配置

{
"force": false,
"site_url": "https://alist.mdxm.dev",
"cdn": "",
"jwt_secret": "bqZKuHQiuTnFhhfp",
"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_prefix": ""
},
"scheme": {
"address": "0.0.0.0",
"http_port": 5244,
"https_port": -1,
"force_https": false,
"cert_file": "",
"key_file": "",
"unix_file": "",
"unix_file_perm": ""
},
"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
},
"delayed_start": 10,
"max_connections": 0,
"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
}
},
"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": "dev"
}

Logs / 日志

ERRO[2025-01-17 04:09:14] failed put /: rename /alist/files/test.md /recycle/test.md: invalid cross-device link
github.com/alist-org/alist/v3/internal/op.Remove
/source/internal/op/fs.go:501
github.com/alist-org/alist/v3/internal/op.Put
/source/internal/op/fs.go:521
github.com/alist-org/alist/v3/internal/fs.putDirectly
/source/internal/fs/put.go:80
github.com/alist-org/alist/v3/internal/fs.PutDirectly
/source/internal/fs/fs.go:97
github.com/alist-org/alist/v3/server/handles.FsStream
/source/server/handles/fsup.go:64
github.com/gin-gonic/gin.(*Context).Next
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185
github.com/alist-org/alist/v3/server/middlewares.FsUp
/source/server/middlewares/fsup.go:43
github.com/gin-gonic/gin.(*Context).Next
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185
github.com/alist-org/alist/v3/server/middlewares.Auth
/source/server/middlewares/auth.go:73
github.com/gin-gonic/gin.(*Context).Next
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185
github.com/alist-org/alist/v3/server/middlewares.StoragesLoaded
/source/server/middlewares/check.go:14
github.com/gin-gonic/gin.(*Context).Next
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185
github.com/gin-gonic/gin.CustomRecoveryWithWriter.func1
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/recovery.go:102
github.com/gin-gonic/gin.(*Context).Next
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185
github.com/gin-gonic/gin.LoggerWithConfig.func1
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/logger.go:249
github.com/gin-gonic/gin.(*Context).Next
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/context.go:185
github.com/gin-gonic/gin.(*Engine).handleHTTPRequest
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/gin.go:633
github.com/gin-gonic/gin.(*Engine).ServeHTTP
/go/pkg/mod/github.com/gin-gonic/gin@v1.10.0/gin.go:589
net/http.serverHandler.ServeHTTP
/usr/local/go/src/net/http/server.go:3210
net/http.(*conn).serve
/usr/local/go/src/net/http/server.go:2092
runtime.goexit
/usr/local/go/src/runtime/asm_amd64.s:1700
while uploading, failed remove existing file which size = 0

@qing9-cc qing9-cc added the bug Something isn't working label Jan 17, 2025
@Jason-Fly
Copy link
Contributor

可以再详细描述一下这个场景吗,根据现有的日志我初步推断:
1.目录中原本有test.md,又重复创建了test.md,导致触发去删除旧的test.md
2.由于开启了回收站,触发将旧的test.md移动到回收站路径
3.回收站的路径/recycle可能有问题,导致移动失败
4. invalid cross device link报错表示出现了跨分区移动文件的情况

@Jason-Fly
Copy link
Contributor

Jason-Fly commented Jan 18, 2025

  • 已经复现了,本地存储的路径和回收站的路径在不同的挂载点上,重复创建aaa.txt文件,会出现一模一样的报错
Image Image
  • 发散来看,其实在不同的挂载点进行移动操作时,实际是用了syscall rename,应该都会出现invalid cross device link
  • 其实alistMove方法中,已经针对这个场景做了处理,即先CopyRemove
Image
  • 但本次问题发生在Remove中,没有针对这个场景做处理:
Image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants