Mercurial > hg
comparison tests/test-transaction-rollback-on-revlog-split.t @ 50686:a41eeb877d07
branching: merge with stable
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 18 Jun 2023 00:09:39 +0200 |
parents | 12f13b13f414 |
children | 5c3d07950bac 5d77a6f37fe1 |
comparison
equal
deleted
inserted
replaced
50685:b9a355763e76 | 50686:a41eeb877d07 |
---|---|
82 $ files=" | 82 $ files=" |
83 > file | 83 > file |
84 > Directory_With,Special%Char/Complex_File.babar | 84 > Directory_With,Special%Char/Complex_File.babar |
85 > foo/bar/babar_celeste/foo | 85 > foo/bar/babar_celeste/foo |
86 > 1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/f | 86 > 1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/f |
87 > some_dir/sub_dir/foo_bar | |
88 > some_dir/sub_dir/foo_bar.i.s/tutu | |
87 > " | 89 > " |
88 $ for f in $files; do | 90 $ for f in $files; do |
89 > mkdir -p `dirname $f` | 91 > mkdir -p `dirname $f` |
90 > done | 92 > done |
91 $ for f in $files; do | 93 $ for f in $files; do |
100 > printf '%20d' '1' > $f | 102 > printf '%20d' '1' > $f |
101 > done | 103 > done |
102 $ hg commit -Aqmc | 104 $ hg commit -Aqmc |
103 $ for f in $files; do | 105 $ for f in $files; do |
104 > dd if=/dev/zero of=$f bs=1k count=128 > /dev/null 2>&1 | 106 > dd if=/dev/zero of=$f bs=1k count=128 > /dev/null 2>&1 |
107 > done | |
108 $ hg commit -AqmD --traceback | |
109 $ for f in $files; do | |
110 > dd if=/dev/zero of=$f bs=1k count=132 > /dev/null 2>&1 | |
105 > done | 111 > done |
106 $ hg commit -AqmD --traceback | 112 $ hg commit -AqmD --traceback |
107 | 113 |
108 Reference size: | 114 Reference size: |
109 $ f -s file | 115 $ f -s file |
110 file: size=131072 | 116 file: size=135168 |
111 $ f -s .hg/store/data/file* | 117 $ f -s .hg/store/data*/file* |
112 .hg/store/data/file.d: size=132139 | 118 .hg/store/data/file.d: size=267307 |
113 .hg/store/data/file.i: size=256 | 119 .hg/store/data/file.i: size=320 |
114 | 120 |
115 $ cd .. | 121 $ cd .. |
116 | 122 |
117 Test a succesful pull | 123 Test a succesful pull |
118 ===================== | 124 ===================== |
132 pulling from ../troffset-computation | 138 pulling from ../troffset-computation |
133 searching for changes | 139 searching for changes |
134 adding changesets | 140 adding changesets |
135 adding manifests | 141 adding manifests |
136 adding file changes | 142 adding file changes |
137 added 2 changesets with 8 changes to 4 files | 143 added 3 changesets with 18 changes to 6 files |
138 new changesets 16a630ece54e:8437c461d70a | 144 new changesets c99a94cae9b1:64874a3b0160 |
139 (run 'hg update' to get a working copy) | 145 (run 'hg update' to get a working copy) |
140 | 146 |
141 | 147 |
142 The inline revlog has been replaced | 148 The inline revlog has been replaced |
143 | 149 |
144 $ f -s .hg/store/data/file* | 150 $ f -s .hg/store/data/file* |
145 .hg/store/data/file.d: size=132139 | 151 .hg/store/data/file.d: size=267307 |
146 .hg/store/data/file.i: size=256 | 152 .hg/store/data/file.i: size=320 |
147 | 153 |
148 | 154 |
149 $ hg verify -q | 155 $ hg verify -q |
150 $ cd .. | 156 $ cd .. |
151 | 157 |
169 $ cd troffset-computation-copy | 175 $ cd troffset-computation-copy |
170 | 176 |
171 Reference size: | 177 Reference size: |
172 $ f -s file | 178 $ f -s file |
173 file: size=1024 | 179 file: size=1024 |
174 $ f -s .hg/store/data/file* | 180 $ f -s .hg/store/data*/file* |
175 .hg/store/data/file.i: size=1174 | 181 .hg/store/data/file.i: size=1174 |
176 | 182 |
177 $ cat > .hg/hgrc <<EOF | 183 $ cat > .hg/hgrc <<EOF |
178 > [hooks] | 184 > [hooks] |
179 > pretxnchangegroup = python:$TESTTMP/killme.py:killme | 185 > pretxnchangegroup = python:$TESTTMP/killme.py:killme |
190 #endif | 196 #endif |
191 | 197 |
192 | 198 |
193 The inline revlog still exist, but a split version exist next to it | 199 The inline revlog still exist, but a split version exist next to it |
194 | 200 |
195 $ f -s .hg/store/data/file* | 201 $ cat .hg/store/journal | tr '\0' ' ' | grep '\.s' |
196 .hg/store/data/file.d: size=132139 | 202 data/some_dir/sub_dir/foo_bar.i.s/tutu.i 1174 |
203 data/some_dir/sub_dir/foo_bar.i.s/tutu.d 0 | |
204 $ f -s .hg/store/data*/file* | |
205 .hg/store/data-s/file: size=320 | |
206 .hg/store/data/file.d: size=267307 | |
197 .hg/store/data/file.i: size=132395 | 207 .hg/store/data/file.i: size=132395 |
198 .hg/store/data/file.i.s: size=256 | |
199 | 208 |
200 | 209 |
201 The first file.i entry should match the "Reference size" above. | 210 The first file.i entry should match the "Reference size" above. |
202 The first file.d entry is the temporary record during the split, | 211 The first file.d entry is the temporary record during the split, |
203 | 212 |
204 A "temporary file" entry exist for the split index. | 213 A "temporary file" entry exist for the split index. |
205 | 214 |
206 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file | 215 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file |
207 data/file.i 1174 | 216 data/file.i 1174 |
208 data/file.d 0 | 217 data/file.d 0 |
209 $ cat .hg/store/journal.backupfiles | tr -s '\000' ' ' | tr -s '\00' ' '| grep data/file | 218 $ cat .hg/store/journal.backupfiles | tr -s '\000' ' ' | tr -s '\00' ' '| grep 'data.*/file' |
210 data/file.i data/journal.backup.file.i.bck 0 | 219 data/file.i data/journal.backup.file.i.bck 0 |
211 data/file.i.s 0 | 220 data-s/file 0 |
212 | 221 |
213 recover is rolling the split back, the fncache is still valid | 222 recover is rolling the split back, the fncache is still valid |
214 | 223 |
215 $ hg recover | 224 $ hg recover |
216 rolling back interrupted transaction | 225 rolling back interrupted transaction |
217 (verify step skipped, run `hg verify` to check your repository content) | 226 (verify step skipped, run `hg verify` to check your repository content) |
218 $ f -s .hg/store/data/file* | 227 $ f -s .hg/store/data*/file* |
219 .hg/store/data/file.i: size=1174 | 228 .hg/store/data/file.i: size=1174 |
220 $ hg tip | 229 $ hg tip |
221 changeset: 1:cc8dfb126534 | 230 changeset: 1:64b04c8dc267 |
222 tag: tip | 231 tag: tip |
223 user: test | 232 user: test |
224 date: Thu Jan 01 00:00:00 1970 +0000 | 233 date: Thu Jan 01 00:00:00 1970 +0000 |
225 summary: b | 234 summary: b |
226 | 235 |
241 $ cd troffset-computation-copy2 | 250 $ cd troffset-computation-copy2 |
242 | 251 |
243 Reference size: | 252 Reference size: |
244 $ f -s file | 253 $ f -s file |
245 file: size=1024 | 254 file: size=1024 |
246 $ f -s .hg/store/data/file* | 255 $ f -s .hg/store/data*/file* |
247 .hg/store/data/file.i: size=1174 | 256 .hg/store/data/file.i: size=1174 |
248 | 257 |
249 $ cat > .hg/hgrc <<EOF | 258 $ cat > .hg/hgrc <<EOF |
250 > [extensions] | 259 > [extensions] |
251 > intercept_rename = $TESTTMP/intercept_before_rename.py | 260 > intercept_rename = $TESTTMP/intercept_before_rename.py |
269 [137] | 278 [137] |
270 #endif | 279 #endif |
271 | 280 |
272 The inline revlog still exist, but a split version exist next to it | 281 The inline revlog still exist, but a split version exist next to it |
273 | 282 |
274 $ f -s .hg/store/data/file* | 283 $ f -s .hg/store/data*/file* |
275 .hg/store/data/file.d: size=132139 | 284 .hg/store/data-s/file: size=320 |
285 .hg/store/data/file.d: size=267307 | |
276 .hg/store/data/file.i: size=132395 | 286 .hg/store/data/file.i: size=132395 |
277 .hg/store/data/file.i.s: size=256 | 287 |
278 | 288 $ cat .hg/store/journal | tr -s '\000' ' ' | grep 'data.*/file' |
279 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file | |
280 data/file.i 1174 | 289 data/file.i 1174 |
281 data/file.d 0 | 290 data/file.d 0 |
282 | 291 |
283 recover is rolling the split back, the fncache is still valid | 292 recover is rolling the split back, the fncache is still valid |
284 | 293 |
285 $ hg recover | 294 $ hg recover |
286 rolling back interrupted transaction | 295 rolling back interrupted transaction |
287 (verify step skipped, run `hg verify` to check your repository content) | 296 (verify step skipped, run `hg verify` to check your repository content) |
288 $ f -s .hg/store/data/file* | 297 $ f -s .hg/store/data*/file* |
289 .hg/store/data/file.i: size=1174 | 298 .hg/store/data/file.i: size=1174 |
290 $ hg tip | 299 $ hg tip |
291 changeset: 1:cc8dfb126534 | 300 changeset: 1:64b04c8dc267 |
292 tag: tip | 301 tag: tip |
293 user: test | 302 user: test |
294 date: Thu Jan 01 00:00:00 1970 +0000 | 303 date: Thu Jan 01 00:00:00 1970 +0000 |
295 summary: b | 304 summary: b |
296 | 305 |
306 $ cd troffset-computation-crash-after-rename | 315 $ cd troffset-computation-crash-after-rename |
307 | 316 |
308 Reference size: | 317 Reference size: |
309 $ f -s file | 318 $ f -s file |
310 file: size=1024 | 319 file: size=1024 |
311 $ f -s .hg/store/data/file* | 320 $ f -s .hg/store/data*/file* |
312 .hg/store/data/file.i: size=1174 | 321 .hg/store/data/file.i: size=1174 |
313 | 322 |
314 $ cat > .hg/hgrc <<EOF | 323 $ cat > .hg/hgrc <<EOF |
315 > [extensions] | 324 > [extensions] |
316 > intercept_rename = $TESTTMP/intercept_after_rename.py | 325 > intercept_rename = $TESTTMP/intercept_after_rename.py |
334 [137] | 343 [137] |
335 #endif | 344 #endif |
336 | 345 |
337 The inline revlog was over written on disk | 346 The inline revlog was over written on disk |
338 | 347 |
339 $ f -s .hg/store/data/file* | 348 $ f -s .hg/store/data*/file* |
340 .hg/store/data/file.d: size=132139 | 349 .hg/store/data/file.d: size=267307 |
341 .hg/store/data/file.i: size=256 | 350 .hg/store/data/file.i: size=320 |
342 | 351 |
343 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file | 352 $ cat .hg/store/journal | tr -s '\000' ' ' | grep 'data.*/file' |
344 data/file.i 1174 | 353 data/file.i 1174 |
345 data/file.d 0 | 354 data/file.d 0 |
346 | 355 |
347 recover is rolling the split back, the fncache is still valid | 356 recover is rolling the split back, the fncache is still valid |
348 | 357 |
349 $ hg recover | 358 $ hg recover |
350 rolling back interrupted transaction | 359 rolling back interrupted transaction |
351 (verify step skipped, run `hg verify` to check your repository content) | 360 (verify step skipped, run `hg verify` to check your repository content) |
352 $ f -s .hg/store/data/file* | 361 $ f -s .hg/store/data*/file* |
353 .hg/store/data/file.i: size=1174 | 362 .hg/store/data/file.i: size=1174 |
354 $ hg tip | 363 $ hg tip |
355 changeset: 1:cc8dfb126534 | 364 changeset: 1:64b04c8dc267 |
356 tag: tip | 365 tag: tip |
357 user: test | 366 user: test |
358 date: Thu Jan 01 00:00:00 1970 +0000 | 367 date: Thu Jan 01 00:00:00 1970 +0000 |
359 summary: b | 368 summary: b |
360 | 369 |
384 abort: pretxnchangegroup hook exited with status 1 | 393 abort: pretxnchangegroup hook exited with status 1 |
385 [40] | 394 [40] |
386 | 395 |
387 The split was rollback | 396 The split was rollback |
388 | 397 |
389 $ f -s .hg/store/data/file* | 398 $ f -s .hg/store/data*/file* |
390 .hg/store/data/file.d: size=0 | 399 .hg/store/data/file.d: size=0 |
391 .hg/store/data/file.i: size=1174 | 400 .hg/store/data/file.i: size=1174 |
392 | 401 |
393 | 402 |
394 $ hg tip | 403 $ hg tip |
395 changeset: 1:cc8dfb126534 | 404 changeset: 1:64b04c8dc267 |
396 tag: tip | 405 tag: tip |
397 user: test | 406 user: test |
398 date: Thu Jan 01 00:00:00 1970 +0000 | 407 date: Thu Jan 01 00:00:00 1970 +0000 |
399 summary: b | 408 summary: b |
400 | 409 |
470 pulling from ../troffset-computation | 479 pulling from ../troffset-computation |
471 searching for changes | 480 searching for changes |
472 adding changesets | 481 adding changesets |
473 adding manifests | 482 adding manifests |
474 adding file changes | 483 adding file changes |
475 size=131072 | 484 size=135168 |
476 transaction abort! | 485 transaction abort! |
477 rollback completed | 486 rollback completed |
478 abort: pretxnclose.03-abort hook exited with status 1 | 487 abort: pretxnclose.03-abort hook exited with status 1 |
479 [40] | 488 [40] |
480 | 489 |