Re: [vhffs] Petit patch pour VhffsFSSYNC (1631) |
[ Thread Index | Date Index | More vhffs.org/vhffs Archives ]
Le 25/10/2010 16:20, Sylvain Rochet a écrit : > Yop, > > > On Mon, Oct 25, 2010 at 10:08:59AM +0200, Laurent Ducassou wrote: >> Bonjour, >> >> En testant VhffsFSSYNC, j'ai rencontré un comportement très bizarre... >> (les affirmations ci-dessous sont confirmés par le mode Debug) >> >> Si je monitor le dossier /data/web (la racine), alors : >> - Tous les fichier, dossier et sous dossier, créer avant le démarrage du >> daemon master sont propagé au slave (uniquement) au démarrage de celui-ci. > Oui, via le mécanisme de "fullview" en unicast, qui permet au slave de > récupérer les morceaux qu'il aurait zappé. > > Pas de problème là. >> - Tous fichier (ou dossier et sous dossier) crées à la racine PENDANT >> l'exécution du daemon master sont copiés sur le slave. > Ainsi que le reste, si tout va bien :-) Là est le problème... >> - Aucun fichier (ou dossier et sous dossier) crées dans un sous >> répertoire de la racine PENDANT l'exécution du daemon ET qui existé au >> moment du démarrage du daemon master n'est propagé au slave. > Le master n'écoute pas tant qu'il n'a pas parcouru l'arbre. Quand le > slave se connecte/reconnecte il demande une fullview et reçoit dès à > présent les changements en cours. > > Pas de risque que le master balance une fullview au slave alors qu'il > n'a pas tout watché et qu'il zappe des trucs. > > 0. Le slave reçoit le contenu de toto/titi/ > 1. Le contenu de toto/titi/ est modifié > 2. Le master watch toto/titi/ > > ==> 2. perdu > > ==> Il faut donc tout watcher avant que les slave se connectent > Hmm, ok ! >> Un bug étrange qui m'a fait fouiner le code C du daemon master malgré la >> longue époque qui me sépare de mon dernier programme en C. Il en >> retourne qu'il manque une petite ligne pour permettre de syncroniser les >> sous-répertoire qui existé déjà au lancement du daemon. >> >> Le patch ci-joint corrige ce problème (enfin pour moi). Je peux >> maintenant créer des fichier sur mes sous dossier et ils sont >> automatiquement répercuté. > J'en doute, le patch ne fait juste rien car à ce moment il n'y a pas de > slave de connecté sur le mastr. > > Es-tu sûr d'avoir attendu que le master écoute sur son port ? Oui netstats me le dit :) > Le vhffsfssync_fake_events_recursively() est là pour corriger un > problème de synchronisation qui arrive sur les nouveaux répertoires: > > 0. le répertoire titi est créé > 1. le contenu de ce répertoire est modifié > 2. le répertoire est watché > Il faudrait alors watcher les sous repertoires aussi, non ? > Le délai entre 0 et 2 est le délai de réception et de traitement d'une > notification inotify de nouveau répertoire. > > C'est récursif pour un cas particulier: > > 0. le répertoire titi est créé > 1. le répertoire titi/toto est créé > 2. le répertoire titi est watché > > > Rien à voir avec la récursion initiale. Au final, hélas, tout marche pas normalement... Je vais te donner un retour de mes test à l'origine. J'exécute dans un premier temps sur le master (sans slave) : - /etc/vhffs/vhffsfssync_master --foreground --pidfile=/var/run/vhffsfssync_master-data-iso-BSD.pid --port=5678 /data/web" - Netstat m'indique que le master écoute sur le port 5678 ! Donc c'est bon ! Retour d'exécution : Monitoring /data/web t+ . a+ 1 . Ready Puis je lance sur le slave (ou le repertoire /data/web/ est vide...) - /etc/vhffs/vhffsfssync_slave --foreground --preserve --pidfile=/var/run/vhffsfssync_slave-data.pid 10.10.0.1:5678 /data/web Retour d'exécution sur le master : hello time fulltree get ./b5 get ./b5/ca get ./b5/ca/59 get ./b5/ca/59/test.com get ./b5/ca/59/test.com/tmp get ./b5/ca/59/test.com/php-include get ./b5/ca/59/test.com/htdocs get ./b5/ca/59/test.com/htdocs/index.php get ./b5/ca/59/test.com/htdocs/info.php Les fichiers sont maintenant présent sur le slave ! - Maintenant on va tester d'écrire sur le master : vhffs1:/data/web# mkdir test/ Retour de vhffssync : wd=1 mask=40000100 cookie=0 len=16 name=test IN_CREATE ==> MKDIR ./test t+ ./test a+ 2 ./test - Puis un touch sur ce nouveau répertoire : vhffs1:/data/web# touch test/o Retour : wd=1 mask=100 cookie=0 len=16 name=o IN_CREATE ==> CREATE ./o wd=1 mask=4 cookie=0 len=16 name=o IN_ATTRIB wd=1 mask=8 cookie=0 len=16 name=o IN_CLOSE_WRITE ==> SEND ./o Bon, on est d'accord, ca marche sur la racine et est effectivement transmit au slave! - Tentons un mkdir et touch dans le dossier /data/web/b5/ qui existé déjà avant le lancement de vhffsfssync_master (et qui à était transmit au slave par unicast!) : -- vhffs1:/data/web# mkdir b5/test -- vhffs1:/data/web# touch b5/o Retour : Aucun, le debug du master reste vierge... et si j'écris un fichier dans /data/web, ça marche. Donc pas un problème de réseau. Plutôt sur la prog? Si tu as une idée... Personnellement, je sèche là :/ Cordialement, -- Ducassou Laurent
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature
Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |