程序日志:
Jan 27 19:23:58 cspost[28369]: panic: update ScandSource file.DeleteDir: unlinkat /opt/scandata/392066599894386302: interru
pted system call
系统日志 /var/log/message
Jan 27 14:48:39 10- kernel: CIFS VFS: \\\scandata Close interrupted close
Jan 27 20:27:01 10- kernel: CIFS VFS: Send error in read = -4
Jan 27 20:30:36 10- kernel: CIFS VFS: \\\scandata Close interrupted close
Jan 27 20:49:00 10- kernel: CIFS VFS: \\\scandata Close interrupted close
Jan 27 20:55:21 10- kernel: CIFS VFS: Send error in read = -4
可以设置环境变量缓解:
比如在systemd 的 service块内配置:
Environment=GODEBUG=asyncpreemptoff=1
本质是 unix linux syscall 系统调用 kernel的 EINTR error问题。是一个常见问题。
在golang 和cifs samba挂载网络存储时调用场景下触发的。
go官方代码解决:
https://github.com/golang/go/commit/e64675a79fef5924f268425de021372df874010e

在使用Golang处理Samba CIFS文件系统时遇到了'interrupted system call'错误,这与Linux系统调用EINTR问题有关。设置环境变量GODEBUG=asyncpreemptoff=1可以缓解该问题。Go官方和社区针对此问题进行了讨论和部分修复,如Go 1.16引入的补丁。此外,一些开源项目如gocryptfs和rclone也遇到类似问题并提供了临时解决方案。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



