Project

General

Profile

Actions

Bug #8243

closed

Requête bloquée dans la table sc_resources_reservation

Added by Emmanuel GRANGE about 5 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Start date:
09/20/2016
Due date:
% Done:

100%

Estimated time:
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.

Actions #1

Updated by David Lesimple about 5 years ago

  • Tracker changed from Bug to Support
  • Status changed from New to 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.

Actions #2

Updated by Emmanuel GRANGE about 5 years ago

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 ?

Actions #3

Updated by David Lesimple about 5 years ago

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.

Actions #4

Updated by Emmanuel GRANGE about 5 years ago

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

Actions #5

Updated by David Lesimple about 5 years ago

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

Actions #6

Updated by Emmanuel GRANGE about 5 years ago

  • Project changed from Resources Manager to 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 ?

Actions #7

Updated by David Lesimple about 5 years ago

oui

Actions #8

Updated by Emmanuel GRANGE about 5 years ago

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.

Actions #9

Updated by David Lesimple about 5 years ago

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.

Actions #10

Updated by David Lesimple about 5 years ago

  • Status changed from Feedback to Closed
  • % Done changed from 0 to 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.

Actions #11

Updated by Emmanuel GRANGE about 5 years ago

  • % Done changed from 100 to 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.

Actions #12

Updated by David Lesimple about 5 years ago

  • Tracker changed from Support to Bug
  • Status changed from Closed to New
  • Target version set to Version 5.15.4
  • Votre base de données set to 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.

Actions #13

Updated by David Lesimple about 5 years ago

  • Status changed from New to Feedback
Actions #14

Updated by Emmanuel GRANGE about 5 years ago

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

Actions #15

Updated by Miguel Moquillon about 5 years ago

  • Status changed from Feedback to In progress...
  • Assignee set to Miguel Moquillon
Actions #16

Updated by Miguel Moquillon about 5 years ago

  • Status changed from In progress... to Resolved
  • % Done changed from 0 to 100
Actions #17

Updated by Miguel Moquillon about 5 years ago

  • Status changed from Resolved to Integration in progress...
Actions #18

Updated by Miguel Moquillon about 5 years ago

  • Status changed from Integration in progress... to V6 pending
Actions #19

Updated by Miguel Moquillon about 5 years ago

  • Status changed from V6 pending to Closed
Actions

Also available in: Atom PDF