Mercurial > hg
annotate tests/test-transaction-rollback-on-revlog-split.t @ 50620:26e63204c31e
safehasattr: pass attribute name as string instead of bytes
This is a step toward replacing `util.safehasattr` usage with plain `hasattr`.
The builtin function behave poorly in Python2 but this was fixed in Python3.
These change are done one by one as they tend to have a small odd to trigger
puzzling breackage.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 02 Feb 2023 17:37:51 +0100 |
parents | fa78e8727a2d |
children |
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 |
50466
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
117 Test a succesful pull |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
118 ===================== |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
119 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
120 Make sure everything goes though as expect if we don't do any crash |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
121 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
122 $ hg clone --quiet --rev 1 troffset-computation troffset-success |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
123 $ cd troffset-success |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
124 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
125 Reference size: |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
126 $ f -s file |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
127 file: size=1024 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
128 $ f -s .hg/store/data/file* |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
129 .hg/store/data/file.i: size=1174 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
130 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
131 $ hg pull ../troffset-computation |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
132 pulling from ../troffset-computation |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
133 searching for changes |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
134 adding changesets |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
135 adding manifests |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
136 adding file changes |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
137 added 2 changesets with 8 changes to 4 files |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
138 new changesets 16a630ece54e:8437c461d70a |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
139 (run 'hg update' to get a working copy) |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
140 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
141 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
142 The inline revlog has been replaced |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
143 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
144 $ f -s .hg/store/data/file* |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
145 .hg/store/data/file.d: size=132139 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
146 .hg/store/data/file.i: size=256 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
147 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
148 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
149 $ hg verify -q |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
150 $ cd .. |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
151 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
152 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
153 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
|
154 =================================================================================== |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
155 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
156 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
|
157 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
|
158 after the index has been replaced. |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
159 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
160 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
|
161 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
|
162 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
|
163 |
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
164 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
|
165 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
|
166 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
167 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
168 $ 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
|
169 $ cd troffset-computation-copy |
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 Reference size: |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
172 $ f -s file |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
173 file: size=1024 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
174 $ f -s .hg/store/data/file* |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
175 .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
|
176 |
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
177 $ cat > .hg/hgrc <<EOF |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
178 > [hooks] |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
179 > 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
|
180 > EOF |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
181 #if chg |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
182 $ hg pull ../troffset-computation |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
183 pulling from ../troffset-computation |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
184 [255] |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
185 #else |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
186 $ hg pull ../troffset-computation |
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
187 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
|
188 *Killed* (glob) |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
189 [137] |
47284
21ed126bab53
revlog: fix index computation during inline->non-inline transition
Joerg Sonnenberger <joerg@bec.de>
parents:
diff
changeset
|
190 #endif |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
191 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
192 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
193 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
|
194 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
195 $ 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
|
196 .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
|
197 .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
|
198 .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
|
199 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
200 |
48570
f38ae2d7390e
revlog: demonstrate a bug where transaction can be aborted partially
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
47875
diff
changeset
|
201 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
|
202 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
|
203 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
204 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
|
205 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
206 $ 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
|
207 data/file.i 1174 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
208 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
|
209 $ cat .hg/store/journal.backupfiles | tr -s '\000' ' ' | tr -s '\00' ' '| grep data/file |
50465
63dc24be635d
transaction: use a ".bck" extension for all backup file
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50366
diff
changeset
|
210 data/file.i data/journal.backup.file.i.bck 0 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
211 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
|
212 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
213 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
|
214 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
215 $ hg recover |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
216 rolling back interrupted transaction |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
217 (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
|
218 $ 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
|
219 .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
|
220 $ 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
|
221 changeset: 1:cc8dfb126534 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
222 tag: tip |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
223 user: test |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
224 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
|
225 summary: b |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
226 |
47874
308e843f24b1
test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47561
diff
changeset
|
227 $ 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
|
228 $ 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
|
229 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
|
230 $ hg verify -q |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
231 $ cd .. |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
232 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
233 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
|
234 =========================================================== |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
235 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
236 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
|
237 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
|
238 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
|
239 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
240 $ 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
|
241 $ cd troffset-computation-copy2 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
242 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
243 Reference size: |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
244 $ f -s file |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
245 file: size=1024 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
246 $ 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
|
247 .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
|
248 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
249 $ cat > .hg/hgrc <<EOF |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
250 > [extensions] |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
251 > 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
|
252 > EOF |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
253 #if chg |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
254 $ hg pull ../troffset-computation |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
255 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
|
256 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
257 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
258 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
259 adding file changes |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
260 [255] |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
261 #else |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
262 $ hg pull ../troffset-computation |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
263 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
|
264 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
265 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
266 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
267 adding file changes |
50334
2231f7d8a602
test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents:
50316
diff
changeset
|
268 *Killed* (glob) |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
269 [137] |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
270 #endif |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
271 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
272 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
|
273 |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
274 $ 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
|
275 .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
|
276 .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
|
277 .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
|
278 |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
279 $ 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
|
280 data/file.i 1174 |
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
281 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
|
282 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
283 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
|
284 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
285 $ hg recover |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
286 rolling back interrupted transaction |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
287 (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
|
288 $ 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
|
289 .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
|
290 $ 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
|
291 changeset: 1:cc8dfb126534 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
292 tag: tip |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
293 user: test |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
294 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
|
295 summary: b |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
296 |
47874
308e843f24b1
test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47561
diff
changeset
|
297 $ hg verify -q |
47285
46b828b85eb7
revlog: update data file record before index rename
Joerg Sonnenberger <joerg@bec.de>
parents:
47284
diff
changeset
|
298 $ cd .. |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
299 |
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
|
300 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
|
301 =========================================================== |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
302 |
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 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
|
304 |
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 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
|
306 $ 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
|
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 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
|
309 $ 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
|
310 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
|
311 $ 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
|
312 .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
|
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 $ 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
|
315 > [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
|
316 > 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
|
317 > 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
|
318 #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
|
319 $ 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
|
320 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
|
321 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
322 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
323 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
324 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
|
325 [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
|
326 #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
|
327 $ 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
|
328 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
|
329 searching for changes |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
330 adding changesets |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
331 adding manifests |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
332 adding file changes |
50334
2231f7d8a602
test-tx-rollback: more lenient glob for kill status (issue6807)
pacien <pacien.trangirard@pacien.net>
parents:
50316
diff
changeset
|
333 *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
|
334 [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
|
335 #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
|
336 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
337 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
|
338 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
339 $ 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
|
340 .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
|
341 .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
|
342 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
343 $ 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
|
344 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
|
345 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
|
346 |
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
347 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
|
348 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
349 $ 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
|
350 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
|
351 (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
|
352 $ 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
|
353 .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
|
354 $ 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
|
355 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
|
356 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
|
357 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
|
358 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
|
359 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
|
360 |
c185545a4c69
revlog: add a failing variant of the the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50311
diff
changeset
|
361 $ 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
|
362 $ 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
|
363 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
364 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
|
365 =========================================================== |
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
366 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
367 |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
368 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
|
369 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
370 $ 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
|
371 $ cd troffset-computation-copy-rb |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
372 $ cat > .hg/hgrc <<EOF |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
373 > [hooks] |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
374 > pretxnchangegroup = false |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
375 > EOF |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
376 $ hg pull ../troffset-computation |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
377 pulling from ../troffset-computation |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
378 searching for changes |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
379 adding changesets |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
380 adding manifests |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
381 adding file changes |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
382 transaction abort! |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
383 rollback completed |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
384 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
|
385 [40] |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
386 |
50316
87f0155d68aa
revlog: improve the robustness of the splitting process
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50314
diff
changeset
|
387 The split was rollback |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
388 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
389 $ 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
|
390 .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
|
391 .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
|
392 |
50311
e2ba2234bf1c
revlog: update the split + transaction test
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48571
diff
changeset
|
393 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
394 $ 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
|
395 changeset: 1:cc8dfb126534 |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
396 tag: tip |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
397 user: test |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
398 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
|
399 summary: b |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
400 |
47874
308e843f24b1
test: reduce noise, so the important bits stand out
Valentin Gatien-Baron <vgatien-baron@janestreet.com>
parents:
47561
diff
changeset
|
401 $ hg verify -q |
47286
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
402 $ cd .. |
18415fc918a1
recover: only apply last journal record per file (issue6423)
Joerg Sonnenberger <joerg@bec.de>
parents:
47285
diff
changeset
|
403 |
50313
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
404 Read race |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
405 ========= |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
406 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
407 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
|
408 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
|
409 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
410 $ 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
|
411 $ 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
|
412 $ 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
|
413 > [hooks] |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
414 > 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
|
415 > pretxnclose = false |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
416 > EOF |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
417 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
418 start a reader |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
419 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
420 $ 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
|
421 > --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
|
422 > 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
|
423 > > $TESTTMP/reader.stdout & |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
424 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
425 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
|
426 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
427 $ 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
|
428 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
|
429 searching for changes |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
430 adding changesets |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
431 adding manifests |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
432 adding file changes |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
433 transaction abort! |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
434 rollback completed |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
435 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
|
436 [40] |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
437 $ 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
|
438 $ wait |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
439 |
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
440 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
|
441 $ 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
|
442 $ 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
|
443 1 (no-eol) |
50466
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
444 |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
445 $ hg verify -q |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
446 |
50313
b0cdd0bea103
revlog: test possible read race condition with splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50312
diff
changeset
|
447 $ 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
|
448 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
449 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
|
450 ============= |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
451 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
452 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
|
453 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
454 $ 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
|
455 $ 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
|
456 $ 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
|
457 > [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
|
458 > 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
|
459 > 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
|
460 > 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
|
461 > 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
|
462 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
463 $ ( |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
464 > $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
|
465 > 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
|
466 > 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
|
467 > ) >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
|
468 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
469 $ 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
|
470 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
|
471 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
|
472 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
|
473 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
|
474 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
|
475 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
|
476 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
|
477 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
|
478 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
|
479 [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
|
480 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
481 $ 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
|
482 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
|
483 $ 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
|
484 |
50466
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
485 $ hg verify -q |
fa78e8727a2d
revlog-split: expand the some test to cover the success case too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50465
diff
changeset
|
486 |
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
|
487 |
6487737e0f00
revlog: test that pending hooks properly see the repository on split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50313
diff
changeset
|
488 $ cd .. |