• État Fermée
  • Pourcentage achevé
    100%
  • Type Garde-fou
  • Catégorie CORE
  • Assignée à
    DevTeam
  • Système d'exploitation Tous
  • Sévérité Critique
  • Priorité Très haute
  • Basée sur la version 16.0
  • Due pour la version 16.1
  • Échéance Non décidée
  • Votes
  • Privée
Concerne le projet: BeDesk 16
Ouverte par DevTeam - 2016-04-12
Dernière modification par DevTeam - 2016-04-12

FS#383 - Garde-fou : Protection contre l'ouverture de plusieurs instances simultanées du moteur de BdD

Il arrive parfois que certains utilisateurs signalent la désactivation intempestive de leur accès. Parfois, on constate également des pertes de données ou l’apparition non expliquées de fichiers endommagés dans les bases de données de certains utilisateurs.

Les recherches du support technique ainsi que l’analyse anonymisée de l’utilisation de l’application fait apparaître une cause possible : l’ouverture simultanée de plusieurs instances du moteur de bases de données sur une même base de données.

Le logiciel est normalement protégé contre cela via le système d’exploitation de l’ordinateur, particulièrement sur Mac OS X. Cependant, il est assez facile de contourner cette protection (il suffit de faire une copie de l’application pour la démarrer une nouvelle plusieurs fois).

La concurrence au niveau des modifications des fichiers peut avoir des effets indésirables allant du simple écrasement de données à la destruction complète de la base de données.

Il est donc nécessaire d’ajouter un garde-fou supplémentaire qui bloque le démarrage de nouvelles instances du programme lorsqu’il est déjà ouvert sur une base de données.


On peut pour cela reprendre la même méthode de verrouillage que ce que nous utilisons déjà pour garantir la synchronisation.

Pour éviter un blocage définitif, il faut aussi ajouter un TTL. De cette manière, si le programme venait à s’arrêter d’une façon inopinée, lorsque le TTL serait écoulé, on pourrait à nouveau ouvrir la base de données. Cela signifie que le verrou doit être renouvelé périodiquement. S’il n’a plus été renouvelé après un délai donné, c’est que l’application a été arrêtée. On peut donc l’écraser et reprendre.


On utilise un Shutdown Hook pour s’assurer au mieux de l’élimination du verrou. Ainsi, lorsqu’on quitte le programme ou qu’il se ferme normalement, le verrou est toujours supprimé.

Si le programme plante ou rencontre un problème tel qu’il doit être arrêter brutalement, le verrou à une durée de vie (TTL) de 5 minutes. Ainsi, si on relance le programme après 10 minutes d’attente, il doit être possible de redémarrer.

Cette tâche bloque la fermeture de ces autres tâches
ID Projet Résumé Priorité Sévérité Progression
298 BeDesk 16  FS#298 - BeDesk 16 : Liste des améliorations et correctifs  Très haute Haute
100%
367 BeDesk 16  FS#367 - BeDesk Express 2016 ver:16.1 - rev:72  Basse Haute
100%
Fermée par  DevTeam
2016-04-12 12:34
Raison de la fermeture :  Disponible

Chargement...

Activer les raccourcis clavier

Liste des tâches

Détails de la tâche

Édition de la tâche