inotify: server raising an error when removing a file (issue1371)
authorGerard Korsten <soonkia77@gmail.com>
Sat, 01 Nov 2008 14:05:13 +0200
changeset 7302 972737252d05
parent 7301 00d76fa3ffba
child 7303 d14c25e823ba
inotify: server raising an error when removing a file (issue1371) When a file is deleted via hg rm <file> the dirstate marks the file with a status of 'r'. The physical file has been deleted, but the inotify server tries to do a stat on the file after it's been removed. Patch catches the exception and correctly call updatestatus()
hgext/inotify/server.py
tests/test-inotify-issue1371
tests/test-inotify-issue1371.out
--- a/hgext/inotify/server.py	Sat Nov 01 15:15:14 2008 +0300
+++ b/hgext/inotify/server.py	Sat Nov 01 14:05:13 2008 +0200
@@ -337,10 +337,11 @@
         for wfn, state in ds.iteritems():
             if not wfn.startswith(wtopdir):
                 continue
-            status = state[0]
-            st = self.stat(wfn)
-            if status == 'r' and not st:
-                self.updatestatus(wfn, st, status=status)
+            try:
+                st = self.stat(wfn)
+            except OSError:
+                status = state[0]
+                self.updatestatus(wfn, None, status=status)
             else:
                 self.updatestatus(wfn, st)
         self.check_deleted('!')
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-inotify-issue1371	Sat Nov 01 14:05:13 2008 +0200
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+"$TESTDIR/hghave" inotify || exit 80
+
+hg init 
+
+touch a b c d e f
+
+echo "[extensions]" >> $HGRCPATH
+echo "inotify=" >> $HGRCPATH
+echo inserv1
+
+echo % inserve
+hg inserve -d --pid-file=hg.pid 2>&1
+cat hg.pid >> "$DAEMON_PIDS"
+
+hg ci -Am m
+
+
+# let the daemon finish its stuff
+sleep 1
+
+#Need to test all file opperations
+hg rm a
+rm b
+echo c >> c
+touch g
+hg add g
+hg mv e h
+hg status
+
+
+sleep 5
+echo "Are we able to kill the service? if not, the service died on some error"
+kill `cat hg.pid` 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-inotify-issue1371.out	Sat Nov 01 14:05:13 2008 +0200
@@ -0,0 +1,16 @@
+inserv1
+% inserve
+adding a
+adding b
+adding c
+adding d
+adding e
+adding f
+adding hg.pid
+M c
+A g
+A h
+R a
+R e
+! b
+Are we able to kill the service? if not, the service died on some error