sleede/fab-manager

Problème d'accès aux espaces après montée en version

Closed this issue · 10 comments

Bonjour,

Depuis la montée en version : plus possible d'éditer l'un des deux espaces créés, on ouvre le même espace, que l'on clique sur l'un ou l'autre.

Merci d'avance.

Salut,
Je n'arrives pas à reproduire ce problème. Est-ce que tu peux indiquer les URL qui posent problème ?

Bonjour Sylvain,
Voici l'url de notre Fabmanager : https://intranet.mips-lab.net/
Dans "Réserver un espace", lorsqu'on clique sur "Atelier", on se retrouve dans "Salle de formation"...
Guillaume

Voilà qui est très étrange : vos deux espaces semblent avoir le même identifiant textuel (ce qu'on appelle un "slug") : ils s'appellent tous les deux "atelier"... Avez-vous modifié manuellement la base de données ?

Pour avoir confirmation, est-ce que tu pourrais exécuter la commande suivante :

docker-compose exec fabmanager bundle exec rails runner "puts Space.all.map(&:slug); STDOUT.flush"

Autre question : quelle était votre version précédente et quelle est votre version actuelle ?

Pour les aspects techniques, mes compétences sont hélas fort limitées : l'homme de la situation est Sebclem qui s'occupe de notre infra (tu l'as eu sur l'issue #205). Peux-tu le mettre dans la boucle ?

Salut,
Alors effectivement les deux espaces on le même id:

  Space Load (4.1ms)  SELECT "spaces".* FROM "spaces"
atelier
atelier

Bon je n'ai aucune idée de la façon dont ce cas de figure a pu se produire... Vous êtes surs que vous n'avez pas modifié la base de données à la main ?

Pour résoudre votre pb, le plus simple est de lancer la commande suivante :

docker-compose exec fabmanager bundle exec rails runner "Space.find(1).update_attributes(slug: 'salle-de-formation')"

Ok problème résolut mais non j'ai pas toucher à la DB.

Un problème avec un migrate peut être.

Bon je viens de passer en revue tout le code qui a changé dans les dernières version, je ne vois rien qui pourrait expliquer un tel comportement...

La seule explication éventuelle que je vois est une latence réseau qui aurait fait que la requête de création de l'espace "atelier" aurait été envoyée deux fois dans un très court laps de temps, cela résultant en un doublon en base de données, lié à une mauvaise validation de l'unicité par friendly_id (peut-être à cause de validates_uniqueness_of#Concurrency and integrity). Si vous avez ensuite modifié ce deuxième espace "atelier" en "salle de formation", le slug est néanmoins resté le même ... d'où l'erreur !

Par contre je ne m'explique absolument par comment cela aurait pu fonctionner avec une version antérieure... Dans tous les cas, je propose de fermer cette issue et je rajoute à la liste des choses à faire d'améliorer les contraintes d'unicité en base de données.

This improvement is tracked on the feedback tool.