##// END OF EJS Templates
revlog: fix a bug in revlog splitting...
Arseniy Alekseyev -
r51535:05d429fe stable
parent child Browse files
Show More
@@ -290,6 +290,8 b' class transaction(util.transactional):'
290 self._backupjournal = b"%s.backupfiles" % self._journal
290 self._backupjournal = b"%s.backupfiles" % self._journal
291 self._backupsfile = opener.open(self._backupjournal, b'w')
291 self._backupsfile = opener.open(self._backupjournal, b'w')
292 self._backupsfile.write(b'%d\n' % version)
292 self._backupsfile.write(b'%d\n' % version)
293 # the set of temporary files
294 self._tmp_files = set()
293
295
294 if createmode is not None:
296 if createmode is not None:
295 opener.chmod(self._journal, createmode & 0o666)
297 opener.chmod(self._journal, createmode & 0o666)
@@ -354,6 +356,7 b' class transaction(util.transactional):'
354 file in self._newfiles
356 file in self._newfiles
355 or file in self._offsetmap
357 or file in self._offsetmap
356 or file in self._backupmap
358 or file in self._backupmap
359 or file in self._tmp_files
357 ):
360 ):
358 return
361 return
359 if self._queue:
362 if self._queue:
@@ -368,6 +371,7 b' class transaction(util.transactional):'
368 file in self._newfiles
371 file in self._newfiles
369 or file in self._offsetmap
372 or file in self._offsetmap
370 or file in self._backupmap
373 or file in self._backupmap
374 or file in self._tmp_files
371 ):
375 ):
372 return
376 return
373 if offset:
377 if offset:
@@ -439,6 +443,7 b' class transaction(util.transactional):'
439 Such files will be deleted when the transaction exits (on both
443 Such files will be deleted when the transaction exits (on both
440 failure and success).
444 failure and success).
441 """
445 """
446 self._tmp_files.add(tmpfile)
442 self._addbackupentry((location, b'', tmpfile, False))
447 self._addbackupentry((location, b'', tmpfile, False))
443
448
444 @active
449 @active
@@ -104,13 +104,17 b' setup a repository for tests'
104 > dd if=/dev/zero of=$f bs=1k count=128 > /dev/null 2>&1
104 > dd if=/dev/zero of=$f bs=1k count=128 > /dev/null 2>&1
105 > done
105 > done
106 $ hg commit -AqmD --traceback
106 $ hg commit -AqmD --traceback
107 $ for f in $files; do
108 > dd if=/dev/zero of=$f bs=1k count=132 > /dev/null 2>&1
109 > done
110 $ hg commit -AqmD --traceback
107
111
108 Reference size:
112 Reference size:
109 $ f -s file
113 $ f -s file
110 file: size=131072
114 file: size=135168
111 $ f -s .hg/store/data/file*
115 $ f -s .hg/store/data/file*
112 .hg/store/data/file.d: size=132139
116 .hg/store/data/file.d: size=267307
113 .hg/store/data/file.i: size=256
117 .hg/store/data/file.i: size=320
114
118
115 $ cd ..
119 $ cd ..
116
120
@@ -157,10 +161,12 b' Reference size:'
157
161
158 The inline revlog still exist, but a split version exist next to it
162 The inline revlog still exist, but a split version exist next to it
159
163
164 $ cat .hg/store/journal | tr '\0' ' ' | grep '\.s'
165 [1]
160 $ f -s .hg/store/data/file*
166 $ f -s .hg/store/data/file*
161 .hg/store/data/file.d: size=132139
167 .hg/store/data/file.d: size=267307
162 .hg/store/data/file.i: size=132395
168 .hg/store/data/file.i: size=132395
163 .hg/store/data/file.i.s: size=256
169 .hg/store/data/file.i.s: size=320
164
170
165
171
166 The first file.i entry should match the "Reference size" above.
172 The first file.i entry should match the "Reference size" above.
@@ -237,9 +243,9 b' Reference size:'
237 The inline revlog still exist, but a split version exist next to it
243 The inline revlog still exist, but a split version exist next to it
238
244
239 $ f -s .hg/store/data/file*
245 $ f -s .hg/store/data/file*
240 .hg/store/data/file.d: size=132139
246 .hg/store/data/file.d: size=267307
241 .hg/store/data/file.i: size=132395
247 .hg/store/data/file.i: size=132395
242 .hg/store/data/file.i.s: size=256
248 .hg/store/data/file.i.s: size=320
243
249
244 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file
250 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file
245 data/file.i 1174
251 data/file.i 1174
@@ -302,8 +308,8 b' Reference size:'
302 The inline revlog was over written on disk
308 The inline revlog was over written on disk
303
309
304 $ f -s .hg/store/data/file*
310 $ f -s .hg/store/data/file*
305 .hg/store/data/file.d: size=132139
311 .hg/store/data/file.d: size=267307
306 .hg/store/data/file.i: size=256
312 .hg/store/data/file.i: size=320
307
313
308 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file
314 $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file
309 data/file.i 1174
315 data/file.i 1174
@@ -434,7 +440,7 b' We checks that hooks properly see the in'
434 adding changesets
440 adding changesets
435 adding manifests
441 adding manifests
436 adding file changes
442 adding file changes
437 size=131072
443 size=135168
438 transaction abort!
444 transaction abort!
439 rollback completed
445 rollback completed
440 abort: pretxnclose.03-abort hook exited with status 1
446 abort: pretxnclose.03-abort hook exited with status 1
General Comments 0
You need to be logged in to leave comments. Login now