Solução de problemas

Este tópico fornece diretrizes para a solução de problemas com o Snowflake Native SDK for Connectors. Se você quiser descobrir a causa de um erro específico, precisará de ferramentas apropriadas que facilitem o processo de solução de problemas. Por essa razão o Snowflake Native SDK for Connectors fornece alguns procedimentos, exibições e outros métodos para solucionar problemas do conector de forma eficaz.

Respostas de procedimento

Normalmente, quando algo errado acontece com o conector, ou mesmo quando o usuário não consegue executar o procedimento específico com sucesso devido ao estado do conector, a primeira fonte de dados de solução de problemas deve ser a resposta do procedimento. No Snowflake Native SDK for Connectors, a resposta de erro do procedimento é padronizada. A resposta é retornada como um VARIANT com dois campos, que estão sempre presentes:

  • response_code - o valor deste campo, em caso de resposta de erro, é um código de erro, por exemplo INVALID_CONNECTOR_STATUS

  • message - o valor deste campo é uma mensagem que fornece mais informações sobre o erro ocorrido

Estrutura de uma resposta de erro:

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

Objetos de banco de dados

O Snowflake Native SDK for Connectors fornece algumas exibições e procedimentos que ajudam a verificar o estado real do conector.

Exibições:

Procedimentos:

Tabela de eventos

Por padrão, os procedimentos fornecidos pelo SDK que são implementados em Java usam ConnectorErrorHelper para encapsular exceções lançadas durante a execução de um procedimento específico. Além de encapsular a exceção lançada e mapeá-la para ConnectorResponse com um código de erro, a implementação padrão de ConnectorErrorHelper registra eventos com base nas exceções geradas na Tabela de Eventos, se ela estiver configurada na conta do cliente. Se você quiser saber mais sobre o uso da Tabela de eventos, consulte Registro, rastreamento e métricas.

Existe a possibilidade de filtrar os logs gerados pelo Snowflake Native SDK for Connectors da tabela de eventos conhecendo apenas o nome da instância do aplicativo. Além disso, também existe a possibilidade de filtrar logs de erros que ocorreram nas partes mais comuns do conector.

Consulta de exemplo:

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

Possíveis códigos de erro:

  • CONFIGURE_CONNECTOR_FAILED - ocorre quando a etapa de configuração do conector do assistente falhou

  • SET_CONNECTION_CONFIGURATION_FAILED - ocorre quando a etapa de definição de configuração da conexão do assistente falhou

  • FINALIZE_CONNECTOR_CONFIGURATION_FAILED - ocorre quando a etapa de finalização de configuração do conector do assistente falhou

  • PAUSE_CONNECTOR_FAILED - ocorre quando o processo de pausa do conector falhou

  • RESUME_CONNECTOR_FAILED - ocorre quando o processo de retomada do conector falhou

Recuperação do estado do conector

Se ocorrer um erro não detectado durante a pausa ou a retomada do processo, o que faz com que o conector não reverta o processo e falhe inesperadamente, um status do conector ERROR poderá ser definido. Além disso, se por algum motivo esses processos forem encerrados repentinamente, o conector poderá ficar «preso» em um status de conector STARTING ou PAUSING.

Esses problemas devem ser diagnosticados usando os métodos mencionados acima e deve-se tentar fazer um reparo adequado. Em muitos casos, pode ser necessária uma reinstalação completa do conector, mas se o reparo foi bem-sucedido e o único problema restante é o status do conector «preso», há algumas soluções possíveis:

  • Se o conector estiver «preso» no status STARTING, outra chamada do procedimento PUBLIC.RESUME_CONNECTOR() poderá corrigir o problema de status

  • Se o conector estiver «preso» no status PAUSING, outra chamada do procedimento PUBLIC.PAUSE_CONNECTOR() poderá corrigir o problema de status

  • Se os métodos mencionados anteriormente falharem, ou se o conector estiver no status ERROR, o procedimento PUBLIC.RECOVER_CONNECTOR_STATE(STRING) poderá ser usado para forçar a mudança de status (consulte Referência de SQL essencial). É recomendável forçar a alteração para o status PAUSED e tentar reiniciar o conector usando o procedimento PUBLIC.RESUME_CONNECTOR()