故障排除

本主题提供了排查 Snowflake Native SDK for Connectors 问题的指南。如果您想找出特定错误的原因,需要适当的工具来简化故障排除过程。为此,Snowflake Native SDK for Connectors 提供了一些过程、视图和其他方法来有效地排除连接器故障。

过程响应

通常,当连接器出现问题时,或者当用户由于连接器的状态而无法成功执行特定过程时,故障排除数据的第一个来源应该是过程响应。在 Snowflake Native SDK for Connectors 中,过程的错误响应是标准化的。响应以 VARIANT 形式返回,有两个字段始终存在:

  • response_code – 如果发生错误响应,则此字段的值是错误代码,例如 INVALID_CONNECTOR_STATUS

  • message – 此字段的值是一条消息,提供有关所发生错误的更多信息

错误响应的结构:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

数据库对象

Snowflake Native SDK for Connectors 提供了一些有助于检查连接器实际状态的视图和过程。

视图:

过程:

事件表

默认情况下,由 SDK 提供的过程(这些过程是用 Java 实施的)使用 ConnectorErrorHelper 来封装在特定过程执行期间抛出的异常。除了封装抛出的异常,并连同错误代码一起将其映射到 ConnectorResponseConnectorErrorHelper 的默认实施还会根据抛出的异常,将事件记录到事件表中(如果客户的账户中已设置该表)。如果您想了解有关使用事件表的更多信息,请参阅 Snowflake 官方文档

有可能仅通过应用程序实例名称从事件表中过滤掉由 Snowflake Native SDK for Connectors 生成的日志。此外,还可能过滤掉在连接器最常见部分出现的错误日志。

示例查询:

SELECT * FROM PLATFORM_CI_TOOLS.PUBLIC.EVENTS
    WHERE RESOURCE_ATTRIBUTES:"snow.database.name" LIKE '<INSTANCE_NAME>'
    [AND SCOPE:"name" LIKE '<ERROR_CODE>']
    [ORDER BY timestamp DESC];
Copy

可能的错误代码:

  • CONFIGURE_CONNECTOR_FAILED – 当配置连接器向导步骤失败时出现

  • SET_CONNECTION_CONFIGURATION_FAILED – 当设置连接配置向导步骤失败时出现

  • FINALIZE_CONNECTOR_CONFIGURATION_FAILED – 当完成连接器配置向导步骤失败时出现

  • PAUSE_CONNECTOR_FAILED – 当暂停连接器进程失败时出现

  • RESUME_CONNECTOR_FAILED – 当恢复连接器进程失败时出现

连接器状态恢复

如果在暂停或恢复进程期间发生未捕获的错误,导致连接器无法回滚进程并意外失败 – 可能会设置 ERROR 连接器状态。此外,如果出于任何原因,这些进程突然终止 – 连接器可能会“陷入”STARTINGPAUSING 连接器状态。

这些问题应使用上述方法进行诊断,并尝试进行适当的修复。在许多情况下,可能需要完全重新安装连接器,但如果维修成功,唯一剩下的问题是“卡住”连接器状态 – 可能有几种可能的解决方案:

  • 如果连接器“卡住”在 STARTING 状态 – 再次调用 PUBLIC.RESUME_CONNECTOR() 过程可能会修复状态问题

  • 如果连接器“卡住”在 PAUSING 状态 – 再次调用 PUBLIC.PAUSE_CONNECTOR() 过程可能会修复状态问题

  • 如果上述方法失败,或连接器处于 ERROR 状态 – PUBLIC.RECOVER_CONNECTOR_STATE(STRING) 过程可用于强制状态更改(请参阅 核心 SQL 参考)。建议强制更改为 PAUSED 状态,并尝试使用 PUBLIC.RESUME_CONNECTOR() 过程重启连接器

语言: 中文