annotate templates/index.tmpl @ 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 a33a7a543803
children d1943df604c4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
941
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
1 #header#
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
2 <title>Mercurial repositories index</title>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
3 </head>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
4 <body>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
5
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
6 <h2>Mercurial Repositories</h2>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
7
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
8 <table>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
9 <tr>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
10 <td>Name</td>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
11 <td>Description</td>
1070
b55c6685c953 hgwebdir index: change "author" to "contact"
mpm@selenic.com
parents: 982
diff changeset
12 <td>Contact</td>
941
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
13 <td>Last change</td>
1125
a33a7a543803 Add RSS link to the repository index.
Ollivier Robert <roberto@keltia.freenix.fr>
parents: 1070
diff changeset
14 <td>&nbsp;</td>
941
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
15 <tr>
982
8d2e24bae760 hgweb: convert index entries to list expansion style
mpm@selenic.com
parents: 941
diff changeset
16 #entries%indexentry#
941
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
17 </table>
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
18
4cf418c2a013 Add a multi-repository server
mpm@selenic.com
parents:
diff changeset
19 #footer#