Complément d'information suite à un test rapide, n'hésitez pas à me dire si j'ai fait une erreur dans le protocole de test :
- Un fichier, ID auto, Nom, Prénom
- 2 PC, P1 héberge le serveur HF C/S et l'application, P2 seulement l'application
- Une application qui se connecte sur une base sur P1, avec ce code sur un bouton
1 2 3 4 5 6 7 8 9 10 11 12
| HCréationSiInexistant(Personne)
SI HTransactionInterrompue() ALORS
Info("Transaction interrompue sur " + H.TrsPoste)
FIN
HTransactionDébut()
HRAZ(Personne)
Personne.Nom = "Toto"
HAjoute(Personne)
Info("coucou")
HTransactionAnnule() |
et ce code sur un 2ième bouton :
1 2 3 4 5 6 7
| SI HTransactionInterrompue() ALORS
Info("Transaction interrompue sur " + H.TrsPoste)
FIN
POUR TOUT Personne
Trace(Personne.Nom)
FIN |
- Je lance l'application sur P2, lors du info("coucou"), je coupe la connexion réseau pour simuler une panne, (panne carte réseau, panne alimentation, panne de n'importe quoi)
- Je lance l'appli sur P1, je clique sur le bouton 2, je peut voir l'enregistrement qui a été créé sur P2 et cela sans message d'erreur et tant que l'application sur P2 ne sera pas redémarré et le fichier réouvert je continuerais à voir cet enregistrement invalide, enregistrement qui va disparaître par magie dès que P2 va relancer l'application et ouvrir le fichier, si un jour il redémarre. Au mieux j'aurais pu avoir une alerte lors de l'instruction HTransactionInterrompue a condition bien sûr que j'exécute cette instruction très régulièrement (toutes les combien de ms ?) pour arrêter l'application sur l'ensemble des postes qui sont en train de lire des données invalides.
Rajoutant à cela une couche d'accès distant, soumis très régulièrement à des coupures réseau, ou une synchronisation avec une base embarquée qui va embarquer des données invalides, ça fait un jolie melting pot pour aller devant au procès.
Si mon protocole n'est pas erroné (j'ai testé plusieurs fois), ça ne me rassure pas trop :/
P.S.: Testé en Windev 17, si quelqu'un à une 18 pour tester ça serait bien.
Partager