Dépannage de Snowpark Container Services

Cette rubrique traite des problèmes courants et de la manière dont vous pouvez les résoudre.

Registre d’images

  • Erreur « Demande de consentement non valide » reçue lors de l’accès à un point de terminaison de service public.

    Dans la version actuelle, Snowflake authentifie l’utilisateur actuel en utilisant son rôle par défaut. Cette erreur est probablement due au fait que l’utilisateur utilise l’un des rôles privilégiés, tels que ACCOUNTADMIN, SECURITYADMIN ou ORGADMIN, comme rôle par défaut (voir Blocage de rôles spécifiques pour les empêcher d’utiliser l’intégration). Utilisez la commande ALTER USER pour modifier le rôle par défaut de l’utilisateur et réessayez.

  • Échec de l’authentification docker login.

    N’utilisez pas un nom d’hôte en majuscules dans la commande docker login puis un nom d’hôte en minuscules dans la commande docker push, docker pull. La CLI Docker stocke les identifiants de connexion avec des touches qui tiennent compte de la casse. Problème lié à la CLI Docker.

  • Erreur docker push : aucun hôte dans URL de requête.

    Lorsque vous interagissez avec la CLI Docker, remplacez toujours les traits de soulignement de votre nom de compte dans une URL par des traits d’union. La CLI Docker renverra une erreur si les noms d’hôtes contiennent des traits de soulignement (même si cURL fonctionne). Par exemple, le push Docker suivant spécifie « my_acct » comme nom de compte :

    docker push myorg-my_acct.registry.snowflakecomputing.com/tutorial_db/data_schema/tutorial_repository/service_to_service
    
    Copy

    Docker renvoie cette erreur :

    Get "https:/v2/": http: no Host in request URL.
    

    Vous pouvez également utiliser la commande SHOW IMAGE REPOSITORIES pour obtenir une URL de référentiel valide.

Pool de calcul

  • Le pool de calcul suspendu est bloqué dans l’état STOPPING.

    L’exécution des services empêchera l’arrêt du pool de calcul. Suspendez tous les services actifs restants dans le pool de calcul à l’aide de la commande ALTER COMPUTE POOL :

    ALTER COMPUTE POOL <pool_name> STOP ALL
    
    Copy

Service

  • Un service en cours d’exécution ne répond plus aux requêtes (provenant d’une fonction de service ou d’un point de terminaison public). Le statut du service est passé de « en cours d’exécution » à « en attente ».

    Cela peut indiquer une pénurie de ressources sur les nœuds du pool de calcul. Si vos conteneurs sont gourmands en ressources (CPU/mémoire), vous devez spécifier explicitement les demandes de ressources dans la spécification du service/de la tâche afin d’éviter qu’un trop grand nombre de services/tâches ne soient placés sur un seul nœud.

    Dans la version actuelle, vous ne pouvez spécifier que des demandes de mémoire.

    Par exemple, si un nœud du pool de calcul a 64 GB de RAM, demander plus de 32 GB pour votre service/tâche garantirait qu’une seule tâche ou qu’un seul service peut être exécuté sur un nœud à la fois. Pour plus d’informations sur les capacités de chaque type d’instance, voir CREATE COMPUTE POOL.

  • Si vous soumettez une requête au point de terminaison public du service, n’utilisez pas de guillemets doubles dans l’en-tête d’authentification HTTP.

Fonctions de service

  • Problèmes de dépassement de délai d’expiration de la fonction de service et d’exécution en double.

    Si l’appel d’une fonction de service unique prend plus de 30 secondes, Snowflake retente la fonction et, après quelques tentatives, la fonction échoue avec une erreur de dépassement de délai d’expiration. Vous pouvez obtenir des résultats inattendus si la mise en œuvre de la fonction dans le conteneur n’est pas idempotente. Envisagez d’utiliser une exécution asynchrone en renvoyant un code HTTP différent (202), ce qui permet un délai plus long. Pour plus d’informations, voir Service à distance asynchrone.

  • L’appel d’une fonction de service renvoie une erreur « service introuvable », mais la commande SHOW SERVICES montre que le service existe.

    Vérifiez si le service associé à la fonction de service a été supprimé (DROP SERVICE) et recréé (CREATE SERVICE). Si c’est le cas, vous devez recréer la fonction de service pour la faire pointer vers le nouveau service.