##// 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 s = fp.read()
134 s = fp.read()
135 fp.close()
135 fp.close()
136 os.unlink(tmpname)
136 os.unlink(tmpname)
137 del self.tmpnames[name]
137 fp = self.realopener(name, 'a')
138 fp = self.realopener(name, 'a')
138 fp.write(s)
139 fp.write(s)
139 fp.close()
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 # files for changelog and manifest are in different appendopeners, so
147 # files for changelog and manifest are in different appendopeners, so
142 # not mixed up together.
148 # not mixed up together.
143
149
@@ -1477,6 +1477,8 b' class localrepository(object):'
1477
1477
1478 # write changelog and manifest data to temp files so
1478 # write changelog and manifest data to temp files so
1479 # concurrent readers will not see inconsistent view
1479 # concurrent readers will not see inconsistent view
1480 cl = None
1481 try:
1480 cl = appendfile.appendchangelog(self.opener, self.changelog.version)
1482 cl = appendfile.appendchangelog(self.opener, self.changelog.version)
1481
1483
1482 oldheads = len(cl.heads())
1484 oldheads = len(cl.heads())
@@ -1491,7 +1493,10 b' class localrepository(object):'
1491 cnr = cor
1493 cnr = cor
1492 changesets = cnr - cor
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 # pull off the manifest group
1501 # pull off the manifest group
1497 self.ui.status(_("adding manifests\n"))
1502 self.ui.status(_("adding manifests\n"))
@@ -1516,7 +1521,13 b' class localrepository(object):'
1516 # write order here is important so concurrent readers will see
1521 # write order here is important so concurrent readers will see
1517 # consistent view of repo
1522 # consistent view of repo
1518 mf.writedata()
1523 mf.writedata()
1524 finally:
1525 if mf:
1526 mf.cleanup()
1519 cl.writedata()
1527 cl.writedata()
1528 finally:
1529 if cl:
1530 cl.cleanup()
1520
1531
1521 # make changelog and manifest see real files again
1532 # make changelog and manifest see real files again
1522 self.changelog = changelog.changelog(self.opener, self.changelog.version)
1533 self.changelog = changelog.changelog(self.opener, self.changelog.version)
General Comments 0
You need to be logged in to leave comments. Login now