Mercurial > hg > mercurial-crew-with-dirclash
annotate .hgtags @ 1998:65cc17ae9649
fix race in localrepo.addchangegroup.
localrepo.addchangegroup writes to changelog, then manifest, then normal
files. this breaks access ordering. if reader reads changelog while
manifest is being written, can find pointers into places in manifest
that are not yet written. same can happen for manifest and normal files.
fix is to make almost no change to localrepo.addchangegroup. it must
to write changelog and manifest data early because it has to read them
while writing other files. instead, write changelog and manifest data
to temp file that reader cannot see, then append temp data to manifest
after all normal files written, finally append temp data to changelog.
temp file code is in new appendfile module. can be used in other places
with small changes.
much smaller race still left. we write all new data in one write call,
but reader can maybe see partial update because python or os or filesystem
cannot always make write really atomic. file locking no help: slow, not
portable, not reliable over nfs. only real safe other plan is write to
temp file every time and rename, but performance bad when manifest or
changelog is big.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Fri, 24 Mar 2006 09:08:12 -0800 |
parents | 0fc1b588976f |
children | c0b945c5df08 |
rev | line source |
---|---|
66 | 1 d40cc5aacc31ed673d9b5b24f98bee78c283062c 0.4f |
2 1c590d34bf61e2ea12c71738e5a746cd74586157 0.4e | |
3 7eca4cfa8aad5fce9a04f7d8acadcd0452e2f34e 0.4d | |
4 b4d0c3786ad3e47beacf8412157326a32b6d25a4 0.4c | |
189 | 5 f40273b0ad7b3a6d3012fd37736d0611f41ecf54 0.5 |
194 | 6 0a28dfe59f8fab54a5118c5be4f40da34a53cdb7 0.5b |
458
ff8fbf99cd64
Added tag 0.6 for changeset 12e0fdbc57a0be78f0e817fd1d170a3615cd35da
mpm@selenic.com
parents:
194
diff
changeset
|
7 12e0fdbc57a0be78f0e817fd1d170a3615cd35da 0.6 |
685
79fb7032739f
Added tag 0.6b for changeset 4ccf3de52989b14c3d84e1097f59e39a992e00bd
Matt Mackall <mpm@selenic.com>
parents:
458
diff
changeset
|
8 4ccf3de52989b14c3d84e1097f59e39a992e00bd 0.6b |
972
0bc72d91aeda
Added tag 0.6c for changeset eac9c8efcd9bd8244e72fb6821f769f450457a32
mpm@selenic.com
parents:
685
diff
changeset
|
9 eac9c8efcd9bd8244e72fb6821f769f450457a32 0.6c |
1266
703783bc09c4
Added tag 0.7 for changeset 979c049974485125e1f9357f6bbe9c1b548a64c3
mpm@selenic.com
parents:
981
diff
changeset
|
10 979c049974485125e1f9357f6bbe9c1b548a64c3 0.7 |
1666
0fc1b588976f
Added tag 0.8 for changeset 3a56574f329a368d645853e0f9e09472aee62349
Matt Mackall <mpm@selenic.com>
parents:
1266
diff
changeset
|
11 3a56574f329a368d645853e0f9e09472aee62349 0.8 |