Project

General

Profile

Tâche #14184

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

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

Added by Joël Cuissinat over 5 years ago. Updated over 5 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
12/02/2015
Due date:
% Done:

100%

Estimated time:
2.00 h
Spent time:
Remaining (hours):
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 View - log scribe corse (146 KB) Klaas TJEBBES, 12/10/2015 02:52 PM


Related issues

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

Associated revisions

Revision 49e072c5 (diff)
Added by Klaas TJEBBES over 5 years ago

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

Revision ff945e76 (diff)
Added by Klaas TJEBBES over 5 years ago

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

Revision 71fc0753 (diff)
Added by Klaas TJEBBES over 5 years ago

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

History

#1 Updated by Scrum Master over 5 years ago

  • Assigned To set to Emmanuel GARETTE

#2 Updated by Emmanuel GARETTE over 5 years ago

  • Parent task set to #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 Updated by Emmanuel GARETTE over 5 years ago

  • Assigned To deleted (Emmanuel GARETTE)

#4 Updated by Klaas TJEBBES over 5 years ago

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 Updated by Klaas TJEBBES over 5 years ago

  • Assigned To set to Klaas TJEBBES

#6 Updated by Emmanuel GARETTE over 5 years ago

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 Updated by Klaas TJEBBES over 5 years ago

  • Status changed from Nouveau to En cours

#8 Updated by Klaas TJEBBES over 5 years ago

  • Status changed from En cours to Résolu

#9 Updated by Gérald Schwartzmann over 5 years ago

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 Updated by Gérald Schwartzmann over 5 years ago

  • Estimated time set to 0.00 h
  • Remaining (hours) set to 0.0

#11 Updated by Gérald Schwartzmann over 5 years ago

  • Status changed from Résolu to En cours

#12 Updated by Gérald Schwartzmann over 5 years ago

  • Status changed from En cours to Fermé
  • % Done changed from 0 to 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 Updated by Joël Cuissinat over 5 years ago

  • Estimated time changed from 0.00 h to 2.00 h

Also available in: Atom PDF