tests/test-inotify-issue1542.t
author Idan Kamara <idankk86@gmail.com>
Sun, 16 Dec 2012 23:13:02 +0200
changeset 18309 cfeab932cff7
parent 12455 92b2c876a79d
child 18592 f7c4eb60b0c3
permissions -rw-r--r--
localrepo: don't refresh filecache entries that aren't in __dict__ We call invalidate to remove properties from __dict__ because they're possibly outdated and we'd like to check for a new version. Next time the property is accessed the filecache mechanism checks the current stat info with the one recorded at the last time the property was read, if they're different it recreates the property. Previously we refreshed the stat info on all properties in the filecache when the lock is released, including properties that are missing from __dict__. This is a problem because: l = repo.lock() repo.P # stat info S for P is recorded in _filecache <changes are made to repo.P indirectly, e.g. underlying file is replaced> # P's new stat info = S' l.release() # filecache refreshes, records S' as P's stat info At this point our filecache contains P with stat info S', but P's version is from S, which is outdated. The above happens during _rollback and strip. Currently we're wiping the filecache and forcing everything to reload from scratch which works but isn't the right solution.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
     1
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     2
  $ "$TESTDIR/hghave" inotify || exit 80
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     3
  $ hg init
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     4
  $ touch a
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     5
  $ mkdir dir
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     6
  $ touch dir/b
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     7
  $ touch dir/c
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     8
  $ echo "[extensions]" >> $HGRCPATH
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
     9
  $ echo "inotify=" >> $HGRCPATH
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    10
  $ hg add dir/c
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
    11
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    12
inserve
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
    13
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    14
  $ hg inserve -d --pid-file=hg.pid 2>&1
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    15
  $ cat hg.pid >> "$DAEMON_PIDS"
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    16
  $ hg st
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    17
  A dir/c
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    18
  ? a
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    19
  ? dir/b
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    20
  ? hg.pid
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
    21
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    22
moving dir out
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    23
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    24
  $ mv dir ../tmp-test-inotify-issue1542
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
    25
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    26
status
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
    27
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    28
  $ hg st
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    29
  ! dir/c
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    30
  ? a
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    31
  ? hg.pid
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    32
  $ sleep 1
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
    33
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    34
Are we able to kill the service? if not, the service died on some error
7892
67e59a9886d5 Fixing issue1542, adding a relevant test
Nicolas Dumazet <nicdumz.commits@gmail.com>
parents:
diff changeset
    35
12455
92b2c876a79d tests: unify test-inotify-issue1542
Matt Mackall <mpm@selenic.com>
parents: 7892
diff changeset
    36
  $ kill `cat hg.pid`