程序日志:
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/e6