[Fusioninventory-devel] Slots apache busy - problème de suppression de lock ?

Matthieu.Marc at ensam.eu Matthieu.Marc at ensam.eu
Mon Jan 18 08:58:13 UTC 2016


Bonjour,

Je vous contacte suite à un problème que je rencontre avec GLPI 0.84.8 et FusionInventory sur mon serveur Apache.

Mon problème ressemble beaucoup à celui-là : http://forum.fusioninventory.org/viewtopic.php?id=2595

Du coup, j'ai recherché le patch et je l'ai appliqué sur mon serveur : https://github.com/fusioninventory/fusioninventory-for-glpi/commit/b4182019cb303d4e02c2b6f33281b7de2cbc5af5

Sauf qu'en lisant le code de la classe incriminée (https://raw.githubusercontent.com/fusioninventory/fusioninventory-for-glpi/master/inc/inventorycomputerinventory.class.php) , je me rend compte qu'il doit y avoir un autre problème.

En effet, la fonction import() est contient les lignes :

      // Clean all DB LOCK if exist more than 10 minutes
      $time = 600;
      $query = "DELETE FROM `glpi_plugin_fusioninventory_dblockinventorynames` "
              . " WHERE `date` <  CURRENT_TIMESTAMP() - ".$time;
      $query = "DELETE FROM `glpi_plugin_fusioninventory_dblockinventories` "
              . " WHERE `date` <  CURRENT_TIMESTAMP() - ".$time;
      $query = "DELETE FROM `glpi_plugin_fusioninventory_dblocksoftwares` "
              . " WHERE `date` <  CURRENT_TIMESTAMP() - ".$time;
      $query = "DELETE FROM `glpi_plugin_fusioninventory_dblocksoftwareversions` "
              . " WHERE `date` <  CURRENT_TIMESTAMP() - ".$time;

      // DB LOCK
      $query = "INSERT INTO `glpi_plugin_fusioninventory_dblockinventorynames`
            SET `value`='".$name."'";
      $CFG_GLPI["use_log_in_files"] = FALSE;
      $start_time = date('U');
      while(!$DB->query($query)) {
         usleep(100000);
                ...

Contexte : il existe dans ma table glpi_plugin_fusioninventory_dblockinventorynames plusieurs entrées. Vraisemblablement, des locks qui n'ont pu être supprimés suite à un redémarrage du serveur apache, tuant des processus en cours qui avaient créé les locks, mais qui du coup n'ont pas pu les supprimer.
Du coup, en lisant le code, je me dis qu'il doit bien y avoir quelque chose pour supprimer ces entrées (vieilles car datant d'au moins 1 mois).  Dans le code que j'ai retranscrit plus haut, il y a bien les query de suppression, mais elles ne sont pas exécutées. D'où le problème que je pense qu'il y a.

Ne manque-t-il pas des $DB->query($query) après chaque ligne $query = DELETE ..... ?

Le patch cache ce problème en libérant la connexion plus rapidement, mais le lock reste et la machine ne sera jamais mise à jour en base.


Qu'en pensez-vous ?

Cordialement,


Matthieu MARC

----------------------------------------------------------
Matthieu MARC
Ingénieur informatique
Direction des Systèmes d'Information

[Description : cid:8D30A827-01D1-4BAD-8638-C748210F90D9]
Ecole Nationale Supérieure d'Arts et Métiers
2 boulevard du ronceray 49035 ANGERS
http://www.ensam.eu<http://www.ensam.eu/>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/fusioninventory-devel/attachments/20160118/a068bc92/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 15880 bytes
Desc: image001.png
URL: <http://lists.alioth.debian.org/pipermail/fusioninventory-devel/attachments/20160118/a068bc92/attachment-0001.png>


More information about the Fusioninventory-devel mailing list