Communauté Eggdrop
problèmes de collision lors d'opérations d'écriture dans un fichier - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : problèmes de collision lors d'opérations d'écriture dans un fichier (/showthread.php?tid=979)



problèmes de collision lors d'opérations d'écriture dans un fichier - MenzAgitat - 28/06/2011

Je rencontre un problème récurrent avec le script Motus depuis le passage de la v1.6.19 à la v1.6.20 d'eggdrop.
En moyenne 2 à 3 fois par semaine, j'ai ce genre de message d'erreur (qui se produit aussi sur d'autres autres fichiers dans lesquels le jeu tente d'écrire en cours de partie) :
tcl
couldn't open "scripts/motus/scores/motus.scores": file busy 
    while executing 
"open $motus::scores_file w" 
    (procedure "motus::ecrit_scores" line 3) 
    invoked from within 
"motus::ecrit_scores" 
    (procedure "motus::score_update" line 17) 
    invoked from within 
"motus::score_update $nick $host $ptsproposition" 
    (procedure "motus::check_response" line 126) 
    invoked from within 
"motus::check_response $_pubm1 $_pubm2 $_pubm3 $_pubm4 $_pubm5"


ou encore
tcl
error copying "scripts/motus/html/templates/default/index.html" to "scripts/motus/html/export/index.html": file busy 
    while executing 
"file copy -force -- $currentfile $dest" 
    (procedure "motus::html_export" line 115) 
    invoked from within 
"motus::html_export "auto""


Il faut savoir que le fichier index.html cité dans la 2ème erreur n'est pas souvent écrit, et jamais lu par le script.

J'ai tenté d'utiliser
tcl
fileevent $channelID writable ::motus::nomdelaproc


sans plus de résultat. Pour utiliser fileevent, il faut que le canal soit resté ouvert (donc que $channelID existe), mais des tests m'ont prouvé qu'au moment où cette erreur se produit, le canal n'est pas ouvert.

L'utilisation de file writeable n'a rien donné non plus.

Merci d'avance pour vos idées.


RE: problèmes de collision lors d'opérations d'écriture dans un fichier - CrazyCat - 28/06/2011

Je crois que ce souci n'est pas nouveau avec tcl, indépendamment d'une utilisation avec eggdrop, du C ou autre. Je vais tenter de voir si des solutions ont été trouvées.


RE: problèmes de collision lors d'opérations d'écriture dans un fichier - djkenny - 28/06/2011

salut,

soit le fichier est déjà ouvert (sous un autre channel ID), soit le disque dur est surchargé (mise a jour, crontab gourmand etc...)

edite: un "putlog [file channels]" dans ta proc pourais t indiquer si le fichier est déjà ouvert


RE: problèmes de collision lors d'opérations d'écriture dans un fichier - MenzAgitat - 28/06/2011

@djkenny : comme je le disais plus haut, je me suis assuré que le fichier n'était pas déjà ouvert, et un disque dur occupé n'a jamais refusé l'autorisation d'accéder à un fichier.


RE: problèmes de collision lors d'opérations d'écriture dans un fichier - djkenny - 28/06/2011

dans certains cas le système peut reporter la requête en renvoyant un message à l application, celui ci est peut être interprété comme un refus par tcl