Projet

Général

Profil

Tâche #14184

Distribution EOLE - Scénario #14084: Assistance aux utilisateurs (49-51)

Traceback "unable to load tdb" dans les logs de controle-vnc

Ajouté par Joël Cuissinat il y a plus de 8 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
02/12/2015
Echéance:
% réalisé:

100%

Temps estimé:
2.00 h
Temps passé:
Restant à faire (heures):
0.0

Description

Traceback obtenu sur Scribe "2.5.2" lors de la validation de #14089.

Une partie des instructions a tout de même été appliquée côté client (l'élève a ses montages mais pas son nom sur le fond d'écran).

2015/12/02 15:23:06  [Broker,1,10.1.2.50] Appel de la fonction remote_logon par 10.1.2.50
2015/12/02 15:23:08  [Broker,1,10.1.2.50] Peer will receive following PB traceback:
2015/12/02 15:23:08  [Broker,1,10.1.2.50] Unhandled Error
    Traceback (most recent call last):
      File "/usr/lib/python2.7/dist-packages/twisted/spread/banana.py", line 153, in gotItem
        self.callExpressionReceived(item)
      File "/usr/lib/python2.7/dist-packages/twisted/spread/banana.py", line 116, in callExpressionReceived
        self.expressionReceived(obj)
      File "/usr/lib/python2.7/dist-packages/twisted/spread/pb.py", line 565, in expressionReceived
        method(*sexp[1:])
      File "/usr/lib/python2.7/dist-packages/twisted/spread/pb.py", line 877, in proto_message
        self._recvMessage(self.localObjectForID, requestID, objectID, message, answerRequired, netArgs, netKw)
    --- <exception caught here> ---
      File "/usr/lib/python2.7/dist-packages/twisted/spread/pb.py", line 891, in _recvMessage
        netResult = object.remoteMessageReceived(self, message, netArgs, netKw)
      File "/usr/share/eole/controlevnc/controle_vnc_serveur.py", line 67, in remoteMessageReceived
        return pb.Root.remoteMessageReceived(self, broker, message, args, kw)
      File "/usr/lib/python2.7/dist-packages/twisted/spread/flavors.py", line 114, in remoteMessageReceived
        state = method(*args, **kw)
      File "/usr/share/eole/controlevnc/controle_vnc_serveur.py", line 329, in remote_logon
        return gest_sessions.Logon().logon(self.ip, os_type, self.blocage)
      File "/usr/share/eole/controlevnc/gest_sessions.py", line 34, in logon
        Connexions().get_infos(self.ip, os_type)
      File "/usr/share/eole/controlevnc/connexions.py", line 354, in get_infos
        sessions = self.get_sessions(only=ip)
      File "/usr/share/eole/controlevnc/connexions.py", line 350, in get_sessions
        self.sessions = Session(only)
      File "/usr/share/eole/controlevnc/connexions.py", line 129, in __init__
        raise Exception('unable to load tdb file, may be locked')
    exceptions.Exception: unable to load tdb file, may be locked

main.log Voir - log scribe corse (146 ko) Klaas TJEBBES, 10/12/2015 14:52


Demandes liées

Lié à controle-vnc - Tâche #14455: Supprimer l'appel à "net status session" Fermé 18/12/2015
Lié à Distribution EOLE - Tâche #15745: Backport vers 2.5.1 de "unable to load tdb" #14184 Fermé 20/10/2015

Révisions associées

Révision 49e072c5 (diff)
Ajouté par Klaas TJEBBES il y a plus de 8 ans

remplacement de l'utilisation de TDB par "net status sessions parseable" REF #14184

Révision ff945e76 (diff)
Ajouté par Klaas TJEBBES il y a plus de 8 ans

retour à l'utilisation de TDB mais ouverture permanente REF #14184

Révision 71fc0753 (diff)
Ajouté par Klaas TJEBBES il y a plus de 8 ans

modification de la levée d'exception pour le TDB REF #14184
modification de la gestion du timeout REF #14187

Historique

#1 Mis à jour par Scrum Master il y a plus de 8 ans

  • Assigné à mis à Emmanuel GARETTE

#2 Mis à jour par Emmanuel GARETTE il y a plus de 8 ans

  • Tâche parente mis à #14084

Le fichier tdb est lu à la place de "net status sessions". Normalement il y a une boucle pour limiter les problèmes de lock sur le fichier.

Visiblement cela n'est pas suffisant.

Il faudrait peut etre lancer "net status sessions" dans ce cas.

#3 Mis à jour par Emmanuel GARETTE il y a plus de 8 ans

  • Assigné à Emmanuel GARETTE supprimé

#4 Mis à jour par Klaas TJEBBES il y a plus de 8 ans

Le problème semble se poser régulièrement en production, en corse, sur leur tests 2.5.1 et Windows 10, la plupart des ouvertures de sessions remontent cette erreur.

#5 Mis à jour par Klaas TJEBBES il y a plus de 8 ans

  • Assigné à mis à Klaas TJEBBES

#6 Mis à jour par Emmanuel GARETTE il y a plus de 8 ans

Contrairement à ce qui est écrit, le problème ne vient pas d'un lock, mais du fait que le fichier est déjà ouvert.

Il n'est pas possible d'ouvrir 2 fois le même fichier dans un même processus.

Soit il manque un "close", soit il y a plusieurs demande d'ouverture du même fichier en même temps (ce qui est le plus probable).

#7 Mis à jour par Klaas TJEBBES il y a plus de 8 ans

  • Statut changé de Nouveau à En cours

#8 Mis à jour par Klaas TJEBBES il y a plus de 8 ans

  • Statut changé de En cours à Résolu

#9 Mis à jour par Gérald Schwartzmann il y a plus de 8 ans

Rien dans le logs

root@scribe:~# tail -f /var/log/controle-vnc/main.log 
2015/12/22 12:09:04  [-] twistd 13.2.0 (/usr/bin/python 2.7.6) starting up.
2015/12/22 12:09:04  [-] reactor class: twisted.internet.epollreactor.EPollReactor.
2015/12/22 12:09:04  [-] Site starting on 8790
2015/12/22 12:09:04  [-] Starting factory <twisted.web.server.Site instance at 0x7fad3a635b00>
2015/12/22 12:09:04  [-] PBServerFactory starting on 8789
2015/12/22 12:09:04  [-] Starting factory <twisted.spread.pb.PBServerFactory instance at 0x7fad3a635cf8>
2015/12/22 12:09:04  [-] Site starting on 8788
2015/12/22 12:09:04  [-] Starting factory <twisted.web.server.Site instance at 0x7fad3a5e9e18>
2015/12/22 12:09:04  [-] Site starting on 8792
2015/12/22 12:09:04  [-] Starting factory <twisted.web.server.Site instance at 0x7fad3a5ef1b8>

Version du paquet controle-vnc-server : 2.5.2-8

root@scribe:~# locate cliscribe.py
/usr/share/eole/controlevnc/cliscribe.py
root@scribe:~# dpkg -S /usr/share/eole/controlevnc/cliscribe.py
controle-vnc-server: /usr/share/eole/controlevnc/cliscribe.py
root@scribe:~# apt-cache policy controle-vnc-server
controle-vnc-server:
  Installé : 2.5.2-8
  Candidat : 2.5.2-8
 Table de version :
 *** 2.5.2-8 0
        500 http://test-eole.ac-dijon.fr/eole/ eole-2.5-unstable/main amd64 Packages
        100 /var/lib/dpkg/status
root@scribe:~#

cliscribe.py contient bien la première modification :

#        self.timeout_delay = tmout
        # gestion du timeout
#        self.setmytimeout(tmout)

mais pas la deuxième :

    def logon(self, ret=None, logon_dict=None):
        # appel de la remote_fonction
        self.test_port()

connexions.py contient bien les différentes modifications :

class Session:
    def __init__(self, only=None):
        """lit le contenu de sessionid.tdb
        only: get session information only for one IP
        """ 
        cnt = 0
        max_cnt = 10
        for cnt in range(max_cnt):
            try:
                self._init_sessions(only)
                break
            except:
                TDB_HANDLER.reopen()
                if cnt == max_cnt-1:
                    # pour voir ce qui plante
                    self._init_sessions(only)
                time.sleep(0.2)


    def _init_sessions(self, only):
        self.sessions = []
        sessions = {}
        for key in TDB_HANDLER.iterkeys():
            #key must endswith \x00
            data = TDB_HANDLER.get(key)
            if data is None:
                continue

            #(tid, ) = struct.unpack("<L", data[4:8])
            tret = []

#10 Mis à jour par Gérald Schwartzmann il y a plus de 8 ans

  • Temps estimé mis à 0.00 h
  • Restant à faire (heures) mis à 0.0

#11 Mis à jour par Gérald Schwartzmann il y a plus de 8 ans

  • Statut changé de Résolu à En cours

#12 Mis à jour par Gérald Schwartzmann il y a plus de 8 ans

  • Statut changé de En cours à Fermé
  • % réalisé changé de 0 à 100
 def logon(self, ret=None, logon_dict=None):
        # appel de la remote_fonction
        self.test_port()

self.test_port() doit bien être décommenté, juste que le dernier commit n'a pas de ref donc pas visible sur la forge.

#13 Mis à jour par Joël Cuissinat il y a plus de 8 ans

  • Temps estimé changé de 0.00 h à 2.00 h

Formats disponibles : Atom PDF