附录3:状态码

从0.10版本开始IoTDB引入了状态码这一概念。例如,因为IoTDB需要在写入数据之前首先注册时间序列,一种可能的解决方案是:

1. try {
2. writeData();
3. } catch (SQLException e) {
4. // the most case is that the time series does not exist
5. if (e.getMessage().contains("exist")) {
6. //However, using the content of the error message is not so efficient
7. registerTimeSeries();
8. //write data once again
9. writeData();
10. }
11. }

利用状态码,我们就可以不必写诸如if (e.getErrorMessage().contains("exist"))的代码,只需要使用e.getStatusType().getCode() == TSStatusCode.TIME_SERIES_NOT_EXIST_ERROR.getStatusCode()。

这里是状态码和相对应信息的列表:

状态码 状态类型 状态信息
200 SUCCESS_STATUS
201 STILL_EXECUTING_STATUS
202 INVALID_HANDLE_STATUS
203 INCOMPATIBLE_VERSION 版本不兼容
298 NODE_DELETE_FAILED_ERROR 删除节点失败
299 ALIAS_ALREADY_EXIST_ERROR 路径别名已经存在
300 PATH_ALREADY_EXIST_ERROR 路径已经存在
301 PATH_NOT_EXIST_ERROR 路径不存在
302 UNSUPPORTED_FETCH_METADATA_OPERATION_ERROR 不支持的获取元数据操作
303 METADATA_ERROR 处理元数据错误
305 OUT_OF_TTL_ERROR 插入时间少于TTL时间边界
306 CONFIG_ADJUSTER IoTDB系统负载过大
307 MERGE_ERROR 合并错误
308 SYSTEM_CHECK_ERROR 系统检查错误
309 SYNC_DEVICE_OWNER_CONFLICT_ERROR 回传设备冲突错误
310 SYNC_CONNECTION_EXCEPTION 回传连接错误
311 STORAGE_GROUP_PROCESSOR_ERROR 存储组处理器相关错误
312 STORAGE_GROUP_ERROR 存储组相关错误
313 STORAGE_ENGINE_ERROR 存储引擎相关错误
314 TSFILE_PROCESSOR_ERROR TsFile处理器相关错误
315 PATH_ILLEGAL 路径不合法
316 LOAD_FILE_ERROR 加载文件错误
317 STORAGE_GROUP_NOT_READY 存储组还在恢复中,还不能接受读写操作
400 EXECUTE_STATEMENT_ERROR 执行语句错误
401 SQL_PARSE_ERROR SQL语句分析错误
402 GENERATE_TIME_ZONE_ERROR 生成时区错误
403 SET_TIME_ZONE_ERROR 设置时区错误
404 NOT_STORAGE_GROUP_ERROR 操作对象不是存储组
405 QUERY_NOT_ALLOWED 查询语句不允许
406 AST_FORMAT_ERROR AST格式相关错误
407 LOGICAL_OPERATOR_ERROR 逻辑符相关错误
408 LOGICAL_OPTIMIZE_ERROR 逻辑优化相关错误
409 UNSUPPORTED_FILL_TYPE_ERROR 不支持的填充类型
410 PATH_ERROR 路径相关错误
411 QUERY_PROCESS_ERROR 查询处理相关错误
412 WRITE_PROCESS_ERROR 写入相关错误
413 WRITE_PROCESS_REJECT 写入拒绝错误
414 QUERY_ID_NOT_EXIST Query id 不存在
500 INTERNAL_SERVER_ERROR 服务器内部错误
501 CLOSE_OPERATION_ERROR 关闭操作错误
502 READ_ONLY_SYSTEM_ERROR 系统只读
503 DISK_SPACE_INSUFFICIENT_ERROR 磁盘空间不足
504 START_UP_ERROR 启动错误
505 SHUT_DOWN_ERROR 关机错误
506 MULTIPLE_ERROR 多行语句执行错误
600 WRONG_LOGIN_PASSWORD_ERROR 用户名或密码错误
601 NOT_LOGIN_ERROR 没有登录
602 NO_PERMISSION_ERROR 没有操作权限
603 UNINITIALIZED_AUTH_ERROR 授权人未初始化
700 PARTITION_NOT_READY 分区表未准备好
701 TIME_OUT 操作超时
702 NO_LEADER Leader找不到
703 UNSUPPORTED_OPERATION 不支持的操作
704 NODE_READ_ONLY 节点只读
705 CONSISTENCY_FAILURE 一致性检查失败
706 NO_CONNECTION 连接获取失败
707 NEED_REDIRECTION 需要重定向

在最新版本中,我们重构了IoTDB的异常类。通过将错误信息统一提取到异常类中,并为所有异常添加不同的错误代码,从而当捕获到异常并引发更高级别的异常时,错误代码将保留并传递,以便用户了解详细的错误原因。 除此之外,我们添加了一个基础异常类“ProcessException”,由所有异常扩展。