Wed, 09 Dec 2015 08:28:53 +0900 commit: make commit acquire store lock before processing for consistency
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 09 Dec 2015 08:28:53 +0900] rev 27291
commit: make commit acquire store lock before processing for consistency If acquisition of wlock waits for another "hg commit" process to release it, dirstate will refer newly committed revision after acquisition of wlock. At that time, '00changelog.i' on the filesystem contains this new revision, but in-memory 'repo.changelog' doesn't, if it is cached without store lock (slock) before updating by another "hg commit". This makes validating parents at re-loading 'repo.dirstate' from '.hg/dirstate' replace such new revision with 'nullid'. Then, 'localrepository.commit()' creates "orphan" revision (see issue4368 for detail). a01d3d32b53a makes 'commands.commit()' acquire both wlock and slock before processing to avoid this issue at "hg commit". But similar issue can occur even after a01d3d32b53a, if 3rd party extension does: - refer 'repo.changelog' outside wlock scope, and - invoke 'repo.commit()' directly (instead of 'commands.commit()') This patch makes 'commit()' acquire slock before processing, to refer recent changelog at validating parents of 'repo.dirstate'.
Wed, 09 Dec 2015 08:28:53 +0900 censor: make censor acquire locks before processing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 09 Dec 2015 08:28:53 +0900] rev 27290
censor: make censor acquire locks before processing Before this patch, "hg censor" executes below: - without acquisition of wlock, examine whether the working directory refers the revision of the file to be censored or not - without acquisition of store lock (slock), replace existing filelog of file to be censored with censored one, Replacement consists of steps below, and it is assumed that the destination filelog at (1) isn't changed before renaming at (3). 1. read existing filelog in 2. write filelog entries (both censored and not) into temporary file 3. rename from temporary file to existing filelog to be censored It may cause unintentional result, if another command runs parallelly (see also issue4368). This patch makes "hg censor" acquire wlock and slock before processing.
Wed, 09 Dec 2015 08:28:53 +0900 transplant: widen wlock scope of transplant for consitency while processing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 09 Dec 2015 08:28:53 +0900] rev 27289
transplant: widen wlock scope of transplant for consitency while processing Before this patch, "hg transplant" executes below before acquisition of wlock. - cmdutil.checkunfinished() - repo.status() for dirty check - repo.dirstate.parents() It may cause unintentional result, if another command runs parallelly (see also issue4368). This patch makes "hg transplant" acquire wlock before processing instead of acquiring wlock in each of 'transplanter.apply()' and 'transplanter.recover()'.
Wed, 09 Dec 2015 08:28:53 +0900 shelve: remove redundant acquisition of wlock for sub commands of unshelve
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 09 Dec 2015 08:28:53 +0900] rev 27288
shelve: remove redundant acquisition of wlock for sub commands of unshelve Previous patch ensures that wlock is acquired before processing for "hg unshelve". It makes acquisition of wlock in each functions below redundant. - unshelveabort() for "unshelve --abort" - unshelvecontinue() for "unshelve --continue"
Wed, 09 Dec 2015 08:28:53 +0900 shelve: widen wlock scope of unshelve for consistency while processing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 09 Dec 2015 08:28:53 +0900] rev 27287
shelve: widen wlock scope of unshelve for consistency while processing Before this patch, "hg unshelve" of shelve extension executes below before acquisition of wlock: - cmdutil.checkunfinished() - examine existence of (specified) shelve file It may cause unintentional result, if another command runs parallelly (see also issue4368). This patch widens wlock scope of "hg unshelve" of shelve extension for consistency while processing.
Sun, 06 Dec 2015 17:07:50 -0800 perf: add perflrucachedict command
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Dec 2015 17:07:50 -0800] rev 27286
perf: add perflrucachedict command It measures time to construct, perform gets, sets, or mixed mode operations on a cache of configurable size with variable numbers of operations.
Sun, 06 Dec 2015 22:22:09 -0800 tests/filterpyflakes: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Dec 2015 22:22:09 -0800] rev 27285
tests/filterpyflakes: use absolute_import
Sun, 06 Dec 2015 22:14:39 -0800 tests/fakepatchtime.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Dec 2015 22:14:39 -0800] rev 27284
tests/fakepatchtime.py: use absolute_import
Sun, 06 Dec 2015 22:13:36 -0800 tests/fakedirstatewritetime.py: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Dec 2015 22:13:36 -0800] rev 27283
tests/fakedirstatewritetime.py: use absolute_import
Sun, 06 Dec 2015 22:12:07 -0800 tests/dumbhttp: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 06 Dec 2015 22:12:07 -0800] rev 27282
tests/dumbhttp: use absolute_import
(0) -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 +1000 +3000 +10000 tip