Status Codes

在最新版本中引入了状态码这一概念。例如,因为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()

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

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

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