2017-10-18 5 views
1

Dans Service Fabric Cluster, j'ai un service sans état qui a une boucle while (true) exécutée en continu dans la méthode RunAsync. Pour cette raison, je trouve qu'il est difficile de supprimer l'application du cluster. Une erreur se produit chaque fois que j'essaye de supprimer indiquant ne peut pas détacher le processus. Normalement, j'essaye de déployer l'application une fois pour enlever le code. Pour redéployer le code au-dessus de l'application, je dois déployer deux fois. Y at-il un travail autour de cela sans enlever l'infini tout en boucle.Erreur lors de la suppression du service sans état dans Service Fabric Cluster

Mise à jour: Runasync Méthode

protected override async Task RunAsync(CancellationToken cancellationToken) 
    { 
     //making sure the thread is active 
     while (true) 
     { 
      do something; 
     } 

    } 

Merci pour l'entrée.

+0

Pouvez-vous ajouter votre méthode RunAsync ici pour une meilleure compréhension? –

+0

J'ai ajouté la méthode Runasync. – user3530857

Répondre

2

Lors de l'arrêt, le jeton d'annulation transmis à RunAsync est annulé. Vous devez vérifier la propriété IsCancellationRequested du jeton d'annulation dans votre boucle principale. Lorsque ceci devient vrai, et s'il est appelé, la méthode ThrowIfCancellationRequested du jeton lève une exception OperationCanceledException.

Si votre service ne répond pas à ces appels API dans un délai raisonnable, Service Fabric peut mettre fin à votre service de force. Habituellement, cela se produit uniquement lors des mises à niveau d'applications ou lors de la suppression d'un service. Ce délai est de 15 minutes par défaut.

Voir ce document pour une bonne référence: https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-services-lifecycle#stateless-service-shutdown