vidjil issueshttps://gitlab.inria.fr/vidjil/vidjil/-/issues2020-12-03T19:35:04+01:00https://gitlab.inria.fr/vidjil/vidjil/-/issues/4596processes: un process apparaît autant de fois qu'il est dans un sample set2020-12-03T19:35:04+01:00Mikaël Salsonprocesses: un process apparaît autant de fois qu'il est dans un sample setSur la page processes.
C'est pratique parce que ça permet d'aller dans le sample set qu'on souhaite ensuite, mais cela rajoute quand même du bruit (ou alors mettre les divers sample sets sur la même ligne ?)Sur la page processes.
C'est pratique parce que ça permet d'aller dans le sample set qu'on souhaite ensuite, mais cela rajoute quand même du bruit (ou alors mettre les divers sample sets sur la même ligne ?)https://gitlab.inria.fr/vidjil/vidjil/-/issues/4500Vue QC : accéder au sample2022-07-26T09:44:22+02:00Mikaël SalsonVue QC : accéder au sampleLorsqu'on est sur la vue QC, on aimerait ensuite passer à la vue du patient en question.Lorsqu'on est sur la vue QC, on aimerait ensuite passer à la vue du patient en question.https://gitlab.inria.fr/vidjil/vidjil/-/issues/4497Date de naissance qui ne passe pas bien avec la création en masse de patients...2020-10-21T08:26:04+02:00Mikaël SalsonDate de naissance qui ne passe pas bien avec la création en masse de patients depuis EthercalcJ'ai fait une démo avec Framacalc et la date de naissance est transformée en un entier ce qui n'est, du coup, pas accepté.
https://lite.framacalc.org/9j8a-q87yj1pvao
Si ce n'est qu'avec Framacalc ce n'est pas dramatique, mais je crains...J'ai fait une démo avec Framacalc et la date de naissance est transformée en un entier ce qui n'est, du coup, pas accepté.
https://lite.framacalc.org/9j8a-q87yj1pvao
Si ce n'est qu'avec Framacalc ce n'est pas dramatique, mais je crains que ce soit lorsque le tableur reconnaît qu'il s'agit d'une date et la transforme ensuite.marc duezmarc duezhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/4442Avoir accès au md5sum des fichiers du serveur2020-07-30T19:32:14+02:00Thonier FlorianAvoir accès au md5sum des fichiers du serveurJ'ai uploadé des données sur le serveur, et il semble qu'il y ai une erreur dans les noms des fichiers et dans les attributions aux patients.
Pour corriger, j'aimerai avoir les md5sum des fichiers (ou autre) pour permettre de vérifier ...J'ai uploadé des données sur le serveur, et il semble qu'il y ai une erreur dans les noms des fichiers et dans les attributions aux patients.
Pour corriger, j'aimerai avoir les md5sum des fichiers (ou autre) pour permettre de vérifier que les données que j'ai renommées au sample XX du patient YY corresponde bien à ce que j'ai en local.
On n'a pas l'information en base ? Sinon il faudrait soit icône sur la page base de données pour l'afficher comme une alerte, soit un tooltip (#4421 :smiling_imp: ).https://gitlab.inria.fr/vidjil/vidjil/-/issues/3752Utiliser une version fixe de Web2py2019-02-27T23:01:10+01:00Mikaël SalsonUtiliser une version fixe de Web2pyNous utilisons, à la fois pour nos tests et pour nos serveurs de prod, les dernières versions des **sources** de Web2py disponibles (pas les dernières releases). Rien ne garantit donc le bon fonctionnement de ces packages comme l'illustr...Nous utilisons, à la fois pour nos tests et pour nos serveurs de prod, les dernières versions des **sources** de Web2py disponibles (pas les dernières releases). Rien ne garantit donc le bon fonctionnement de ces packages comme l'illustre #3751.
Ne devrait-on pas plutôt fixer la version de Web2py utilisée ?https://gitlab.inria.fr/vidjil/vidjil/-/issues/3554bouton dans l'interface pour relancer le swheduler web2py2021-03-05T15:51:00+01:00Thonier Florianbouton dans l'interface pour relancer le swheduler web2pyUne petite question dont je ne suis pas certain de la pertinence: serait-il envisageable de rajouter un bouton pour relancer automatiquement la commande qui relance le scheduler ?
Techniquement, je présume que ce n'est pas si compliqué...Une petite question dont je ne suis pas certain de la pertinence: serait-il envisageable de rajouter un bouton pour relancer automatiquement la commande qui relance le scheduler ?
Techniquement, je présume que ce n'est pas si compliqué que ça. Cependant, ça risque de pérenniser un problème dont on ne connaît toujours pas l'origine (il me semble).
@magiraud @mikael\-s @RyanHerbhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/3436Statistiques : tester, mettre en production pour tous2018-10-02T18:33:52+02:00Mathieu GiraudStatistiques : tester, mettre en production pour tousSuite à #2235.
Voir aussi #3171.Suite à #2235.
Voir aussi #3171.https://gitlab.inria.fr/vidjil/vidjil/-/issues/3401Liste de tests fonctionnels server2021-01-26T16:51:05+01:00Ryan HerbertListe de tests fonctionnels serverIci on fait une liste des tests fonctionnels server:
* Utilisateur
- [x] Login
- [ ] Logout (mais #2571 #2477)
- [ ] Changer le mot de passe (mais #1682)
* Patients
- [x] Ajout (multiple)
- [x] Edition
- [x] Suppression
...Ici on fait une liste des tests fonctionnels server:
* Utilisateur
- [x] Login
- [ ] Logout (mais #2571 #2477)
- [ ] Changer le mot de passe (mais #1682)
* Patients
- [x] Ajout (multiple)
- [x] Edition
- [x] Suppression
- [x] Recherche
* Samples
- [x] Ajout (multiple)
- [x] Upload (normal, déjà inclus dans précédent ?) (et #4628)
- [x] Upload (réseau)
- [x] Edition
- [ ] Edition: ajouter le sample à un set supplémentaire
- [ ] Reupload
- [x] Suppression avec results
- [ ] Suppression sans results (n'existent pas)
- [ ] Suppression sans results (mais results existent)
- [x] Recherche
- [ ] Ajout sets multiples
- [x] Run (et #4628)
- [ ] Runs concurrents, certains sont provisoirement en `QUEUED` #3447
- [ ] Pre-process
- [ ] Relancer pre-process échoué
* Autcompletion
- [ ] tags
- [ ] samples
* Tags
- [x] Recherche par click (patient ou sample)
- [x] Recherche patient
- [x] Recherche sample
* Permissions
- [ ] Accès groupe public
- [ ] Accès groupe personnel
- [ ] Accès groupe hierarchie
- [ ] Pas d'accès à un groupe dont on n'est pas membre
- [ ] Permissions diverses (admin, upload, create, run)
* Groupes
- [ ] Ajout
- [ ] Edition
- [ ] Suppression
- [ ] Invitation utilisateur
- [ ] Exclusion utilisateur
- [ ] Modification permissions
* Configs
- [ ] Ajout
- [ ] Edition
- [ ] Suppression
* Tips
- [ ] Fermer
- [ ] Suivant
- [ ] Précédent
- [ ] lu
* Notifications
- [ ] Ajout
- [ ] Edition
- [ ] Suppression
- [ ] Expiration
- [ ] lu
* logs
- [ ] tester tous les cas de figure ?
* Utilisateurs
- [ ] Ajout
- [ ] Edition
- [ ] Suppression
* Consultation d'une analyse préalablement lancée
- [ ] Affichage correct
- [ ] Vérification des informations affichées dans la fenêtre d'info globale (éviter #3416)
- [ ] Sauvegarder une analyse (éviter vdj#792)
* Pre process
- [x] Ajout
- [x] Edition
- [x] Suppression
* Compare
- [ ] Liste
- [ ] Comparehttps://gitlab.inria.fr/vidjil/vidjil/-/issues/2475Réduire le nombre de requêtes pour la requête Sample_Set2024-02-06T11:57:18+01:00Ryan HerbertRéduire le nombre de requêtes pour la requête Sample_SetDans la même veine que #2439 il serait bien de réduire la charge de la BDD, et d'essayer de rendre l'application plus rapide.
Voici ce qu'il se passe du point de vue de la BDD pour une requête de 4 patients (découpée en plusieurs blocks...Dans la même veine que #2439 il serait bien de réduire la charge de la BDD, et d'essayer de rendre l'application plus rapide.
Voici ce qu'il se passe du point de vue de la BDD pour une requête de 4 patients (découpée en plusieurs blocks à mesure que j'identifie les requêtes) :
``` SQL
SELECT 1
SET FOREIGN_KEY_CHECKS=1
SET sql_mode='NO_BACKSLASH_ESCAPES'
SELECT auth_membership.id, auth_membership.user_id, auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 2)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 3)
commit
```
Ces requêtes sont de `self.has_permission()` dans `vidjil_accessible_query()`. Le but étant de vérifier si l'utilisateur a les accès "admin" pour cette table et cette action:
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
```
Je suis admin, donc on renvoi tous les patients:
``` SQL
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id > 0) ORDER BY patient.id DESC LIMIT 51 OFFSET 0
```
Ici c'est un appel à `load_permissions()`, qui fait appel à `vidjil_accessible_query()` deux fois (pour charger tous les patients/runs/sets en mémoire et stocker la permission):
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT patient.id FROM patient WHERE (patient.id > 0)
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'admin') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT patient.id FROM patient WHERE (patient.id > 0)
```
Encore un appel à `load_permissions()` cette fois-ci pour les permissions anon. On n'est pas "admin" car les admins doivent voir les vrais noms de leurs patients :) :
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT patient.id FROM patient WHERE (patient.id > 0)
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'anon') AND (auth_permission.table_name = 'patient')) AND (auth_permission.record_id = 0))
SELECT auth_membership.group_id FROM auth_permission, auth_membership WHERE ((((auth_membership.user_id = 1) AND (auth_membership.group_id = auth_permission.group_id)) AND (auth_permission.record_id = 0)) AND (auth_permission.name = 'anon'))
SELECT patient.id FROM patient WHERE ((patient.id IN (SELECT auth_permission.record_id FROM auth_permission, auth_membership WHERE (((((auth_membership.user_id = 1) AND (auth_membership.group_id IN (1))) AND (auth_membership.group_id = auth_permission.group_id)) AND (auth_permission.name = 'access')) AND (auth_permission.table_name = 'patient')))) OR (patient.id IN (SELECT auth_permission.record_id FROM auth_permission, group_assoc, auth_membership WHERE ((((((auth_membership.user_id = 1) AND (auth_membership.group_id IN (1))) AND (auth_membership.group_id = group_assoc.second_group_id)) AND (group_assoc.first_group_id = auth_permission.group_id)) AND (auth_permission.name = 'access')) AND (auth_permission.table_name = 'patient')))))
```
Ici on a des vérifications d'existence effectuées dans les fonctions `can_view_info()`:
``` SQL
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 11) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 10) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 9) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 8) LIMIT 1 OFFSET 0
```
Ces requêtes sont relativement raisonnables. Récupèrent les noms des créateurs et les tailles des sample sets:
``` SQL
SELECT patient.id, auth_user.last_name FROM auth_user, patient WHERE ((patient.creator = auth_user.id) AND (patient.id IN (8,9,10,11)))
SELECT patient.id, sequence_file.size_file FROM sample_set_membership, patient, sequence_file WHERE (((sample_set_membership.sample_set_id = patient.sample_set_id) AND (sequence_file.id = sample_set_membership.sequence_file_id)) AND (patient.id IN (8,9,10,11)))
```
`load_config_information` contient deux `vidjil_accessible_query`:
``` SQL
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'read') AND (auth_permission.table_name = 'config')) AND (auth_permission.record_id = 0))
SELECT auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_permission.group_id FROM auth_permission WHERE (((auth_permission.name = 'admin') AND (auth_permission.table_name = 'config')) AND (auth_permission.record_id = 0))
SELECT patient.id, config.name, config.id, fused_file.fused_file FROM patient, config, fused_file WHERE ((((patient.sample_set_id = fused_file.sample_set_id) AND (fused_file.config_id = config.id)) AND ((config.id >
0) OR (config.id > 0))) AND (patient.id IN (8,9,10,11)))
```
`load_permitted_groups()`:
``` SQL
SELECT patient.id, auth_group.role FROM auth_group, auth_permission, patient WHERE ((((((patient.id = auth_permission.record_id) OR (auth_permission.record_id = 0)) AND (auth_permission.table_name = 'patient')) AND (auth_permission.name = 'access')) AND (auth_group.id = auth_permission.group_id)) AND (patient.id IN (8,9,10,11)))
```
`load_anon_permissions()`... On n'avait pas fait ça plus haut ??? :
``` SQL
SELECT patient.id FROM auth_group, auth_permission, patient, auth_membership WHERE (((((((auth_permission.name = 'anon') AND (auth_permission.table_name = 'patient')) AND (patient.id = auth_permission.record_id)) AND (auth_group.id = auth_permission.group_id)) AND (auth_membership.user_id = 1)) AND (auth_membership.group_id = auth_group.id)) AND (patient.id IN (8,9,10,11)))
```
On charge tous les utilisateurs ? Pas trouvé dans le code... :
``` SQL
SELECT auth_user.id, auth_user.first_name, auth_user.last_name, auth_user.email, auth_user.password, auth_user.registration_key, auth_user.reset_password_key, auth_user.registration_id FROM auth_user WHERE (auth_user.id > 1)
```
Encore des vérifications d'existence... Pas trouvé l'endroit dans le code:
``` SQL
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 11) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 10) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 9) LIMIT 1 OFFSET 0
SELECT patient.id, patient.first_name, patient.last_name, patient.birth, patient.info, patient.id_label, patient.creator, patient.sample_set_id FROM patient WHERE (patient.id = 8) LIMIT 1 OFFSET 0
```
Vérifie si l'utilisateur a le droit de créer des patients/runs/sets :
``` SQL
SELECT auth_membership.group_id FROM auth_permission, auth_membership WHERE ((((auth_membership.user_id = 1) AND (auth_membership.group_id = auth_permission.group_id)) AND (auth_permission.record_id = 0)) AND (auth_permission.name = 'create'))
commit
```
A identifier:
``` SQL
SELECT 1
SET FOREIGN_KEY_CHECKS=1
SET sql_mode='NO_BACKSLASH_ESCAPES'
SELECT auth_membership.id, auth_membership.user_id, auth_membership.group_id FROM auth_membership WHERE (auth_membership.user_id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 1)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 2)
SELECT auth_group.id, auth_group.role, auth_group.description FROM auth_group WHERE (auth_group.id = 3)
commit
```Ryan HerbertRyan Herberthttps://gitlab.inria.fr/vidjil/vidjil/-/issues/2405Streamer directement les fichiers de résultats qu'on propose de télécharger2017-05-12T14:57:59+02:00Mikaël SalsonStreamer directement les fichiers de résultats qu'on propose de téléchargerDepuis #2141 on peut récupérer les fichiers de résultats produits par les logiciels.
Voici le bout de code qui se charge de l'envoyer à l'utilisateur :
```python
with open(filepath) as f:
file_content = f.rea...Depuis #2141 on peut récupérer les fichiers de résultats produits par les logiciels.
Voici le bout de code qui se charge de l'envoyer à l'utilisateur :
```python
with open(filepath) as f:
file_content = f.read()
return response.stream(StringIO.StringIO(file_content), attachment = True, filename = request.vars['filename'])
```
On stocke donc la totalité du fichier dans une variable `file_content`. Or les fichiers de sortie peuvent être assez gros (plusieurs centaines de Mo, on doit pouvoir en trouver de quelques Go). Il vaudrait mieux directement les streamer, sans avoir à les stocker dans une variable, pour éviter d'utiliser de la mémoire (potentiellement beaucoup).Web 2017.05Ryan HerbertRyan Herberthttps://gitlab.inria.fr/vidjil/vidjil/-/issues/1780Pouvoir chercher dans la liste des utilisateurs2021-02-09T16:09:48+01:00Vidjil TeamPouvoir chercher dans la liste des utilisateursCe serait utile d'avoir une boîte de recherche sur l'onglet "Users" (comme pour les patients et les logs), sur le nom, le prénom et le mail. On commence à avoir du monde, on pourrait par exemple rechercher "Marc" ou "ucl.ak".
***
@RyanH...Ce serait utile d'avoir une boîte de recherche sur l'onglet "Users" (comme pour les patients et les logs), sur le nom, le prénom et le mail. On commence à avoir du monde, on pourrait par exemple rechercher "Marc" ou "ucl.ak".
***
@RyanHerb @Duezhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/5269Bad redirection after impersonate2024-03-20T17:10:05+01:00THONIER FlorianBad redirection after impersonateIf we are on a admin page and we do an impersonate, we get an empty page from the server.
No problem if we are on a common page (patients, ...).
This is probably due to a missing redirect in this case.If we are on a admin page and we do an impersonate, we get an empty page from the server.
No problem if we are on a common page (patients, ...).
This is probably due to a missing redirect in this case.Web 2024.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/5267Refactor database for scheduler tables2024-03-22T12:17:40+01:00THONIER FlorianRefactor database for scheduler tablesWith py4web, we don't need anymore of shedulers_xxx tables that was very specific of web2py.
We also need to add some step to write pertinent information as start/stop date of running process.With py4web, we don't need anymore of shedulers_xxx tables that was very specific of web2py.
We also need to add some step to write pertinent information as start/stop date of running process.Web 2024.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/5266Delete old fashion distributions computed in reads2024-03-19T12:34:55+01:00THONIER FlorianDelete old fashion distributions computed in readsWe still compute a reads->distributions values.
This values seem to ne never used.
It is made on server side.
Check if really never use and delete in that case.We still compute a reads->distributions values.
This values seem to ne never used.
It is made on server side.
Check if really never use and delete in that case.Web 2024.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/5265MySQL connection error ?2024-03-22T12:19:43+01:00CHESNIN ClementMySQL connection error ?Le 14/03/24, nous avons constaté des erreurs 500 de façon aléatoire sur app.
Dans le dashboard, on a effectivement beaucoup d'erreurs :
![image](/uploads/034859bcb058bb89ae67b53a3f0b2fac/image.png)
On observe deux types d'erreurs :
```
...Le 14/03/24, nous avons constaté des erreurs 500 de façon aléatoire sur app.
Dans le dashboard, on a effectivement beaucoup d'erreurs :
![image](/uploads/034859bcb058bb89ae67b53a3f0b2fac/image.png)
On observe deux types d'erreurs :
```
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 803, in _write_bytes
self._sock.sendall(data)
BrokenPipeError: [Errno 32] Broken pipe
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/py4web/core.py", line 944, in wrapper
ret = func(*func_args, **func_kwargs)
File "/usr/local/lib/python3.8/dist-packages/py4web/core.py", line 929, in wrapper
raise context["exception"]
File "/usr/local/lib/python3.8/dist-packages/py4web/core.py", line 908, in wrapper
context["output"] = func(*args, **kwargs)
File "/usr/share/vidjil/server/py4web/apps/vidjil/modules/vidjil_utils.py", line 73, in wrapper
result = func(*args, **kwargs)
File "/usr/share/vidjil/server/py4web/apps/vidjil/controllers/sample_set.py", line 322, in all
log.info("%s list %s" % (type, search), extra={'user_id': auth.user_id,
File "/usr/lib/python3.8/logging/__init__.py", line 1806, in info
self.log(INFO, msg, *args, **kwargs)
File "/usr/lib/python3.8/logging/__init__.py", line 1844, in log
self.logger.log(level, msg, *args, **kwargs)
File "/usr/lib/python3.8/logging/__init__.py", line 1512, in log
self._log(level, msg, args, **kwargs)
File "/usr/lib/python3.8/logging/__init__.py", line 1589, in _log
self.handle(record)
File "/usr/lib/python3.8/logging/__init__.py", line 1599, in handle
self.callHandlers(record)
File "/usr/lib/python3.8/logging/__init__.py", line 1661, in callHandlers
hdlr.handle(record)
File "/usr/lib/python3.8/logging/__init__.py", line 954, in handle
self.emit(record)
File "/usr/share/vidjil/server/py4web/apps/vidjil/common.py", line 179, in emit
db[self.table].insert(
File "/usr/local/lib/python3.8/dist-packages/pydal/objects.py", line 892, in insert
ret = self._db._adapter.insert(self, row.op_values())
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/base.py", line 546, in insert
raise e
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/base.py", line 541, in insert
self.execute(query)
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/__init__.py", line 70, in wrap
return f(*args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/base.py", line 468, in execute
rv = self.cursor.execute(command, *args[1:], **kwargs)
File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 153, in execute
result = self._query(query)
File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 322, in _query
conn.query(q)
File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 557, in query
self._execute_command(COMMAND.COM_QUERY, sql)
File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 861, in _execute_command
self._write_bytes(packet)
File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 806, in _write_bytes
raise err.OperationalError(
pymysql.err.OperationalError: (2006, "MySQL server has gone away (BrokenPipeError(32, 'Broken pipe'))")
```
et
```
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/py4web/core.py", line 944, in wrapper
ret = func(*func_args, **func_kwargs)
File "/usr/local/lib/python3.8/dist-packages/py4web/core.py", line 929, in wrapper
raise context["exception"]
File "/usr/local/lib/python3.8/dist-packages/py4web/core.py", line 908, in wrapper
context["output"] = func(*args, **kwargs)
File "/usr/share/vidjil/server/py4web/apps/vidjil/modules/vidjil_utils.py", line 73, in wrapper
result = func(*args, **kwargs)
File "/usr/share/vidjil/server/py4web/apps/vidjil/controllers/sample_set.py", line 322, in all
log.info("%s list %s" % (type, search), extra={'user_id': auth.user_id,
File "/usr/lib/python3.8/logging/__init__.py", line 1806, in info
self.log(INFO, msg, *args, **kwargs)
File "/usr/lib/python3.8/logging/__init__.py", line 1844, in log
self.logger.log(level, msg, *args, **kwargs)
File "/usr/lib/python3.8/logging/__init__.py", line 1512, in log
self._log(level, msg, args, **kwargs)
File "/usr/lib/python3.8/logging/__init__.py", line 1589, in _log
self.handle(record)
File "/usr/lib/python3.8/logging/__init__.py", line 1599, in handle
self.callHandlers(record)
File "/usr/lib/python3.8/logging/__init__.py", line 1661, in callHandlers
hdlr.handle(record)
File "/usr/lib/python3.8/logging/__init__.py", line 954, in handle
self.emit(record)
File "/usr/share/vidjil/server/py4web/apps/vidjil/common.py", line 179, in emit
db[self.table].insert(
File "/usr/local/lib/python3.8/dist-packages/pydal/objects.py", line 892, in insert
ret = self._db._adapter.insert(self, row.op_values())
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/base.py", line 546, in insert
raise e
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/base.py", line 541, in insert
self.execute(query)
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/__init__.py", line 70, in wrap
return f(*args, **kwargs)
File "/usr/local/lib/python3.8/dist-packages/pydal/adapters/base.py", line 468, in execute
rv = self.cursor.execute(command, *args[1:], **kwargs)
File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 153, in execute
result = self._query(query)
File "/usr/local/lib/python3.8/dist-packages/pymysql/cursors.py", line 322, in _query
conn.query(q)
File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 557, in query
self._execute_command(COMMAND.COM_QUERY, sql)
File "/usr/local/lib/python3.8/dist-packages/pymysql/connections.py", line 840, in _execute_command
raise err.InterfaceError(0, "")
pymysql.err.InterfaceError: (0, '')
```
sur différentes pages.
En jouant avec app, une page peut faire une erreur 500 et au rechargement ne plus en faire.
L'hypothèse que nous avons faite avec @fthonier serait qu'au moins un thread aurait perdu la connection mysql et ne la redémarre pas. Nous avons donc testé de redémarrer uwsgi, et pour le moment nous n'avons pas reproduit l'erreur.
cf en PJ:
- les logs docker autour du premier souci identifié (issue de la commande ```docker logs -t vidjil_uwsgi --since 2024-03-14T07 --until 2024-03-14T09```)[docker-uwsgi-logs.log](/uploads/6fca1b881a1d36cd389524ffd7fca660/docker-uwsgi-logs.log)
- un extrait des logs debug vidjil autour des mêmes heure[vidjil-debug-extract.log](/uploads/6fbbc091fb5eedffeb95643dadf788c4/vidjil-debug-extract.log)https://gitlab.inria.fr/vidjil/vidjil/-/issues/5262Erreur 500 à l'ouverture d'un run ou d'un set2024-03-05T11:19:06+01:00Anne de SeptenvilleErreur 500 à l'ouverture d'un run ou d'un setBonjour,
J'ai uploadé des fastq via l'API ce matin. (En plusieurs fois car plusieurs projets différents + quelques debug et corrections de mon côté)
Pas de problème lors des premiers imports mais avec le dernier j'ai maintenant un...Bonjour,
J'ai uploadé des fastq via l'API ce matin. (En plusieurs fois car plusieurs projets différents + quelques debug et corrections de mon côté)
Pas de problème lors des premiers imports mais avec le dernier j'ai maintenant une erreur : An error occured (Internal Server Error, code 500) quand je veux ouvrir le run et le set dans lequel sont ces derniers fastq. L'ouverture des résultats via la page patient a l'air ok.Web 2024.04CHESNIN ClementCHESNIN Clementhttps://gitlab.inria.fr/vidjil/vidjil/-/issues/5261Preprocess with vdj filter for large capture files ?2024-03-27T14:00:29+01:00THONIER FlorianPreprocess with vdj filter for large capture files ?We have number of user that load large file with small part of vdj in it. Should we make a preprocess that launch a vidjil-algo filter on it and delete temp data to save disk space and gain fluidity on real analysis ?
We still have iss...We have number of user that load large file with small part of vdj in it. Should we make a preprocess that launch a vidjil-algo filter on it and delete temp data to save disk space and gain fluidity on real analysis ?
We still have issue on upload data to server but it is already the case.Web 2024.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/5260user group don't show name anymore since release 2024.012024-02-23T10:32:02+01:00THONIER Florianuser group don't show name anymore since release 2024.01We don't get anymore name of user in information of a personal group.
Is it a feature or a bug ?We don't get anymore name of user in information of a personal group.
Is it a feature or a bug ?Web 2024.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/5259search field; include creator user ?2024-02-21T14:18:06+01:00THONIER Floriansearch field; include creator user ?A specific case for ~"LIL-Lille" : a patient have the same last name that a user of the team.
The search return all patients created by this users and inside the list the expected patient. Should we ?
A search with both last and firs...A specific case for ~"LIL-Lille" : a patient have the same last name that a user of the team.
The search return all patients created by this users and inside the list the expected patient. Should we ?
A search with both last and first name don't work.
One day, we will probably improve search we capacity to include field for search.
Until this time, what should we do ?Web 2024.04https://gitlab.inria.fr/vidjil/vidjil/-/issues/5256Better configuration files for docker2024-02-14T14:28:30+01:00THONIER FlorianBetter configuration files for dockerWe nned to have default configuration that we can override by other files if available.
This will be better to rebase repository for some server instances.We nned to have default configuration that we can override by other files if available.
This will be better to rebase repository for some server instances.Web 2024.04