Mercurial > hg
annotate tests/test-transaction-rollback-on-revlog-split.t @ 50543:164b6c4878b8 stable
doc: format argument for date uses strftime format string (issue6818)
author | Joerg Sonnenberger <joerg@bec.de> |
---|---|
date | Wed, 31 May 2023 22:36:50 +0200 |
parents | a445194f0a4d |
children | 63dc24be635d 05d429fe84ed |
rev | line source |
---|---|
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
1 Test correctness of revlog inline -> non-inline transition |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
2 ---------------------------------------------------------- |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
3 |
50366
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
4 We test various file length and naming pattern as this created issue in the |
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
5 past. |
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
6 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
7 Helper extension to intercept renames and kill process |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
8 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
9 $ cat > $TESTTMP/intercept_before_rename.py << EOF |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
10 > import os |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
11 > import signal |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
12 > from mercurial import extensions, util |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
13 > |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
14 > def extsetup(ui): |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
15 > def rename(orig, src, dest, *args, **kwargs): |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
16 > path = util.normpath(dest) |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
17 > if path.endswith(b'data/file.i'): |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
18 > os.kill(os.getpid(), signal.SIGKILL) |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
19 > return orig(src, dest, *args, **kwargs) |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
20 > extensions.wrapfunction(util, 'rename', rename) |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
21 > EOF |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
22 |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
23 $ cat > $TESTTMP/intercept_after_rename.py << EOF |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
24 > import os |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
25 > import signal |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
26 > from mercurial import extensions, util |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
27 > |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
28 > def extsetup(ui): |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
29 > def close(orig, *args, **kwargs): |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
30 > path = util.normpath(args[0]._atomictempfile__name) |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
31 > r = orig(*args, **kwargs) |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
32 > if path.endswith(b'/.hg/store/data/file.i'): |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
33 > os.kill(os.getpid(), signal.SIGKILL) |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
34 > return r |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
35 > extensions.wrapfunction(util.atomictempfile, 'close', close) |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
36 > def extsetup(ui): |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
37 > def rename(orig, src, dest, *args, **kwargs): |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
38 > path = util.normpath(dest) |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
39 > r = orig(src, dest, *args, **kwargs) |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
40 > if path.endswith(b'data/file.i'): |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
41 > os.kill(os.getpid(), signal.SIGKILL) |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
42 > return r |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
43 > extensions.wrapfunction(util, 'rename', rename) |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
44 > EOF |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
45 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
46 $ cat > $TESTTMP/killme.py << EOF |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
47 > import os |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
48 > import signal |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
49 > |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
50 > def killme(ui, repo, hooktype, **kwargs): |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
51 > os.kill(os.getpid(), signal.SIGKILL) |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
52 > EOF |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
53 |
50313
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
54 $ cat > $TESTTMP/reader_wait_split.py << EOF |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
55 > import os |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
56 > import signal |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
57 > from mercurial import extensions, revlog, testing |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
58 > def _wait_post_load(orig, self, *args, **kwargs): |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
59 > wait = b'data/file' in self.radix |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
60 > if wait: |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
61 > testing.wait_file(b"$TESTTMP/writer-revlog-split") |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
62 > r = orig(self, *args, **kwargs) |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
63 > if wait: |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
64 > testing.write_file(b"$TESTTMP/reader-index-read") |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
65 > testing.wait_file(b"$TESTTMP/writer-revlog-unsplit") |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
66 > return r |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
67 > |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
68 > def extsetup(ui): |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
69 > extensions.wrapfunction(revlog.revlog, '_loadindex', _wait_post_load) |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
70 > EOF |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
71 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
72 setup a repository for tests |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
73 ---------------------------- |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
74 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
75 $ cat >> $HGRCPATH << EOF |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
76 > [format] |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
77 > revlog-compression=none |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
78 > EOF |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
79 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
80 $ hg init troffset-computation |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
81 $ cd troffset-computation |
50364
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
82 $ files=" |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
83 > file |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
84 > Directory_With,Special%Char/Complex_File.babar |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
85 > foo/bar/babar_celeste/foo |
50366
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
86 > 1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/f |
50364
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
87 > " |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
88 $ for f in $files; do |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
89 > mkdir -p `dirname $f` |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
90 > done |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
91 $ for f in $files; do |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
92 > printf '%20d' '1' > $f |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
93 > done |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
94 $ hg commit -Aqma |
50364
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
95 $ for f in $files; do |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
96 > printf '%1024d' '1' > $f |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
97 > done |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
98 $ hg commit -Aqmb |
50364
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
99 $ for f in $files; do |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
100 > printf '%20d' '1' > $f |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
101 > done |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
102 $ hg commit -Aqmc |
50364
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
103 $ for f in $files; do |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
104 > dd if=/dev/zero of=$f bs=1k count=128 > /dev/null 2>&1 |
f930af431193
revlog: test more complex file pattern for revlog split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50334
diff
changeset
|
105 > done |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
106 $ hg commit -AqmD --traceback |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
107 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
108 Reference size: |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
109 $ f -s file |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
110 file: size=131072 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
111 $ f -s .hg/store/data/file* |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
112 .hg/store/data/file.d: size=132139 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
113 .hg/store/data/file.i: size=256 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
114 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
115 $ cd .. |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
116 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
117 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
118 Test a hard crash after the file was split but before the transaction was committed |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
119 =================================================================================== |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
120 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
121 Test offset computation to correctly factor in the index entries themselves. |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
122 Also test that the new data size has the correct size if the transaction is aborted |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
123 after the index has been replaced. |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
124 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
125 Test repo has commits a, b, c, D, where D is large (grows the revlog enough that it |
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
126 transitions to non-inline storage). The clone initially has changes a, b |
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
127 and will transition to non-inline storage when adding c, D. |
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
128 |
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
129 If the transaction adding c, D is rolled back, then we don't undo the revlog split, |
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
130 but truncate the index and the data to remove both c and D. |
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
131 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
132 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
133 $ hg clone --quiet --rev 1 troffset-computation troffset-computation-copy |
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
134 $ cd troffset-computation-copy |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
135 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
136 Reference size: |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
137 $ f -s file |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
138 file: size=1024 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
139 $ f -s .hg/store/data/file* |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
140 .hg/store/data/file.i: size=1174 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
141 |
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
142 $ cat > .hg/hgrc <<EOF |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
143 > [hooks] |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
144 > pretxnchangegroup = python:$TESTTMP/killme.py:killme |
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
145 > EOF |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
146 #if chg |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
147 $ hg pull ../troffset-computation |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
148 pulling from ../troffset-computation |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
149 [255] |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
150 #else |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
151 $ hg pull ../troffset-computation |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
152 pulling from ../troffset-computation |
50334
2231f7d8a602
test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents:
50316
diff
changeset
|
153 *Killed* (glob) |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
154 [137] |
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
155 #endif |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
156 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
157 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
158 The inline revlog still exist, but a split version exist next to it |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
159 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
160 $ f -s .hg/store/data/file* |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
161 .hg/store/data/file.d: size=132139 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
162 .hg/store/data/file.i: size=132395 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
163 .hg/store/data/file.i.s: size=256 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
164 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
165 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
166 The first file.i entry should match the "Reference size" above. |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
167 The first file.d entry is the temporary record during the split, |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
168 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
169 A "temporary file" entry exist for the split index. |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
170 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
171 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
172 data/file.i 1174 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
173 data/file.d 0 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
174 $ cat .hg/store/journal.backupfiles | tr -s '\000' ' ' | tr -s '\00' ' '| grep data/file |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
175 data/file.i data/journal.backup.file.i 0 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
176 data/file.i.s 0 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
177 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
178 recover is rolling the split back, the fncache is still valid |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
179 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
180 $ hg recover |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
181 rolling back interrupted transaction |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
182 (verify step skipped, run `hg verify` to check your repository content) |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
183 $ f -s .hg/store/data/file* |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
184 .hg/store/data/file.i: size=1174 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
185 $ hg tip |
50366
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
186 changeset: 1:cc8dfb126534 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
187 tag: tip |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
188 user: test |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
189 date: Thu Jan 01 00:00:00 1970 +0000 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
190 summary: b |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
191 |
47874
308e843f24b1
test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47561
diff
changeset
|
192 $ hg verify -q |
47875
0fb328bb2459
debugrebuildfncache: add a cheaper option to rebuild the fncache
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47874
diff
changeset
|
193 $ hg debugrebuildfncache --only-data |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
194 fncache already up to date |
47875
0fb328bb2459
debugrebuildfncache: add a cheaper option to rebuild the fncache
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47874
diff
changeset
|
195 $ hg verify -q |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
196 $ cd .. |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
197 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
198 Test a hard crash right before the index is move into place |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
199 =========================================================== |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
200 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
201 Now retry the procedure but intercept the rename of the index and check that |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
202 the journal does not contain the new index size. This demonstrates the edge case |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
203 where the data file is left as garbage. |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
204 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
205 $ hg clone --quiet --rev 1 troffset-computation troffset-computation-copy2 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
206 $ cd troffset-computation-copy2 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
207 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
208 Reference size: |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
209 $ f -s file |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
210 file: size=1024 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
211 $ f -s .hg/store/data/file* |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
212 .hg/store/data/file.i: size=1174 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
213 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
214 $ cat > .hg/hgrc <<EOF |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
215 > [extensions] |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
216 > intercept_rename = $TESTTMP/intercept_before_rename.py |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
217 > EOF |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
218 #if chg |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
219 $ hg pull ../troffset-computation |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
220 pulling from ../troffset-computation |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
221 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
222 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
223 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
224 adding file changes |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
225 [255] |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
226 #else |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
227 $ hg pull ../troffset-computation |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
228 pulling from ../troffset-computation |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
229 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
230 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
231 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
232 adding file changes |
50334
2231f7d8a602
test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents:
50316
diff
changeset
|
233 *Killed* (glob) |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
234 [137] |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
235 #endif |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
236 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
237 The inline revlog still exist, but a split version exist next to it |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
238 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
239 $ f -s .hg/store/data/file* |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
240 .hg/store/data/file.d: size=132139 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
241 .hg/store/data/file.i: size=132395 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
242 .hg/store/data/file.i.s: size=256 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
243 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
244 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
245 data/file.i 1174 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
246 data/file.d 0 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
247 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
248 recover is rolling the split back, the fncache is still valid |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
249 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
250 $ hg recover |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
251 rolling back interrupted transaction |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
252 (verify step skipped, run `hg verify` to check your repository content) |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
253 $ f -s .hg/store/data/file* |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
254 .hg/store/data/file.i: size=1174 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
255 $ hg tip |
50366
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
256 changeset: 1:cc8dfb126534 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
257 tag: tip |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
258 user: test |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
259 date: Thu Jan 01 00:00:00 1970 +0000 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
260 summary: b |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
261 |
47874
308e843f24b1
test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47561
diff
changeset
|
262 $ hg verify -q |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
263 $ cd .. |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
264 |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
265 Test a hard crash right after the index is move into place |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
266 =========================================================== |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
267 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
268 Now retry the procedure but intercept the rename of the index. |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
269 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
270 $ hg clone --quiet --rev 1 troffset-computation troffset-computation-crash-after-rename |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
271 $ cd troffset-computation-crash-after-rename |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
272 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
273 Reference size: |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
274 $ f -s file |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
275 file: size=1024 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
276 $ f -s .hg/store/data/file* |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
277 .hg/store/data/file.i: size=1174 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
278 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
279 $ cat > .hg/hgrc <<EOF |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
280 > [extensions] |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
281 > intercept_rename = $TESTTMP/intercept_after_rename.py |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
282 > EOF |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
283 #if chg |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
284 $ hg pull ../troffset-computation |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
285 pulling from ../troffset-computation |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
286 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
287 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
288 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
289 adding file changes |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
290 [255] |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
291 #else |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
292 $ hg pull ../troffset-computation |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
293 pulling from ../troffset-computation |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
294 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
295 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
296 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
297 adding file changes |
50334
2231f7d8a602
test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents:
50316
diff
changeset
|
298 *Killed* (glob) |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
299 [137] |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
300 #endif |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
301 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
302 The inline revlog was over written on disk |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
303 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
304 $ f -s .hg/store/data/file* |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
305 .hg/store/data/file.d: size=132139 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
306 .hg/store/data/file.i: size=256 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
307 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
308 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
309 data/file.i 1174 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
310 data/file.d 0 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
311 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
312 recover is rolling the split back, the fncache is still valid |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
313 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
314 $ hg recover |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
315 rolling back interrupted transaction |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
316 (verify step skipped, run `hg verify` to check your repository content) |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
317 $ f -s .hg/store/data/file* |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
318 .hg/store/data/file.i: size=1174 |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
319 $ hg tip |
50366
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
320 changeset: 1:cc8dfb126534 |
50312
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
321 tag: tip |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
322 user: test |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
323 date: Thu Jan 01 00:00:00 1970 +0000 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
324 summary: b |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
325 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
326 $ hg verify -q |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
327 $ cd .. |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
328 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
329 Have the transaction rollback itself without any hard crash |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
330 =========================================================== |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
331 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
332 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
333 Repeat the original test but let hg rollback the transaction. |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
334 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
335 $ hg clone --quiet --rev 1 troffset-computation troffset-computation-copy-rb |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
336 $ cd troffset-computation-copy-rb |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
337 $ cat > .hg/hgrc <<EOF |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
338 > [hooks] |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
339 > pretxnchangegroup = false |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
340 > EOF |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
341 $ hg pull ../troffset-computation |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
342 pulling from ../troffset-computation |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
343 searching for changes |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
344 adding changesets |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
345 adding manifests |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
346 adding file changes |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
347 transaction abort! |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
348 rollback completed |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
349 abort: pretxnchangegroup hook exited with status 1 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
350 [40] |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
351 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
352 The split was rollback |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
353 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
354 $ f -s .hg/store/data/file* |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
355 .hg/store/data/file.d: size=0 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
356 .hg/store/data/file.i: size=1174 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
357 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
358 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
359 $ hg tip |
50366
a445194f0a4d
backup: fix issue when the backup end up in a different directory
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50364
diff
changeset
|
360 changeset: 1:cc8dfb126534 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
361 tag: tip |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
362 user: test |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
363 date: Thu Jan 01 00:00:00 1970 +0000 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
364 summary: b |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
365 |
47874
308e843f24b1
test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47561
diff
changeset
|
366 $ hg verify -q |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
367 $ cd .. |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
368 |
50313
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
369 Read race |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
370 ========= |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
371 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
372 We check that a client that started reading a revlog (its index) after the |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
373 split and end reading (the data) after the rollback should be fine |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
374 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
375 $ hg clone --quiet --rev 1 troffset-computation troffset-computation-race |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
376 $ cd troffset-computation-race |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
377 $ cat > .hg/hgrc <<EOF |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
378 > [hooks] |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
379 > pretxnchangegroup=$RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/reader-index-read $TESTTMP/writer-revlog-split |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
380 > pretxnclose = false |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
381 > EOF |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
382 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
383 start a reader |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
384 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
385 $ hg cat --rev 0 file \ |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
386 > --config "extensions.wait_read=$TESTTMP/reader_wait_split.py" \ |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
387 > 2> $TESTTMP/reader.stderr \ |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
388 > > $TESTTMP/reader.stdout & |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
389 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
390 Do a failed pull in // |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
391 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
392 $ hg pull ../troffset-computation |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
393 pulling from ../troffset-computation |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
394 searching for changes |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
395 adding changesets |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
396 adding manifests |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
397 adding file changes |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
398 transaction abort! |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
399 rollback completed |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
400 abort: pretxnclose hook exited with status 1 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
401 [40] |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
402 $ touch $TESTTMP/writer-revlog-unsplit |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
403 $ wait |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
404 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
405 The reader should be fine |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
406 $ cat $TESTTMP/reader.stderr |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
407 $ cat $TESTTMP/reader.stdout |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
408 1 (no-eol) |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
409 $ cd .. |
50314
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
410 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
411 pending hooks |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
412 ============= |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
413 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
414 We checks that hooks properly see the inside of the transaction, while other process don't. |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
415 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
416 $ hg clone --quiet --rev 1 troffset-computation troffset-computation-hooks |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
417 $ cd troffset-computation-hooks |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
418 $ cat > .hg/hgrc <<EOF |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
419 > [hooks] |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
420 > pretxnclose.01-echo = hg cat -r 'max(all())' file | f --size |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
421 > pretxnclose.02-echo = $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/hook-done $TESTTMP/hook-tr-ready |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
422 > pretxnclose.03-abort = false |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
423 > EOF |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
424 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
425 $ ( |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
426 > $RUNTESTDIR/testlib/wait-on-file 5 $TESTTMP/hook-tr-ready;\ |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
427 > hg cat -r 'max(all())' file | f --size;\ |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
428 > touch $TESTTMP/hook-done |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
429 > ) >stdout 2>stderr & |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
430 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
431 $ hg pull ../troffset-computation |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
432 pulling from ../troffset-computation |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
433 searching for changes |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
434 adding changesets |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
435 adding manifests |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
436 adding file changes |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
437 size=131072 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
438 transaction abort! |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
439 rollback completed |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
440 abort: pretxnclose.03-abort hook exited with status 1 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
441 [40] |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
442 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
443 $ cat stdout |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
444 size=1024 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
445 $ cat stderr |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
446 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
447 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
448 $ cd .. |