cmdutil.service: do not _exit(0) in the parent process stable
authorNicolas Dumazet <nicdumz.commits@gmail.com>
Tue, 17 Nov 2009 15:00:00 +0900
branchstable
changeset 9896 2c2f7593ffc4
parent 9894 b755a886e8b7
child 9897 97eda2133a9b
cmdutil.service: do not _exit(0) in the parent process The fact that a parent process spawns a daemon does not necessarily means that it is the only think it has to do. This was forcing since 7c01599dd340 inotify processes launched implicitely to exit prematurely: when no inotify server was running, "hg st" for example would only launch a inotify server, _exit(0) and thus would not return file statuses. This changeset adds a test for implicitely launched inotify processes. Change to output of test-inotify-1208 is correct: it reflects the normal error message of "hg st" when not dying during "hg inserve" daemon creation.
mercurial/cmdutil.py
tests/test-inotify
tests/test-inotify-issue1208.out
tests/test-inotify.out
--- a/mercurial/cmdutil.py	Thu Nov 19 17:33:41 2009 -0500
+++ b/mercurial/cmdutil.py	Tue Nov 17 15:00:00 2009 +0900
@@ -571,7 +571,7 @@
         if parentfn:
             return parentfn(pid)
         else:
-            os._exit(0)
+            return
 
     if initfn:
         initfn()
--- a/tests/test-inotify	Thu Nov 19 17:33:41 2009 -0500
+++ b/tests/test-inotify	Tue Nov 17 15:00:00 2009 +0900
@@ -2,7 +2,8 @@
 
 "$TESTDIR/hghave" inotify || exit 80
 
-hg init
+hg init repo1
+cd repo1
 
 touch a b c d e
 mkdir dir
@@ -10,10 +11,18 @@
 touch dir/x dir/y dir/bar/foo
 
 hg ci -Am m
+cd ..
+hg clone repo1 repo2
 
 echo "[extensions]" >> $HGRCPATH
 echo "inotify=" >> $HGRCPATH
 
+cd repo2
+echo b >> a
+# check that daemon started automatically works correctly
+hg status
+
+cd ../repo1
 echo % inserve
 hg inserve -d --pid-file=hg.pid
 cat hg.pid >> "$DAEMON_PIDS"
--- a/tests/test-inotify-issue1208.out	Thu Nov 19 17:33:41 2009 -0500
+++ b/tests/test-inotify-issue1208.out	Tue Nov 17 15:00:00 2009 +0900
@@ -1,5 +1,6 @@
 % fail
 abort: could not start server: File exists
+could not talk to new inotify server: No such file or directory
 abort: could not start server: File exists
 % inserve
 % status
--- a/tests/test-inotify.out	Thu Nov 19 17:33:41 2009 -0500
+++ b/tests/test-inotify.out	Tue Nov 17 15:00:00 2009 +0900
@@ -6,6 +6,9 @@
 adding dir/x
 adding dir/y
 adding e
+updating to branch default
+8 files updated, 0 files merged, 0 files removed, 0 files unresolved
+M a
 % inserve
 ? hg.pid
 % clean