Bonjour à tous,
Je rencontre un problème étrange avec une installation fraîche de Discourse et j’apprécierais tout conseil.
Environnement
- Discourse Docker (dernière version stable)
- Ubuntu 24.04
- Installation fraîche via
discourse_docker - Aucun plugin sauf OpenID Connect
- Dépôt Git propre
- Reverse proxy avec nginx
- HTTP uniquement (pas encore de HTTPS)
- Le dépôt Git local existe et est sur la branche
latest
Le comportement étrange
Utilisateurs anonymes :
La page d’accueil se charge normalement
Utilisateurs authentifiés normaux :
Fonctionnent normalement
Utilisateurs authentifiés via OpenID Connect :
Fonctionnent normalement
Mais chaque utilisateur admin local de Discourse subit un dépassement de délai (timeout) et finit par voir :
Oups
Le logiciel alimentant ce forum de discussion a rencontré un problème inattendu.
ou parfois
Le serveur connaît actuellement une charge élevée.
Ce que nous avons testé
Nous avons créé un nouvel admin local en utilisant
rake admin:create
Résultat :
- l’utilisateur en tant qu’Admin →
timeout 500 - le même utilisateur après avoir modifié
u.admin = false
u.save!
→
fonctionne immédiatement
Le problème est donc reproductible uniquement lorsque admin == true.
Journal (Log)
Le worker dépasse toujours son délai après environ 30 secondes.
Traceback :
GitUtils.try_git
GitUtils.has_commit?
DiscourseUpdates.new_features
DiscourseUpdates.has_unseen_features?
CurrentUserSerializer
ApplicationLayoutPreloader
Le timeout se produit toujours ici :
/var/www/discourse/lib/git_utils.rb:33
Kernel#`
Observation importante
L’exécution de Git manuellement à l’intérieur du conteneur est instantanée.
Par exemple :
git rev-parse HEAD
renvoie un résultat en environ 7 ms.
Aussi :
git merge-base --is-ancestor <current_commit> HEAD
renvoie immédiatement.
Donc Git lui-même n’est pas lent.
Redis
new_features ne semble pas exister :
redis-cli exists new_features latest_new_feature_created_at
(integer) 0
Question
Pourquoi GitUtils.has_commit? bloquerait-il uniquement pour les utilisateurs admin alors que chaque commande Git s’exécute instantanément depuis le shell ?
Y a-t-il un problème connu dans les versions récentes de Discourse où DiscourseUpdates ou new_features provoquerait des timeouts réservés aux admins ?
Toute idée sur la suite des investigations serait grandement appréciée.
Merci !