Projet

Général

Profil

Actions

Bug #8243

fermé

Requête bloquée dans la table sc_resources_reservation

Ajouté par Emmanuel GRANGE il y a plus de 7 ans. Mis à jour il y a plus de 7 ans.

Statut:
Closed
Priorité:
Normal
Assigné à:
Début:
20/09/2016
Echéance:
% réalisé:

100%

Temps estimé:
Navigateur:
Firefox
Votre version de Silverpeas:
5.15.3
Système d'exploitation:
Linux
Votre base de données:
Toutes
Livraison en TEST:
Livraison en PROD:

Description

Bonjour,

Une requête est régulièrement bloquée dans la table d'activité de Postgres:

 datid |       datname        |  pid  | usesysid | usename  | application_name | client_addr | client_hostname | client_port |         backend_start         |          xact_start           |          query_start          |         state_change          | waiting |        state        |                                                                                                                                                                                                                    query                                                                                                                                                                                                                    
-------+----------------------+-------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+---------+---------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 16387 | SilverpeasProduction |  9770 |    16385 | spuser   |                  | 127.0.0.1   |                 |       49016 | 2016-09-15 10:34:38.052313+02 |                               | 2016-09-15 10:34:38.116701+02 | 2016-09-15 10:34:38.164741+02 | f       | idle                | select \r                                                                                                                                                                                                                                                                                                                                                                                                                                  +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | sc_resources_reservation.id,\r                                                                                                                                                                                                                                                                                                                                                                                                             +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | sc_resources_resource.name AS RESSOURCE, st_user.firstname AS PRENOM,\r                                                                                                                                                                                                                                                                                                                                                                    +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | st_user.lastname AS NOM,\r                                                                                                                                                                                                                                                                                                                                                                                                                 +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | evenement AS OBJET, \r                                                                                                                                                                                                                                                                                                                                                                                                                     +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | TIMESTAMP 'epoch' + (to_number(begindate, '9999999999999')+3600000+3600000) * INTERVAL '0.001 second' AS DATEDEBUT,\r                                                                                                                                                                                                                                                                                                                      +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | TIMESTAMP 'epoch' + (to_number(enddate, '9999999999999')+3600000+3600000) * INTERVAL '0.001 second' AS DATEFIN,\r                                                                                                                                                                                                                                                                                                                          +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | reason AS DESCRIPTION,\r                                                                                                                                                                                                                                                                                                                                                                                                                   +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | place AS LIEU \r                                                                                                                                                                                                                                                                                                                                                                                                                           +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | \r                                                                                                                                                                                                                                                                                                                                                                                                                                         +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | from sc_resources_reservation,\r                                                                                                                                                                                                                                                                                                                                                                                                           +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | st_user,\r                                                                                                                                                                                                                                                                                                                                                                                                                                 +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | sc_resources_resource,\r                                                                                                                                                                                                                                                                                                                                                                                                                   +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | sc_resources_reservedresource\r                                                                                                                                                                                                                                                                                                                                                                                                            +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | where \r                                                                                                                                                                                                                                                                                                                                                                                                                                   +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | \r                                                                                                                                                                                                                                                                                                                                                                                                                                         +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | sc_resources_reservation.instanceid='resourcesManager3137'\r                                                                                                                                                                                                                                                                                                                                                                               +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | and sc_resources_resource.id=sc_resources_reservedresource.resourceid\r                                                                                                                                                                                                                                                                                                                                                                    +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | and sc_resources_reservation.id=sc_resources_reservedresource.reservationid\r                                                                                                                                                                                                                                                                                                                                                              +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | and st_user.id=sc_resources_reservation.userid \r                                                                                                                                                                                                                                                                                                                                                                                          +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | and TIMESTAMP 'epoch' + (to_number(begindate, '9999999999999')+3600000) * INTERVAL '0.001 second' > (CURRENT_TIMESTAMP - interval '2 days')\r                                                                                                                                                                                                                                                                                              +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | \r                                                                                                                                                                                                                                                                                                                                                                                                                                         +
       |                      |       |          |          |                  |             |                 |             |                               |                               |                               |                               |         |                     | ORDER BY DATEDEBUT asc

Elle apparait souvent très peu de temps après un redémarrage du portail, sans doute dès la première consultation d'une ressource, et reste bloquée indéfiniment, jusqu'à ce qu'on ai besoin de redémarrer le portail.

Le portail semble bien fonctionner, même avec cette requête de bloquée, mais elle peut-être la cause de dysfonctionnement déjà ou pas encore déclaré.

Cordialement.

Mis à jour par David Lesimple il y a plus de 7 ans

  • Tracker changé de Bug à Support
  • Statut changé de New à Feedback

Ces requetes ont été saisies dans des applications connecteurJDBC. Je ne pense pas que la requête en question (avec des \r) soient syntaxiquement corrects, en tout cas, cela ne passe pas dans pgAdmin.

Mis à jour par Emmanuel GRANGE il y a plus de 7 ans

Effectivement, il s'agit bien du connecteur JDBC.
Ce connecteur nous permet d'extraire les données pour avoir des statistiques pour les resourcesManager, puisqu'il ne le propose pas en natif (Feature ?)

Mais le connecteur nous donne bien les résultats, bien que la requête reste bloquée.
N'y aurait-il pas un bug plutôt dans le connecteur JDBC ?

Mis à jour par David Lesimple il y a plus de 7 ans

Possible.. je te suggère de modifier toutes les requêtes pour qu'elle se terminent par un ;
et qu'il n'y ait pas de saut de ligne vide.

Mis à jour par Emmanuel GRANGE il y a plus de 7 ans

D'accord.
Est-il possible de le faire sans accéder à l'application (lance automatiquement la requête qui se bloque) ?

Mis à jour par David Lesimple il y a plus de 7 ans

possible oui, mais c'est moins facile. Je conseille de le faire via l'IHM.

Mis à jour par Emmanuel GRANGE il y a plus de 7 ans

  • Projet changé de Resources Manager à JDBC Connector

Sauf que pour chaque application, je vais bloquer une requête.
Puis-je le faire directement sous Postgres, sans redémarrer le portail ?

Mis à jour par David Lesimple il y a plus de 7 ans

oui

Mis à jour par Emmanuel GRANGE il y a plus de 7 ans

J'ai retiré sur le portail de Production et de Test tous les retours chariot des requêtes des connecteurs JDBC, mais même sans cela, les requêtes restent bloqués dans la pile d'exécution de postgresql.
Il semble que le problème soit plus profond que ça.

Mis à jour par David Lesimple il y a plus de 7 ans

La requete est bonne et est bien executée par Postgresql, elle reste là car il semble que le client (l'application connecteurJDBC) ne l'a pas fermée.
Ce n'est pas gênant outre mesure.

Mis à jour par David Lesimple il y a plus de 7 ans

  • Statut changé de Feedback à Closed
  • % réalisé changé de 0 à 100

Après vérification dans le code, je confirme la remarque précédente, elle n'est pas bloquée, la connexion reste ouverte tant que le portail tourne.
C'est le fonctionnement normal.

Mis à jour par Emmanuel GRANGE il y a plus de 7 ans

  • % réalisé changé de 100 à 0

Cela veut dire qu'à chaque fois qu'on accède à cette application, les requêtes vont rester bloquées !
Si plusieurs personnes bloquent plusieurs fois la même requête, on risque une saturation de Postgresql et un plantage du portail (même si j'en conviens, il y a de la marge).

Pour moi, c'est un comportement à risque.
Dans ce cas, je préfère ne plus utiliser cette application.

Mis à jour par David Lesimple il y a plus de 7 ans

  • Tracker changé de Support à Bug
  • Statut changé de Closed à New
  • Version cible mis à Version 5.15.4
  • Votre base de données mis à Toutes

Emmanuel GRANGE a écrit :

Cela veut dire qu'à chaque fois qu'on accède à cette application, les requêtes vont rester bloquées !
Si plusieurs personnes bloquent plusieurs fois la même requête, on risque une saturation de Postgresql et un plantage du portail (même si j'en conviens, il y a de la marge).

Pour moi, c'est un comportement à risque.
Dans ce cas, je préfère ne plus utiliser cette application.

En fait, une connexion BD est ouverte pour chaque utilisateur qui accède à cette application et cette connexion BD reste disponible pour cet utilisateur et tant qu'il est connecté.
Le problème est que si l'utilisateur se reconnecte, une autre connexion BD est ouverte..
On peut donc vite faire monter le nombre de connexions BD réservées pour cette application (surtout si on a plusieurs connecteurJDBC).

Je le passe en bug.
Si tu le souhaites, un hot fix peut être réalisé facilement.

Mis à jour par David Lesimple il y a plus de 7 ans

  • Statut changé de New à Feedback

Mis à jour par Emmanuel GRANGE il y a plus de 7 ans

Super, bonne nouvelle.
Par contre, ce n'est pas très urgent, donc pas besoin d'un hot fix.

Mis à jour par Miguel Moquillon il y a plus de 7 ans

  • Statut changé de Feedback à In progress...
  • Assigné à mis à Miguel Moquillon

Mis à jour par Miguel Moquillon il y a plus de 7 ans

  • Statut changé de In progress... à Resolved
  • % réalisé changé de 0 à 100

Mis à jour par Miguel Moquillon il y a plus de 7 ans

  • Statut changé de Resolved à Integration in progress...

Mis à jour par Miguel Moquillon il y a plus de 7 ans

  • Statut changé de Integration in progress... à V6 pending

Mis à jour par Miguel Moquillon il y a plus de 7 ans

  • Statut changé de V6 pending à Closed
Actions

Formats disponibles : Atom PDF