Résolution des problèmes

Ce chapitre fournit des lignes directrices pour la résolution des problèmes liés au Snowflake Native SDK for Connectors. Si vous souhaitez découvrir la cause d’une erreur spécifique, vous avez besoin d’outils appropriés qui facilitent le processus de dépannage. C’est pourquoi le Snowflake Native SDK for Connectors propose quelques procédures, vues et autres méthodes pour dépanner efficacement le connecteur.

Réponses de procédure

En général, lorsque quelque chose ne va pas avec le connecteur, ou même lorsque l’utilisateur ne peut pas exécuter la procédure particulière avec succès à cause de l’état du connecteur, la première source de données de dépannage devrait être la réponse à la procédure. Dans Snowflake Native SDK for Connectors, la réponse à l’erreur de la procédure est normalisée. La réponse est renvoyée sous forme de VARIANT avec deux champs, qui sont toujours présents :

  • response_code - la valeur de ce champ, en cas de réponse d’erreur, est un code d’erreur, par exemple INVALID_CONNECTOR_STATUS

  • message - la valeur de ce champ est un message qui fournit plus d’informations sur l’erreur survenue

Structure d’une réponse d’erreur :

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

Objets de base de données

Le Snowflake Native SDK for Connectors fournit quelques vues et procédures qui permettent de vérifier l’état réel du connecteur.

Vues :

Procédures :

Table des événements

Par défaut, les procédures fournies par le SDK qui sont mises en œuvre en Java utilisent ConnectorErrorHelper pour envelopper les exceptions lancées au cours de l’exécution de la procédure en question. Outre l’enveloppement de l’exception levée et son mappage dans ConnectorResponse avec un code d’erreur, l’implémentation par défaut de ConnectorErrorHelper enregistre les événements basés sur les exceptions levées dans la table d’événements si celle-ci est configurée dans le compte du client. Si vous souhaitez en savoir plus sur l’utilisation de la table d’événements, consultez la documentation officielle de Snowflake.

Il est possible de filtrer les journaux générés par Snowflake Native SDK for Connectors à partir de la table d’événements en ne connaissant que le nom de l’instance de l’application. En outre, il est possible de filtrer les journaux d’erreurs qui se sont produites dans les parties les plus courantes du connecteur.

Exemple de requête :

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

Codes d’erreurs possibles :

  • CONFIGURE_CONNECTOR_FAILED - se produit lorsque l’étape de l’assistant de configuration des connecteurs a échoué

  • SET_CONNECTION_CONFIGURATION_FAILED - se produit lorsque l’étape de l’assistant de configuration de la connexion a échoué

  • FINALIZE_CONNECTOR_CONFIGURATION_FAILED - se produit lorsque l’étape de l’assistant de finalisation de la configuration du connecteur a échoué

  • PAUSE_CONNECTOR_FAILED - se produit lorsque le processus de mise en pause du connecteur a échoué

  • RESUME_CONNECTOR_FAILED - se produit lorsque le processus de reprise du connecteur a échoué

Récupération de l’état du connecteur

Si une erreur non corrigée se produit pendant la pause ou la reprise du processus, ce qui fait que le connecteur ne reprend pas le processus et échoue de manière inattendue - un statut de connecteur ERROR peut être défini. De plus, si pour une raison quelconque ces processus s’arrêtent soudainement, le connecteur peut être « bloqué » dans un statut de connecteur STARTING ou PAUSING.

Ces problèmes doivent être diagnostiqués à l’aide des méthodes mentionnées ci-dessus et une réparation appropriée doit être tentée. Dans de nombreux cas, une réinstallation complète du connecteur peut s’avérer nécessaire, mais si la réparation a été effectuée avec succès et que le seul problème restant est l’état « bloqué » du connecteur, il existe quelques solutions possibles :

  • Si le connecteur est « bloqué » dans le statut STARTING, un autre appel à la procédure PUBLIC.RESUME_CONNECTOR() peut corriger le problème de statut

  • Si le connecteur est « bloqué » dans le statut PAUSING, un autre appel à la procédure PUBLIC.PAUSE_CONNECTOR() peut corriger le problème de statut

  • Si les méthodes susmentionnées ont échoué ou si le connecteur est dans le statut ERROR, la procédure PUBLIC.RECOVER_CONNECTOR_STATE(STRING) peut être utilisée pour forcer le changement de statut (voir Référence SQL principale). Il est conseillé de forcer le passage au statut PAUSED et d’essayer de redémarrer le connecteur à l’aide de la procédure PUBLIC.RESUME_CONNECTOR()