Problèmes avec le script RCP du nœud Tezos pour redémarrer le nœud après échec
1 réponses
- votes
-
- 2019-03-24
Commeje l'ai égalementnoté sur lapage GITHUB de ETOM KNUDSEN ,ilpourrait être qu'ilexiste unbug dans lafonction gettimesimesInastBlock dans la ligne 33.
Étrangement,lemoment oùje redémarremanuellement lenœud,le script CPRincendie égalementet sonjournalindique lemessage d'erreur suivant:
à la recherche d'une avtitivité P2P - attendramax 90 secs Attendre. Le dernierbloc étaitil y a 510 secs) Attendre. Le dernierbloc étaitil y a 515 secs) Traceback (appel leplus récent): Fichier "& lt; string >",ligne 1,in & lt;module > Fichier "/usr/lib/python3.6/json/__init__.py",ligne 299,en charge parse_constant=parse_constant,objet_pairs_hook=objet_pairs_hook,** kw) Fichier "/usr/lib/python3.6/json/__init__.py",ligne 354,dans les charges retour _default_decoder.decode (s) Fichier "/usr/lib/python3.6/json/decoder.py",ligne 339,en décode obj,fin=self.raw_decode (s,idx=_w (s,0) .end ())) Fichier "/usr/lib/python3.6/json/decoder.py",ligne 357,dans Raw_Decode Soulever JsondecodeError ("Attending Value",S,Err.Value) de Aucun json.decoder.jsondecodeError: Valeur attendue: ligne 1 colonne 1 (char 0) Date: dateinvalide '+% s' /USR/LOCAL/BIN/TEZOS-NODE-CPR.SH: 33:/FR/SR/LOCAL/BIN/TROZOS-NODE-CPR.SH: Expression arithmétique: Attenderprimaire: "1553324161-" Réseau ok. Aucune activitép2pet/outrop longue (Secs depuis le dernierbloc. Redémarrage dunœud! `
Il semble donc qu'il y ait unbogue dans la conversion de secondes sur letemps de cordes à utiliser dans Python,empêchant ainsi le script de déterminer l'heure depuis le dernierbloc.
As I also noted on the GitHub page of Etom Knudsen, it could be that there is a bug in the
getTimeSinceLastBlock
function in line 33.Strangely, the moment I manually restart the node, the CPR script also fires and its log shows the following error message:
Looking for p2p avtivity - will wait for max 90 secs Waiting. Last block was 510 secs ago) Waiting. Last block was 515 secs ago) Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python3.6/json/__init__.py", line 299, in load parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) File "/usr/lib/python3.6/json/__init__.py", line 354, in loads return _default_decoder.decode(s) File "/usr/lib/python3.6/json/decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.6/json/decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) date: invalid date '+%s' /usr/local/bin/tezos-node-cpr.sh: 33: /usr/local/bin/tezos-node-cpr.sh: arithmetic expression: expecting primary: "1553324161-" Network OK. No p2p activity and/or too long ( secs since last block. Restarting node!`
So it seems that there is a bug in the conversion of seconds to string time to be used in python, preventing the script to determine the time since the last block.
-
Lorsquej'ypense,ilest logique que le script CPRincendie lorsque lenœudest redémarrémanuellement,cariln'y aura aucune activité P2P lors du démarrage,remplissant un critèrepour le scriptpour redémarrer lenœud.When I think about it, it makes sense that the cpr script fires when the node is restarted manually, as there will be no p2p activity during startup, fulfilling a criterium for the script to restart the node.
- 0
- 2019-03-25
- cryptodad
Je suis confronté à desproblèmes avec lenœud Tezos CPR Script d'ETOM KNUDSEN,qui sert à redémarrer automatiquement lenœud après échec. Le script a unbogue dans lafonctionpour appeler des statistiques réseau à la ligne 35,quej'ai résolues à l'aide de la solution suggéréepar un utilisateur sur github .
Le script appelle les statistiques réseau dunœudpour vérifier sielleest connectée à d'autrespairs:
Si cen'estpas le cas,l'appel renverra quelque chose comme:
Il vérifie également lorsque lenœud a reçu le dernierbloc du réseau,en appelant:
Je soupçonne que ce derniern'ajamaisfonctionné,comme lors de défaillances de réseau,l'appel RPC semble renvoyer une ligne vide,empêchant le script de déterminer lorsque le dernierblocest arrivé. Par défaut,le scriptest configurépour redémarrer lenœud après 180s lorsque aucunblocn'est arrivépendant cettepériode. Cependant,celane lefaitpas,commeindiqué,parexemple,par la ligne suivante:
Je crois depuis la dernièremise àjour denœud (commettre: 366f64f3 ...) Lafonction de statistique réseau échoue également,car lenœud semble recevoiret envoyer des données également lorsqu'iln'est connecté à aucun autrepair. Ceciestindiquépar ce qui suit:
Les deuxproblèmesentraînent le scriptne fonctionnantpas commeprévuet lenœudne redémarrepas automatiquement.
Quelqu'un a-t-il également observé cesproblèmeset a révisé le scripten conséquence? Ou quelqu'un connaît-il un autre script de redémarragepour lenœud Tezos quifonctionnemieux?