Guide du développeur de services de données Sun Cluster pour SE Solaris

Processus de réponse du client au serveur

Une fois l'enregistrement traité, le serveur qui a reçu la demande d'enregistrement envoie le message SC_REPLY sur la connexion TCP ouverte par le client. Le serveur ferme la connexion. Le client doit laisser la connexion TCP ouverte jusqu'à ce que le serveur lui transmette le message SC_REPLY.

Par exemple, le client :

  1. Ouvre une connexion TCP sur le serveur.

  2. Attend que la connexion devienne « inscriptible ».

  3. Envoie un message SC_CALLBACK_REG (contenant un message ADD_CLIENT).

  4. Attend un message SC_REPLY du serveur.

  5. Reçoit un message SC_REPLY du serveur.

  6. Reçoit un message stipulant que le serveur a fermé la connexion (lecture de 0 octet du socket).

  7. Ferme la connexion.

Un peu plus tard, le client :

  1. Ouvre une connexion TCP sur le serveur.

  2. Attend que la connexion devienne « inscriptible ».

  3. Envoie un message SC_CALLBACK_REG (contenant un message REMOVE_CLIENT).

  4. Attend un message SC_REPLY du serveur.

  5. Reçoit un message SC_REPLY du serveur.

  6. Reçoit un message stipulant que le serveur a fermé la connexion (lecture de 0 octet du socket).

  7. Ferme la connexion.

Chaque fois que le serveur reçoit un message SC_CALLBACK_REG d'un client, il envoie, sur la même connexion ouverte, un message SC_REPLY indiquant si l'opération a réussi ou échoué. DTD XML SC_REPLY contient la DTD XML d'un message SC_REPLY, ainsi que les éventuels messages d'erreur que ce message peut contenir.

Contenu d'un message SC_REPLY

Un message SC_REPLY indique si une opération a réussi ou a échoué. Il contient la version du message de protocole CRNP, un code d'état et un message d'état décrivant le code d'état plus en détail. Le tableau suivant présente les valeurs possibles du code d'état :

Code d'état 

Description 

OK

Le message a été traité avec succès. 

RETRY

La connexion du client a été rejetée par le serveur à cause d'une erreur temporaire. Le client doit faire une nouvelle tentative de connexion avec d'autres arguments. 

LOW_RESOURCE

Les ressources du cluster sont faibles, le client peut seulement réessayer ultérieurement. L'administrateur du cluster peut également en augmenter les ressources.  

SYSTEM_ERROR

Un incident grave s'est produit. Contactez l'administrateur du cluster.  

FAIL

Le refus d'une autorisation ou tout autre incident a provoqué l'échec de la connexion. 

MALFORMED

La requête XML est malformée et n'a pas pu être analysée. 

INVALID

La requête XML n'est pas valide, c'est-à-dire qu'elle n'est pas conforme aux spécifications XML.  

VERSION_TOO_HIGH

La version du message est trop élevée pour que le message soit traité avec succès.  

VERSION_TOO_LOW

La version du message est trop basse pour que le message soit traité avec succès.  

Processus de gestion des conditions d'erreur par un client

Dans des conditions normales, un client qui envoie un message SC_CALLBACK_REG reçoit une réponse précisant si l'enregistrement a réussi ou a échoué.

Toutefois, le serveur peut être confronté à une condition d'erreur pendant l'enregistrement, ce qui l'empêche de transmettre un message SC_REPLY au client. L'enregistrement a pu réussir avant l'erreur, échouer ou ne pas avoir été traité.

Étant donné que le serveur doit fonctionner en tant que serveur de basculement ou de haute disponibilité dans le cluster, cette condition d'erreur ne signifie pas que le service est interrompu. De fait, le serveur peut rapidement commencer à envoyer des événements au client nouvellement enregistré.

Pour pallier ces conditions, votre client doit effectuer les opérations suivantes :