##// END OF EJS Templates
Always remove appendopener tmp files (fixes issue235)....
Thomas Arendsen Hein -
r2232:ef3c039e default
parent child Browse files
Show More
@@ -134,10 +134,16 b' class appendopener(object):'
134 134 s = fp.read()
135 135 fp.close()
136 136 os.unlink(tmpname)
137 del self.tmpnames[name]
137 138 fp = self.realopener(name, 'a')
138 139 fp.write(s)
139 140 fp.close()
140 141
142 def cleanup(self):
143 '''delete temp files (this discards unwritten data!)'''
144 for tmpname in self.tmpnames.values():
145 os.unlink(tmpname)
146
141 147 # files for changelog and manifest are in different appendopeners, so
142 148 # not mixed up together.
143 149
@@ -1477,6 +1477,8 b' class localrepository(object):'
1477 1477
1478 1478 # write changelog and manifest data to temp files so
1479 1479 # concurrent readers will not see inconsistent view
1480 cl = None
1481 try:
1480 1482 cl = appendfile.appendchangelog(self.opener, self.changelog.version)
1481 1483
1482 1484 oldheads = len(cl.heads())
@@ -1491,7 +1493,10 b' class localrepository(object):'
1491 1493 cnr = cor
1492 1494 changesets = cnr - cor
1493 1495
1494 mf = appendfile.appendmanifest(self.opener, self.manifest.version)
1496 mf = None
1497 try:
1498 mf = appendfile.appendmanifest(self.opener,
1499 self.manifest.version)
1495 1500
1496 1501 # pull off the manifest group
1497 1502 self.ui.status(_("adding manifests\n"))
@@ -1516,7 +1521,13 b' class localrepository(object):'
1516 1521 # write order here is important so concurrent readers will see
1517 1522 # consistent view of repo
1518 1523 mf.writedata()
1524 finally:
1525 if mf:
1526 mf.cleanup()
1519 1527 cl.writedata()
1528 finally:
1529 if cl:
1530 cl.cleanup()
1520 1531
1521 1532 # make changelog and manifest see real files again
1522 1533 self.changelog = changelog.changelog(self.opener, self.changelog.version)
General Comments 0
You need to be logged in to leave comments. Login now