Project

General

Profile

Tâche #26672

Scénario #26447: Traitement express MEN (5-7)

Zéphir : timeout trop court sur la vérification des dépôts

Added by Emmanuel GARETTE about 2 years ago. Updated about 2 years ago.

Status:
Fermé
Priority:
Normal
Start date:
02/07/2019
Due date:
% Done:

100%

Estimated time:
1.00 h
Spent time:
Remaining (hours):
0.0

Description

A chaque reconfigure le script check_maj_eole.py est exécuté.

Mais celui-ci termine en timeout si le dépôt n'a pas répondu dans les 5 secds.

Ce délai est trop court pour des serveurs en nouvelle calédonie.

Je support que le 5 seconds est lié au creoleclient. Je propose donc de mettre un timeout de 5 secds seulement pour les requêtes creoleclient et revenir à la valeur par défaut pour les autres appels :

diff --git a/eole/check_maj_eole.py b/eole/check_maj_eole.py
index 540727b..5dec0f8 100755
--- a/eole/check_maj_eole.py
+++ b/eole/check_maj_eole.py
@@ -229,6 +229,7 @@ def purge_old_data(codename):
         os.unlink(f_package)

 if __name__ == '__main__':
+    ori_sockettimeout = socket.getdefaulttimeout()
     socket.setdefaulttimeout(5)
     dico = CreoleClient()
     if "reconfigure" in sys.argv:
@@ -239,7 +240,10 @@ if __name__ == '__main__':
     opener = get_url_opener(dico)
     # test de connexion au serveur de maj
     serveurs_maj_ok = []
-    for serveurs in (dico.get_creole('serveur_maj_clients'), dico.get_creole('serveur_maj_envole', []) or []):
+    maj_client = dico.get_creole('serveur_maj_clients')
+    maj_envole = dico.get_creole('serveur_maj_envole', [])
+    socket.setdefaulttimeout(ori_sockettimeout)
+    for serveurs in maj_client, maj_envole:
         for serv_maj in serveurs:
             if serv_maj not in serveurs_maj_ok:
                 try:

Sinon l'autre solution est de mettre un timeout de 30 secds par défaut eu lieu de 5.


Related issues

Related to Distribution EOLE - Tâche #23844: Étudier le traceback Zéphir/check_maj_eole.py Fermé 05/07/2018

Associated revisions

Revision 08e95198 (diff)
Added by Fabrice Barconnière about 2 years ago

Default socket timeout can be too short to check Eole updates

  • eole/check_maj_eole.py
    • Creole client has its own timeout (5s)
    • Set socket default timeout to 30s after CreoleCleint requests

ref #26672

History

#1 Updated by Joël Cuissinat about 2 years ago

  • Related to Tâche #23844: Étudier le traceback Zéphir/check_maj_eole.py added

#2 Updated by Fabrice Barconnière about 2 years ago

  • Tracker changed from Demande to Tâche
  • Estimated time set to 1.00 h
  • Parent task set to #26447
  • Remaining (hours) set to 1.0

#3 Updated by Fabrice Barconnière about 2 years ago

Et sinon, ce patch ? On positionne un timeout de 30s après les appels de creoleclient :

diff --git a/eole/check_maj_eole.py b/eole/check_maj_eole.py
index 540727b..cbfe770 100755
--- a/eole/check_maj_eole.py
+++ b/eole/check_maj_eole.py
@@ -229,7 +229,6 @@ def purge_old_data(codename):
         os.unlink(f_package)

 if __name__ == '__main__':
-    socket.setdefaulttimeout(5)
     dico = CreoleClient()
     if "reconfigure" in sys.argv:
         mode_reconf = True
@@ -239,7 +238,10 @@ if __name__ == '__main__':
     opener = get_url_opener(dico)
     # test de connexion au serveur de maj
     serveurs_maj_ok = []
-    for serveurs in (dico.get_creole('serveur_maj_clients'), dico.get_creole('serveur_maj_envole', []) or []):
+    maj_client = dico.get_creole('serveur_maj_clients')
+    maj_envole = dico.get_creole('serveur_maj_envole', [])
+    socket.setdefaulttimeout(30)
+    for serveurs in maj_client, maj_envole:
         for serv_maj in serveurs:
             if serv_maj not in serveurs_maj_ok:
                 try:

#4 Updated by Fabrice Barconnière about 2 years ago

  • Status changed from Nouveau to En cours

#5 Updated by Fabrice Barconnière about 2 years ago

  • Assigned To set to Fabrice Barconnière

#6 Updated by Fabrice Barconnière about 2 years ago

  • Status changed from En cours to Résolu
  • % Done changed from 0 to 100
  • Remaining (hours) changed from 1.0 to 0.1

#7 Updated by Joël Cuissinat about 2 years ago

  • Status changed from Résolu to Fermé
  • Remaining (hours) changed from 0.1 to 0.0

Vu 2.7.1.

Also available in: Atom PDF