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 como usar a tabela de eventos, consulte a documentação oficial do Snowflake.

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()