Skip to content
Wine93 edited this page Aug 24, 2022 · 4 revisions

CurveAdm 错误码

简介

CurveAdm 错误码是 Curve 团队为了提高用户部署成功率、指导用户解决部署中可能出现的各类问题而设计的全局唯一的跟踪码。

---
Error-Code: 540000
Error-Description: port is already in use
Error-Clue: host=centos7-002, port=8202
How to Solve:
  * Website: https://github.com/opencurve/curveadm/wiki/errno#540000
  * Log: /root/.curveadm/logs/curveadm-2022-08-11_10-52-23.log
  * WeChat: opencurve_bot
字段 说明
Error-Code 全局唯一错误码
Error-Description 错误码描述
Error-Clue 重要的错误线索,对用户排查问题极其重要
How to Solve 该错误码的几种解决方案

错误码分类

错误码是一个 6 位固定长度的数字,每一个错误码由以下 3 部分组成:

  • 主类:主要错误类型
  • 子类:次要错误类型
  • 错误码:具体的错误码序列号

主类

主类 类别说明 通用解决方法
0 初始化相关,如创建 CurveAdm 必要的目录失败 初始化类错误码
1 数据库相关,如 SQLite 数据库初始化失败、执行 SQL 语句失败 数据库类错误码
2 命令行选项相关,如用户输入的命令行选项值为无效值 命令行选项类错误码
3 配置文件相关,如解析配置文件失败、配置文件中的值不符合要求 配置文件类错误码
4 通用逻辑相关,如未找到主机、未找到集群等等 通用逻辑类错误码
5 预检相关,如拓扑文件预检失败、内核预检失败、网络预检失败等 预检类错误码
6 命令执行相关,如执行shell 命令、docker 命令失败 命令执行类错误码
9 未知错误 未知错误码

子类

主类 主类说明 子类 子类说明
0 初始化 0* 初始化 CurveAdm
1 数据库 0* SQLite 数据库初始化失败
1* 执行 SQL 语句失败
2 命令行选项 0* 主机命令相关选项
1* 服务/集群命令相关选项
2* 客户端命令相关选项
3 配置文件 0* 配置文件通用
1* CurveAdm 配置文件相关,即 ~/.curveadm/curveadm.cfg
2* 主机配置文件相关,即 hosts.yaml
3* 集群拓扑文件相关,即 topology.yaml
4* 格式化配置文件相关,即 format.yaml
5* 客户端配置文件相关,即 client.yaml
4 通用逻辑 0* 主机相关逻辑
1* 服务相关逻辑
2* CurveBS 客户端相关逻辑
3* CurveFS 客户端相关逻辑
4* PolarFS 相关逻辑
5* playground 相关逻辑
5 预检 0* 拓扑文件预检项 <topology>
1* SSH 预检项 <ssh>
2* 权限预检项 <permission>
3* 内核预检项 <kernel>
4* 网络预检项 <network>
5* 时间预检项 <date>
6* 服务预检项 <service>
7* 客户端预检项
9* 其他预检项
6 命令执行 0* 命令执行通用
1* SSH 命令执行相关
2* shell 命令执行相关
3* docker 命令执行相关
4* 文件相关
9* 其他
9 其他 * 其他

通用解决方案

初始化类错误码

这类错误只包含 3 个错误码,极少情况下会被报告,一般跟当前中控机的系统环境有关, 用户可根据错误线索和错误码解决方案来排查即可

数据库类错误码

数据库相关错误只会在以下 2 种情况中会被报告:

  • CurveAdm 版本和已存在数据库文件不兼容(如当前 CurveAdm 是 v0.1.0 版本,而数据库文件是 v0.0.27 版本的 CurveAdm 创建的)
  • CurveAdm 代码逻辑出现漏洞

遇到这类错误,如果是已经部署了重要集群的用户,我们建议立马停止手头的操作,并联系 Curve 团队的小伙伴进行排查, 以免污染数据库。而对于其他用户来说,重新安装最新版 CurveAdm 即可

命令行选项类错误码

用户需根据错误线索和错误码解决方案调整命令行选项,确保其有效且正确后重新执行相关命令即可

配置文件类错误码

用户需根据错误线索和错误码解决方案调整相应的配置文件,确保其有效且正确后重新执行相关操作即可

通用逻辑类错误码

这类错误简单明了,用户根据错误线索和错误码解决方案解决即可

预检类错误码

预检是成功部署的必要条件,我们对每一个预检错误码都提供了详细的解决方案, 用户需根据这些解决方案一一排除预检失败项, 确保通过所有预检项

命令执行类错误码

由于命令执行的失败涉及过多的情况,我们在这里就不一一列举了,用户可根据错误线索和查看对应的日志来确定具体的错误,并进行排查。 这类错误大多数跟系统环境相关

未知错误码

这类错误属于错误逃逸,表明错误没有被 CurveAdm 捕获到,用户可提交 issue 或添加微信群报告该错误,来帮助 CurveAdm 变得更好

查看错误码列表

$ curveadm -d
000001 get user home dir failed
000002 create curveadm subdirectory failed
000003 init logger failed
100000 init SQLite database failed
110000 execute SQL failed which get hosts
110001 execute SQL failed which update hosts
111000 execute SQL failed which insert cluster
111001 execute SQL failed which get current cluster
111002 execute SQL failed which get cluster by name
111003 execute SQL failed which get all clusters
...
630007 remove container failed (docker rm CONTAINER)
630008 list containers failed (docker ps)
630009 run a command in container failed (docker exec CONTAINER COMMAND)
630010 copy file from container failed (docker cp CONTAINER:SRC_PATH DEST_PATH)
630011 copy file into container failed (docker cp SRC_PATH CONTAINER:DEST_PATH)
630012 get container low-level information failed (docker inspect ID)
630013 get container logs failed (docker logs ID)
690000 start crontab in container failed
900000 cancel operation
999999 unknown error
---
244 error codes

错误码列表

Clone this wiki locally