Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD11][HF] Problème sur les transactions.

2 réponses
Avatar
Pascal F
Bonjour,
J'ai un soucis avec l'utilisation des transactions lors de la reprise sur coupure ou arret anormal du programme.
- J'utilise des fichiers HF classic et je définis une connexion au démarrage du programme, pour les fichiers du groupware et deux
fichiers de paramètres généraux.
- L'utilisateur choisit un dossier de travail et une autre connexion est ouverte pour les fichiers du dossiers (différents de
ceux de la 1ère connexion.
- Des alias sont déclarés sur plusieurs fichiers de la deuxième connexion.
- Dans une partie du programme (intégration de données provenant de fichiers externes) j'ouvre une transaction et une douzaine de
fichiers sont concernés.

Lors de l'intégration, si une erreur dans le déroulement se produit ou si le transfert est annulé par l'utilisateur, l'ensemble
de la transaction est correctement annulée.
Par contre si le programme est arrêté de façon anormale (coupure de courant, fin de tache par le gestionnaire de tâche, sortie du
mode test), impossible de faire un roll-back.
Pas moyen d'annuler la transaction par quelle que façon que ce soit: par WDoptimiseur, par un hannuletransaction, rien. Seule
possibilité de réaccéder à la base : restaurer une sauvegarde. Ce qui n'est pas des plus élégant.
Est-ce dû à une instruction Hferme ? J'ai constaté qu'un fichier en transaction, fermé durant la transaction ne fait plus partie
de la transaction.
Merci de vos lumières.

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre

2 réponses

Avatar
mat
Pascal F wrote:
...
Est-ce dû à une instruction Hferme ? J'ai constaté qu'un fichier en
transaction, fermé durant la transaction ne fait plus partie de la
transaction.
Merci de vos lumières.





c'est bien possible. Un HFerme débloque aussi des enregistrements
verrouillées, donc cette commande est à éviter à tout prix durant une
mise à jour des données.

Nous utilisons les transactions depuis des années sans problème, mais:
1) nos installations prévoient toujours un UPS coté serveur des fichiers
et 2) c'est vrai qu'une coupure de courant peut des fois provoquer une
situation qui ne peut être débloqué qu'avec WDoptimiseur. En plusieurs
années sur plusieurs installations, nous n'avons cependant jamais eu
besoin d'intervenir manuellement sur une transaction coincé. Pour
débloquer les transactions, nous avons dans l'ouverture du projet:

SI HTransactionInterrompue ALORS
Info("Interrupted transaction will be cancelled")
HTransactionAnnule
Info("Cancelling interrupted transaction finished.")
FIN

en cela fonctionne aussi sans faute à ce jour.

Salutations
Mat
Avatar
Pascal F
mat a présenté l'énoncé suivant :
Pascal F wrote:
...
Est-ce dû à une instruction Hferme ? J'ai constaté qu'un fichier en transaction, fermé durant la transaction ne fait plus
partie de la transaction.
Merci de vos lumières.





c'est bien possible. Un HFerme débloque aussi des enregistrements verrouillées, donc cette commande est à éviter à tout prix
durant une mise à jour des données.

Nous utilisons les transactions depuis des années sans problème, mais:
1) nos installations prévoient toujours un UPS coté serveur des fichiers et 2) c'est vrai qu'une coupure de courant peut des
fois provoquer une situation qui ne peut être débloqué qu'avec WDoptimiseur. En plusieurs années sur plusieurs installations,
nous n'avons cependant jamais eu besoin d'intervenir manuellement sur une transaction coincé. Pour débloquer les transactions,
nous avons dans l'ouverture du projet:

SI HTransactionInterrompue ALORS
Info("Interrupted transaction will be cancelled")
HTransactionAnnule
Info("Cancelling interrupted transaction finished.")
FIN

en cela fonctionne aussi sans faute à ce jour.

Salutations
Mat



Je n'arrivais pas à annuler avec WDOptimiser. J'avais aussi testé un HTransactionAnnule() en début d'utilisation des fichiers
sans succès.
Mais par contre je ne devais pas le faire au bon endroit.
Je viens de faire des essais en faisant le HTransactionAnnule immédiatement après la déclaration de la connexion et le changement
de répertoire, avant toute autre action sur les fichiers et il semble que la transaction s'annule correctement maintenant. Merci
des infos.

--
Pascal

Ne garder que le prénom pour me joindre