Skip to main content

transport endpoint is not connected问题解决

· 2 min read
orange
programmer on jvm platform

在升级执行过程中遇到问题, 升级执行过程会down老的环境并setup新的环境
ymir setup过程中出现transport endpoint is not connected, 该问题导致升级失败

原因

旧环境执行ymir down的时候没有成功detach掉相关挂载

目前detach挂载的行为是在fastone-rclone容器中负责的, 其执行原理是当进程收到sigkill信号(该信号由ymir down触发) 时进行调用fusermount -u /fastone-mnt命令来进行detach, 此detach行为没执行成功目前推测有以下几种可能

  • 超出了ymir down最大容忍时间(ymir down底层调用docker-compose来停止服务默认超时时间是10s)
  • fastone-rclone容器收到sigkill信号并执行detach时由于该devide下的fd被相关进程占用导致无法detach
    (如果在卸载设备或文件系统时, 仍然有进程使用相关文件句柄, 那么卸载操作通常会失败. 这是因为linux 内核会检测到有进程仍然在使用文件句柄, 因此无法卸载设备或文件系统.)

解决方案

  • ymir down的超时时间可配置确保服务能够都正常清理并成功退出
  • fastone-rclone服务detach挂载时需要强制detach, 考虑采用umount -l来实现该功能