Résolution des problèmes liés aux applications StreamInsight résistantes

Cette rubrique explique comment dépanner les applications StreamInsight résistantes. Elle décrit en effet la configuration requise pour les requêtes résistantes et certains échecs et erreurs classiques qui peuvent se produire.

La résistance est disponible uniquement dans l'édition Premium de StreamInsight. Pour plus d'informations, voir Choix d'une édition StreamInsight.

Dans cette rubrique

  • Conditions requises d'une requête résistante

  • Erreurs lors de la création et de la configuration d'un serveur résistant

  • Erreurs lors de la définition d'une requête résistante

  • Erreur lors de l'enregistrement de point de contrôle

  • Erreurs lors de la récupération suite à une erreur

  • Erreurs lors du stockage des métadonnées et des journaux sur un partage réseau

Conditions requises d'une requête résistante

Une requête configurée pour la réalisation des points de contrôle doit respecter les critères suivants :

  • Elle doit comporter un adaptateur de sortie. Cela signifie qu'elle ne peut pas exposer uniquement un flux de données publié.

  • Elle ne peut pas consommer un flux de données publié.

  • Elle ne peut pas utiliser les entrées IObservable ou IEnumerable.

  • Elle ne peut pas utiliser les flux ayant été synchronisés à l'aide de AdvanceTimeImportSettings pour copier les événements CTI à partir d'un autre flux. Cette utilisation est détaillée dans la rubrique Avancer le temps d'application.

[HAUT]

Erreurs lors de la création et de la configuration d'un serveur résistant

L'appel à la méthode Server.Create génère une exception dans les conditions suivantes :

  • La configuration de résistance est fournie au moyen de la méthode Server.Create ou du fichier app.config, mais le fournisseur de métadonnées SQL Server Compact n'est pas indiqué.

  • Le chemin d'accès du journal désigné pour la résistance n'existe pas et le serveur n'est pas configuré pour le créer.

  • Le serveur est configuré pour créer le chemin d'accès du journal, mais cette création n'a pas lieu ou échoue.

  • Le serveur ne dispose pas de privilèges suffisants de lecture et d'écriture dans le chemin de journal indiqué.

  • Le serveur est configuré pour la résistance, mais l'édition de StreamInsight ne prend pas en charge la résistance. Seule l'édition Premium prend en charge la résistance. Pour plus d'informations sur les éditions de StreamInsight, voir Choix d'une édition StreamInsight.

[HAUT]

Erreurs lors de la définition d'une requête résistante

L'appel permettant de créer une requête résistante via la méthode CepStream.ToQuery ou Application.CreateQuery génère une exception dans les conditions suivantes :

  • Le serveur n'est pas configuré pour la résistance, c'est-à-dire qu'il n'a pas reçu de configuration de résistance et que le fournisseur de métadonnées SQL Server Compact na pas été indiqué.

  • La requête consomme les événements de la source IEnumerable ou IObservable.

  • La requête consomme des événements d'un flux de données publié.

  • La requête utilise des flux synchronisés.

  • La requête écrit uniquement dans un flux de données publié.

[HAUT]

Erreur lors de l'enregistrement de point de contrôle

L'appel permettant d'enregistrer un point de contrôle échoue et la méthode EndCheckpoint génère une exception dans les conditions suivantes :

  • Le serveur n'est pas configuré pour être résistant.

  • La requête n'est pas configurée pour être résistante.

  • La requête n'est pas en cours d'exécution.

  • Un point de contrôle est déjà en cours. Dans ce cas, le premier point de contrôle réussit. Tous les points de contrôle suivants qui se chevauchent échouent.

  • La méthode EndCheckpoint est appelée avec une propriété IAsyncResult qui ne correspond pas à une opération de point de contrôle active.

  • La méthode EndCheckpoint est appelée avec une propriété IAsyncResult qui correspond à un point de contrôle pour lequel cette méthode a déjà été appelée.

En cas d'erreur d'E/S au cours de la réalisation d'un point de contrôle, toutes les opérations de point de contrôle en cours sont interrompues et leurs opérations EndCheckpoint génèrent une exception. Vous pouvez toutefois tenter d'autres opérations de point de contrôle, puisque cette erreur d'E/S peut être temporaire.

[HAUT]

Erreurs lors de la récupération suite à une erreur

Si une erreur d'E/S se produit lors de la lecture d'un fichier de points de contrôle, toutes les requêtes qui dépendent de ce fichier sont suspendues, et la cause de l'erreur est consignée avec la requête. Les requêtes sont suspendues mais pas abandonnées afin de préserver les métadonnées de la requête, puisque l'erreur d'E/S peut être temporaire.

En cas d'échec de récupération de la requête, il est impossible de relancer la récupération. Vous pouvez tenter la procédure suivante :

  • Si l'erreur s'avère temporaire, arrêtez le serveur, puis redémarrez-le pour tenter une récupération.

  • Si l'erreur est permanente, vous pouvez arrêter la requête.

Si la récupération de la requête échoue en raison d'une exception dans un opérateur ou un adaptateur, la requête est abandonnée.

Si la tentative de récupération de la requête entraîne un échec du serveur, vous pouvez alors suivre la procédure ci-dessous :

  1. Redémarrez le serveur sans résistance.

  2. Arrêtez la requête qui entraîne l'échec du serveur.

  3. Redémarrez à nouveau le serveur avec résistance.

[HAUT]

Erreurs lors du stockage des métadonnées et des journaux sur un partage réseau

Lorsque le journal des points de contrôle est stocké sur un partage réseau, les erreurs d'E/S temporaires ne sont pas fatales pour la réalisation des points de contrôle.

Lorsque la base de données SQL Server Compact des métadonnées est stockée sur un partage réseau, toute erreur d'E/S est fatale et entraîne l'échec du serveur StreamInsight.

[HAUT]

Voir aussi

Concepts

Résistance de StreamInsight

Création d'applications StreamInsight résistantes

Contrôle des applications StreamInsight résistantes