##// END OF EJS Templates
revlog: simplify the try nesting in the `_writing` context...
marmoute -
r48118:1844a2e3 default
parent child Browse files
Show More
@@ -2232,41 +2232,43 b' class revlog(object):'
2232 2232 if self._writinghandles is not None:
2233 2233 yield
2234 2234 else:
2235 r = len(self)
2236 dsize = 0
2237 if r:
2238 dsize = self.end(r - 1)
2239 dfh = None
2240 if not self._inline:
2241 try:
2242 dfh = self._datafp(b"r+")
2243 if self._docket is None:
2244 dfh.seek(0, os.SEEK_END)
2245 else:
2246 dfh.seek(self._docket.data_end, os.SEEK_SET)
2247 except IOError as inst:
2248 if inst.errno != errno.ENOENT:
2249 raise
2250 dfh = self._datafp(b"w+")
2251 transaction.add(self._datafile, dsize)
2235 ifh = dfh = None
2252 2236 try:
2237 r = len(self)
2238 # opening the data file.
2239 dsize = 0
2240 if r:
2241 dsize = self.end(r - 1)
2242 dfh = None
2243 if not self._inline:
2244 try:
2245 dfh = self._datafp(b"r+")
2246 if self._docket is None:
2247 dfh.seek(0, os.SEEK_END)
2248 else:
2249 dfh.seek(self._docket.data_end, os.SEEK_SET)
2250 except IOError as inst:
2251 if inst.errno != errno.ENOENT:
2252 raise
2253 dfh = self._datafp(b"w+")
2254 transaction.add(self._datafile, dsize)
2255
2256 # opening the index file.
2253 2257 isize = r * self.index.entry_size
2254 2258 ifh = self.__index_write_fp()
2255 2259 if self._inline:
2256 2260 transaction.add(self._indexfile, dsize + isize)
2257 2261 else:
2258 2262 transaction.add(self._indexfile, isize)
2259 try:
2260 self._writinghandles = (ifh, dfh)
2261 try:
2262 yield
2263 if self._docket is not None:
2264 self._write_docket(transaction)
2265 finally:
2266 self._writinghandles = None
2267 finally:
2263 # exposing all file handle for writing.
2264 self._writinghandles = (ifh, dfh)
2265 yield
2266 if self._docket is not None:
2267 self._write_docket(transaction)
2268 finally:
2269 self._writinghandles = None
2270 if ifh is not None:
2268 2271 ifh.close()
2269 finally:
2270 2272 if dfh is not None:
2271 2273 dfh.close()
2272 2274
General Comments 0
You need to be logged in to leave comments. Login now