corso-python-prato / share-system-team2

Apache License 2.0
2 stars 9 forks source link

When you modify a file with a text editor that use temporary files, the event catcher fail #3

Closed iacopy closed 10 years ago

iacopy commented 10 years ago

For ex. gedit or word, or Matlab create temporary files that are ignored by watchdog.- The issue raises when the program renames the temporary file to the normal file.

k4rl85 commented 10 years ago

a proposito di questo bug... https://github.com/gorakhargosh/watchdog#about-using-watchdog-with-editors-like-vim

iacopy commented 10 years ago

Cioè addirittura gli sviluppatori di watchdog dicono di modificare l'opzione di vim... :/ Non solo! Chiudono pure i due issues segnalati in proposito, dicendo "esiste l'opzione di vim tal de'tali": https://github.com/gorakhargosh/watchdog/issues/38 https://github.com/gorakhargosh/watchdog/issues/56 Magari facciamo un workaround affinché non crashi o qualcosa del genere, ma non pensiamoci troppo per ora.

k4rl85 commented 10 years ago

la cosa strana è che dalle mie prove frettolose gira senza problemi con vim e tutti gli altri editor (emacs, nano, sublime, libreoffice writer) mentre con gedit CANCELLA il file che sta salvando e copia il file che gedit usa durante l'operazione di salvataggio (una sorta di backup che ha sempre md5 diverso e dimensione diversa ma contiene lo stesso testo) non sono del tutto sicuro ma sembra che gedit per prima cosa CANCELLA il file, scrive il file backup (che a volte è un copy e non un crea) e infine lo ritrasforma nel file originale

@gvaldambrini cosa dobbiamo fare?

P.S: disabilitando la funzione di backup di gedit non da questo problema

k4rl85 commented 10 years ago

@iacopy non ci sono crash se non messaggi di errore del server che non riesce a eseguire l'operazione e anche quando dico di cancellare il file salvato da GEDIT sul client che non esiste più sul server semplicemente non esegue l'operazione. Sarebbe da verificare se la struttura dati degli snapshot viene manomessa da questo bug ma sembra non creare problemi per le operazioni successive.

Non ho trovato workaround funzionanti, sopratutto non so come possiamo riconoscere un delete normale da uno fatto da gedit, ho provato anche a mettere un controllo prima del delete che verifica se esiste un file temporaneo con lo stesso nome con la ~ finale ma non funziona perche Gedit cancella prima di creare il file di backup...

k4rl85 commented 10 years ago

Fixed with new RegexMatchingEventHandler