故障排除¶
本主题提供了排查 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>" }
数据库对象¶
Snowflake Native SDK for Connectors 提供了一些有助于检查连接器实际状态的视图和过程。
视图:
过程:
事件表¶
默认情况下,由 SDK 提供的过程(这些过程是用 Java 实施的)使用 ConnectorErrorHelper
来封装在特定过程执行期间抛出的异常。除了封装抛出的异常,并连同错误代码一起将其映射到 ConnectorResponse
,ConnectorErrorHelper
的默认实施还会根据抛出的异常,将事件记录到事件表中(如果客户的账户中已设置该表)。如果您想了解有关使用事件表的更多信息,请参阅 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];
可能的错误代码:
CONFIGURE_CONNECTOR_FAILED
– 当配置连接器向导步骤失败时出现SET_CONNECTION_CONFIGURATION_FAILED
– 当设置连接配置向导步骤失败时出现FINALIZE_CONNECTOR_CONFIGURATION_FAILED
– 当完成连接器配置向导步骤失败时出现PAUSE_CONNECTOR_FAILED
– 当暂停连接器进程失败时出现RESUME_CONNECTOR_FAILED
– 当恢复连接器进程失败时出现
连接器状态恢复¶
如果在暂停或恢复进程期间发生未捕获的错误,导致连接器无法回滚进程并意外失败 – 可能会设置 ERROR
连接器状态。此外,如果出于任何原因,这些进程突然终止 – 连接器可能会“陷入”STARTING
或 PAUSING
连接器状态。
这些问题应使用上述方法进行诊断,并尝试进行适当的修复。在许多情况下,可能需要完全重新安装连接器,但如果维修成功,唯一剩下的问题是“卡住”连接器状态 – 可能有几种可能的解决方案:
如果连接器“卡住”在
STARTING
状态 – 再次调用PUBLIC.RESUME_CONNECTOR()
过程可能会修复状态问题如果连接器“卡住”在
PAUSING
状态 – 再次调用PUBLIC.PAUSE_CONNECTOR()
过程可能会修复状态问题如果上述方法失败,或连接器处于
ERROR
状态 –PUBLIC.RECOVER_CONNECTOR_STATE(STRING)
过程可用于强制状态更改(请参阅 核心 SQL 参考)。建议强制更改为PAUSED
状态,并尝试使用PUBLIC.RESUME_CONNECTOR()
过程重启连接器