Contrôle d'un AE distant en cours d'exécution

La capacité AE fournit une fonction de table SQL, nzaejobcontrol, qui contrôle l'exécution des AE distants. La syntaxe est la suivante (avec les arguments décrits dans le tableau suivant) :

nzaejobcontrol <operation><dataslice for locus><connection point string
name><remote_name>{TRUE | FALSE}{NULL | 0 | <transaction ID>}{NULL | 0 | <session
ID>}
Tableau 1. Description des arguments de nzaejobcontrol
Argument Descriptif
Opération à effectuer Les opérations comprennent l'envoi d'une requête à un AE distant, l'arrêt d'un AE distant, le renvoi d'informations sur le processus Linux concernant un AE distant et l'envoi de signaux à un AE distant. Il existe des commandes permettant d'opérer sur un point de connexion AE distant spécifique et sur un sous-ensemble de points de connexion, y compris tous les points de connexion.
Base de données/locus de l'EA distante (SPU ou hôte) Cet argument est spécifié à l'aide d'un entier littéral zéro (0) pour l'hôte ou d'un ensemble d'entiers non littéraux d'ID de blocs de données pour l'unité SPU. L'ensemble des ID de dataslice provient de la vue système _v_dual_dslice (ou quelque chose d'équivalent).
Partie du nom de la chaîne de caractères de l'adresse du point de connexion Pour une commande de point de connexion unique, ce nom doit être spécifié. Pour une commande de points de connexion multiples, il peut s'agir de NULL ou de '' (chaîne vide), auquel cas il spécifie tous les noms.
Booléen (ID de la tranche de données) TRUE signifie qu'il faut utiliser l'ID de la tranche de données dans l'adresse du point de connexion ; FALSE signifie qu'il ne faut pas l'utiliser. Pour les commandes de points de connexion multiples, cet argument doit être FALSE.
Bigint (ID de la transaction) NULL signifie ne pas utiliser l'ID de la transaction. 0 signifie que l'on utilise la fonction d'ID de transaction actuelle dans laquelle la fonction de table nzaejobcontrol a été appelée ; une valeur supérieure à 0 signifie que l'on utilise l'ID de transaction spécifié.
Bigint (ID de la session) NULL signifie ne pas utiliser l'identifiant de session. 0 signifie que l'on utilise l'ID de la session en cours dans laquelle la fonction de table nzaejobcontrol a été appelée ; une valeur supérieure à 0 signifie que l'on utilise l'ID de la session spécifiée.

Commandes du point de connexion unique

Les commandes à point de connexion unique opèrent sur un seul point de connexion, qui peut consister en plusieurs processus sur plusieurs machines. Il s'agit des noms de commandes qui peuvent être utilisés dans l'argument d'opération de nzaejobcontrol .

  • ping : envoieun court message à un point de connexion pour déterminer s'il est actif et s'il répond. Il renvoie des données pour toutes les colonnes de sortie énumérées ci-dessous. (Voir Tableau Fonction Colonnes de sortie.)
  • ps - Renvoie desinformations sur le processus concernant un AE distant qui écoute sur un point de connexion. Cette commande peut être exécutée même si l'AE ne répond pas sur le point de connexion. Il renvoie des données pour toutes les colonnes de sortie qui ne nécessitent pas de communication directe avec l'AE distant.
  • stop - Arrête l'écoute d'un AE distant sur un point de connexion. Si le processus AE distant ne répond pas au message, il reçoit un signal SIGKILL.
  • status : renvoie desinformations sur l'état d'un AE distant qui écoute sur un point de connexion. En créant une routine de rappel de message AE à distance, une application AE à distance peut renvoyer son propre message personnalisé et son propre code de retour. Certaines commandes de signaux Linux peuvent être envoyées à des AE distants. Le signal envoyé est indiqué dans le champ d'opération des commandes de la fonction de table nzaejobcontrol sighup, sigint, sigkill, sigusr1, sigusr2, sigterm, sigcont et sigstop.
  • clean (nettoyer) : supprime lesfichiers de synchronisation temporaires laissés sur les SPU. Cette commande est utilisée après la fin de la commande d'arrêt. L'espace disque nécessaire est généralement insignifiant, sauf lorsque de nombreux noms de points de connexion différents sont créés à l'aide de l'identifiant de session et de l'identifiant de transaction.

Commandes de points de connexion multiples

Les commandes de point de connexion unique agissent sur un seul point de connexion, qui peut être utilisé par plusieurs processus sur les SPU. A l'exception de la commande clean, toutes les commandes de la fonction table nzaejobcontrol ont une version correspondante du point de connexion multiple.

Pour ces commandes, les arguments des points de connexion de la fonction de table nzaejobcontrol agissent comme un filtre de sélection. Par exemple, si le nom distant est spécifié comme NULL ou '' (chaîne vide), la commande opère sur les points de connexion avec tous les noms. Il est donc possible d'envoyer une commande à tous les AE distants ou à un ensemble d'AE distants, par exemple à tous les AE distants utilisant un point de connexion créé avec un identifiant de session particulier.

Ces commandes comprennent 'pingall, stopall, psall, statusall, sighupall, sigintall, sigkillall, sigusr1all, sigusr2all, sigtermall, sigcontall, sigstopall. Ces commandes fonctionnent de manière similaire à la version à point de connexion unique, mais pour plusieurs AE.

Tableau Fonction Colonnes de sortie

Lors de l'utilisation de la fonction nzaejobcontrol dans la base de données INZA directement en SQL, la colonne sélectionnée doit être aeresult. la fonction peut également être utilisée par un programme GUI utilisant SQL ; par conséquent, les informations sont également renvoyées dans des colonnes individuelles. Toutes les commandes ne définissent pas toutes les colonnes de retour. La fonction de table nzaejobcontrol renvoie zéro à plusieurs lignes.

Tableau 2. Colonnes retournées par nzaejobcontrol
Colonne Descriptif
résultat final Message d'état
aerc Code de retour pour la commande : 0 = succès, -1 = erreur, +1 = arrêt non réussi mais signal de mise à mort ultérieur réussi
aetotal Nombre total de lignes renvoyées pour la commande, répétées dans chaque ligne
nom Nom du point de connexion
tranche d'aeds Point de connexion ID de la tranche de données
aesession Point de connexion ID de session
aetrans Point de connexion ID de transaction
nom d'hôte Nom de l'hôte sur lequel le processus AE s'exécute
aepid ID du processus Linux de l'AE distant
aecommand Ligne de commande AE
aetid ID du thread Linux sur lequel le point de connexion est écouté
aebuild Numéro de construction de l'AE à distance
aenzrepver La version de nzrep utilisée par l'AE distant
aenzrepver Si VRAI, le numéro de construction de l'AE ou la version nzrep de l'AE distante ne correspond pas au kit système actuel de la SNP, sinon FAUX.

Exemples d'hôtes

Les exemples suivants illustrent le fonctionnement des commandes individuelles sur l'hôte. (Ils supposent qu'un AE appelé my_remote_ae existe et peut être appelé)

  • Ping d'un AE distant n'utilisant pas le dataslice ID dans le point de connexion :
    SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('ping', 0,
         'my_remote_ae', false, NULL, NULL));
    
  • Effectuer un sondage auprès d'un AE distant en utilisant l'ID de la tranche de données dans le point de connexion :
    SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('ping', 0, 
         'my_remote_ae', true, NULL, NULL));
  • Effectuer une recherche ping de tous les AE distants :
    SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, 
         NULL, false, NULL, NULL));
    
  • Effectuer un sondage Ping de tous les AE distants avec un point de connexion utilisant l'ID de session = 1000 :
    SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, 
         NULL, false, NULL, 1000));
    

Exemples de SPU

Les exemples suivants illustrent le fonctionnement des commandes individuelles sur une SPU. (Ils supposent qu'un AE appelé my_remote_ae existe et peut être appelé)

  • Effectuer un sondage auprès d'un AE distant qui possède une instance par SPU :
    SELECT aeresult FROM _v_dual_dslice, TABLE WITH 
         final(inza..nzaejobcontrol('ping', dsid, 'my_remote_ae', false, NULL,
    NULL));
  • Effectuer un sondage auprès d'une AE distante qui possède une instance par tranche de données :
    SELECT aeresult FROM _v_dual_dslice, TABLE WITH 
         final(inza..nzaejobcontrol('ping', dsid, 'my_remote_ae', true, NULL, NULL));
  • Effectuer une recherche ping de tous les AE distants :
    SELECT aeresult FROM _v_dual_dslice, TABLE WITH 
         final(inza..nzaejobcontrol('pingall', dsid, NULL, false, NULL, NULL));
    
  • Effectuer un sondage Ping de tous les AE distants avec un point de connexion utilisant l'ID de session = 1000 :
    SELECT aeresult FROM _v_dual_dslice, TABLE WITH 
         final(inza..nzaejobcontrol('pingall', dsid, NULL, false, NULL, 1000));

Exemples de colonnes simples sur l'hôte avec sortie

L'illustration suivante montre les résultats de la colonne variée de ping de tous les AE distants sur l'hôte :

SELECT aeresult FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL, 
 false, NULL, NULL));

AERESULT
-----------------------------------------------------------------------------
netezzahost 24872 (datamatrix dataslc:-1 sess:-1 trans:-1) thread: 24873 AE
Build: 10 nzrep version: 9
netezzahost 30264 (testcapi dataslc:-1 sess:-1 trans:-1) thread: 30264 AE Build:
10 nzrep version: 9

SELECT aerc FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL, false,
NULL, NULL));

AERC
------
0
0

SELECT aetotal FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AETOTAL
---------
2
2

SELECT aename FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AENAME
------------
datamatrix
testcapi

SELECT aedslice FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AEDSLICE
----------
-1
-1

SELECT aesession FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AESESSION
-----------
-1
-1

SELECT aetrans FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AETRANS
---------
-1
-1

SELECT aehostname FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AEHOSTNAME
--------------
netezzahost
netezzahost

SELECT aepid FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AEPID
-------
24872
30264

SELECT aecommand FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AECOMMAND
----------------------------------------------------------
/nz/export/ae/languages/java/6.13.0/jdk1.6.0_13/bin/java
/nz/export/ae/aebin/host/testcapi

SELECT aetid FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AETID
-------
24873
30264

SELECT aebuild FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AEBUILD
---------
10
10

SELECT aenzrepver FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0, NULL,
false, NULL, NULL));

AENZREPVER
------------
9
9

SELECT aevermismatch FROM TABLE WITH FINAL(inza..nzaejobcontrol('pingall', 0,
NULL, false, NULL, NULL));

AEVERMISMATCH
---------------
f
f