mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 07:17:55 +03:00
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()
This commit is contained in:
parent
2e3aa68a1d
commit
069ac42a71
@ -337,10 +337,11 @@ class Watcher(object):
|
||||
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('!')
|
||||
|
36
tests/test-inotify-issue1371
Executable file
36
tests/test-inotify-issue1371
Executable file
@ -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`
|
||||
|
16
tests/test-inotify-issue1371.out
Normal file
16
tests/test-inotify-issue1371.out
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user