Cette page explique comment ignorer la configuration du délai avant expiration par défaut et configurer une règle de nouvelle tentative à l'aide des bibliothèques clientes Spanner.
Les bibliothèques clientes utilisent les paramètres de délai d'expiration et de stratégie de nouvelle tentative définis par défaut dans les fichiers de configuration suivants.
- spanner_grpc_service_config.json
- spanner_admin_instance_grpc_service_config.json
- spanner_admin_database_grpc_service_config.json
Dans les fichiers de configuration, le délai avant expiration par défaut pour les opérations qui prennent un peu de temps, telles que CreateSession
, est de 30 secondes. Les opérations plus longues, telles que les requêtes ou les lectures, ont un délai avant expiration par défaut de 3 600 secondes. Nous vous recommandons d'utiliser ces valeurs par défaut. Toutefois, vous pouvez définir un délai avant expiration personnalisé ou une règle de nouvelle tentative dans votre application si nécessaire.
Si vous décidez de modifier le délai avant expiration, définissez-le sur la durée réelle pendant laquelle l'application est configurée pour attendre le résultat.
Ne configurez pas une stratégie de nouvelle tentative plus agressive que celle définie par défaut, car un trop grand nombre de tentatives pourrait surcharger le backend et limiter vos requêtes.
Une stratégie de nouvelle tentative est définie dans chaque extrait et présente les caractéristiques suivantes:
- Un délai d'attente initial, ou de départ, avant de relancer la requête
- Délai maximal.
- Multiplicateur à utiliser avec le temps d'attente précédent pour calculer le prochain temps d'attente, jusqu'à ce que la valeur maximale soit atteinte.
- Ensemble de codes d'erreur pour les nouvelles tentatives d'opérations.
Dans l'exemple suivant, un délai d'expiration de 60 secondes est défini pour l'opération donnée.
Si l'opération dépasse ce délai, elle échoue et génère une erreur DEADLINE_EXCEEDED
.
Si l'opération échoue avec un code d'erreur UNAVAILABLE
, par exemple en cas de problème réseau temporaire, l'opération est relancée. Le client attend 500 ms avant de lancer la première tentative. Si la première tentative échoue, le client attend 1,5 * 500 ms = 750 ms avant de lancer la seconde. Ce délai ne cesse d'augmenter jusqu'à ce que l'opération réussisse ou atteigne le délai maximal de nouvelle tentative de 16 secondes. L'opération échoue avec une erreur DEADLINE_EXCEEDED
si le temps total consacré à la tentative dépasse la valeur du délai d'expiration total de 60 secondes.