annotate tests/test-clone-stream-revlog-split.t @ 50641:5460424092e2

stream-clone: smoothly detect and handle a case were a revlog is split This detect and handle the most common case for a race condition around stream and revlog splitting. The one were the revlog is split between the initial collection of data and the time were we start considering stream that data. In such case, we repatch an inlined version of that revlog together when this happens. This is necessary as stream-v2 promised a specific number of bytes and a specific number of files to the client. In stream-v3, we will have the opportunity to just send a split revlog instead. Getting a better version of the protocol for stream-v3 is still useful, but it is no longer a blocket to fix that race condition. Note that another, rarer race condition exist, were the revlog is split while we creating the revlog and extracing content from it. This can be dealt with later.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 29 May 2023 18:41:58 +0200
parents 9caa860dcbec
children 0452af304808
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
1 Test stream cloning while a revlog split happens
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
2 ------------------------------------------------
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
3
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
4 #testcases stream-bundle2-v2 stream-bundle2-v3
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
5
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
6 #if stream-bundle2-v3
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
7 $ cat << EOF >> $HGRCPATH
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
8 > [experimental]
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
9 > stream-v3 = yes
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
10 > EOF
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
11 #endif
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
12
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
13 setup a repository for tests
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
14 ----------------------------
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
15
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
16 $ cat >> $HGRCPATH << EOF
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
17 > [format]
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
18 > # skip compression to make it easy to trigger a split
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
19 > revlog-compression=none
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
20 > [phases]
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
21 > publish=no
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
22 > EOF
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
23
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
24 $ hg init server
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
25 $ cd server
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
26 $ file="some-file"
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
27 $ printf '%20d' '1' > $file
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
28 $ hg commit -Aqma
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
29 $ printf '%1024d' '1' > $file
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
30 $ hg commit -Aqmb
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
31 $ printf '%20d' '1' > $file
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
32 $ hg commit -Aqmc
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
33
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
34 check the revlog is inline
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
35
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
36 $ f -s .hg/store/data/some-file*
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
37 .hg/store/data/some-file.i: size=1259
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
38 $ hg debug-revlog-index some-file
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
39 rev linkrev nodeid p1-nodeid p2-nodeid
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
40 0 0 ed70cecbc103 000000000000 000000000000
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
41 1 1 7241018db64c ed70cecbc103 000000000000
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
42 2 2 fa1120531cc1 7241018db64c 000000000000
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
43 $ cd ..
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
44
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
45 setup synchronisation file
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
46
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
47 $ HG_TEST_STREAM_WALKED_FILE_1="$TESTTMP/sync_file_walked_1"
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
48 $ export HG_TEST_STREAM_WALKED_FILE_1
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
49 $ HG_TEST_STREAM_WALKED_FILE_2="$TESTTMP/sync_file_walked_2"
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
50 $ export HG_TEST_STREAM_WALKED_FILE_2
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
51 $ HG_TEST_STREAM_WALKED_FILE_3="$TESTTMP/sync_file_walked_3"
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
52 $ export HG_TEST_STREAM_WALKED_FILE_3
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
53
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
54
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
55 Test stream-clone raced by a revlog-split
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
56 =========================================
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
57
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
58 Test stream-clone where the file is split right after the lock section is done
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
59
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
60 Start the server
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
61
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
62 $ hg serve -R server \
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
63 > -p $HGPORT1 -d --error errors.log --pid-file=hg.pid \
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
64 > --config extensions.stream_steps="$RUNTESTDIR/testlib/ext-stream-clone-steps.py"
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
65 $ cat hg.pid >> $DAEMON_PIDS
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
66
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
67 Start a client doing a streaming clone
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
68
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
69 $ ( \
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
70 > hg clone --debug --stream -U http://localhost:$HGPORT1 \
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
71 > clone-while-split > client.log 2>&1; \
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
72 > touch "$HG_TEST_STREAM_WALKED_FILE_3" \
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
73 > ) &
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
74
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
75 Wait for the server to be done collecting data
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
76
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
77 $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_1
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
78
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
79 trigger a split
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
80
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
81 $ dd if=/dev/zero of=server/$file bs=1k count=128 > /dev/null 2>&1
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
82 $ hg -R server ci -m "triggering a split" --config ui.timeout.warn=-1
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
83
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
84 unlock the stream generation
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
85
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
86 $ touch $HG_TEST_STREAM_WALKED_FILE_2
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
87
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
88 wait for the client to be done cloning.
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
89
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
90 $ $RUNTESTDIR/testlib/wait-on-file 10 $HG_TEST_STREAM_WALKED_FILE_3
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
91
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
92 Check everything is fine
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
93
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
94 $ cat client.log
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
95 using http://localhost:$HGPORT1/
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
96 sending capabilities command
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
97 query 1; heads
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
98 sending batch command
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
99 streaming all changes
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
100 sending getbundle command
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
101 bundle2-input-bundle: with-transaction
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
102 bundle2-input-part: "stream2" (params: 3 mandatory) supported (stream-bundle2-v2 !)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
103 bundle2-input-part: "stream3-exp" (params: 3 mandatory) supported (stream-bundle2-v3 !)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
104 applying stream bundle
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
105 7 files to transfer, 2.11 KB of data
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
106 adding [s] data/some-file.i (1.23 KB)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
107 adding [s] phaseroots (43 bytes)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
108 adding [s] 00manifest.i (348 bytes)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
109 adding [s] 00changelog.i (381 bytes)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
110 adding [c] branch2-served (94 bytes)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
111 adding [c] rbc-names-v1 (7 bytes)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
112 adding [c] rbc-revs-v1 (24 bytes)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
113 updating the branch cache
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
114 transferred 2.11 KB in * seconds (* */sec) (glob)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
115 bundle2-input-part: total payload size 2268
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
116 bundle2-input-part: "listkeys" (params: 1 mandatory) supported
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
117 bundle2-input-bundle: 2 parts total
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
118 checking for updated bookmarks
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
119 updating the branch cache
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
120 (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob)
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
121 $ tail -2 errors.log
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
122 $ hg -R clone-while-split verify
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
123 checking changesets
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
124 checking manifests
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
125 crosschecking files in changesets and manifests
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
126 checking files
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
127 checking dirstate
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
128 checked 3 changesets with 3 changes to 1 files
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
129 $ hg -R clone-while-split tip
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
130 changeset: 2:dbd9854c38a6
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
131 tag: tip
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
132 user: test
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
133 date: Thu Jan 01 00:00:00 1970 +0000
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
134 summary: c
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
135
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
136 $ hg -R clone-while-split debug-revlog-index some-file
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
137 rev linkrev nodeid p1-nodeid p2-nodeid
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
138 0 0 ed70cecbc103 000000000000 000000000000
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
139 1 1 7241018db64c ed70cecbc103 000000000000
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
140 2 2 fa1120531cc1 7241018db64c 000000000000
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
141 $ hg -R server phase --rev 'all()'
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
142 0: draft
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
143 1: draft
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
144 2: draft
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
145 3: draft
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
146 $ hg -R clone-while-split phase --rev 'all()'
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
147 0: draft
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
148 1: draft
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
149 2: draft
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
150
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
151 subsequent pull work
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
152
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
153 $ hg -R clone-while-split pull
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
154 pulling from http://localhost:$HGPORT1/
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
155 searching for changes
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
156 adding changesets
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
157 adding manifests
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
158 adding file changes
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
159 added 1 changesets with 1 changes to 1 files
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
160 new changesets df05c6cb1406 (1 drafts)
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
161 (run 'hg update' to get a working copy)
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
162
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
163 $ hg -R clone-while-split debug-revlog-index some-file
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
164 rev linkrev nodeid p1-nodeid p2-nodeid
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
165 0 0 ed70cecbc103 000000000000 000000000000
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
166 1 1 7241018db64c ed70cecbc103 000000000000
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
167 2 2 fa1120531cc1 7241018db64c 000000000000
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
168 3 3 a631378adaa3 fa1120531cc1 000000000000
50626
9b0fe2b075b5 stream-clone: add a test that highlight crash on revlog splitting
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
169 $ hg -R clone-while-split verify
50641
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
170 checking changesets
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
171 checking manifests
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
172 crosschecking files in changesets and manifests
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
173 checking files
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
174 checking dirstate
5460424092e2 stream-clone: smoothly detect and handle a case were a revlog is split
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 50640
diff changeset
175 checked 4 changesets with 4 changes to 1 files