annotate tests/test-mactext.t @ 47343:9f798c1b0d89 stable

cext: fix memory leak in phases computation Without this a buffer whose size in bytes is the number of changesets in the repository is leaked each time the repository is opened and changeset phases are computed. Impact: the current code in hgwebdir creates a new `localrepository` instance for each HTTP request. Since any pull or push is made of several requests, a team of 100 people can easily produce thousands of such requests per day. Being a low-level malloc, this leak can't be seen with the gc module and tools relying on that, but was spotted by valgrind immediately. Reproduction ------------ for i in range(cl_args.iterations): repo = hg.repository(baseui, repo_path) rev = repo.revs(rev).first() ctx = repo[rev] del ctx del repo # avoid any pollution by other type of leak # (that should be fixed in 5.8) repoview._filteredrepotypes.clear() gc.collect() Measurements ------------ Resident Set Size (RSS), taken on a clone of mozilla-central for performance analysis (440 000 changesets). before: 5.8+hg19.5ac0f2a8ba72 1000 iterations: 1606MB 5.8+hg19.5ac0f2a8ba72 10000 iterations: 5723MB after: 5.8+hg20.e2084d39e145 1000 iterations: 555MB 5.8+hg20.e2084d39e145 10000 iterations: 555MB (double checked, not a copy/paste error) (e2084d39e14 is the present changeset, before amendment of the message to add the measurements)
author Georges Racinet <georges.racinet@octobus.net>
date Sun, 06 Jun 2021 01:24:30 +0200
parents 768056549737
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6481
e837dded56c7 win32text: Add macencode/macdecode
OHASHI Hideya <ohachige@gmail.com>
parents:
diff changeset
1
12458
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
2 $ cat > unix2mac.py <<EOF
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
3 > import sys
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
4 >
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
5 > for path in sys.argv[1:]:
36023
adec6374a0b2 py3: replace file() with open() in test-mactext.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32940
diff changeset
6 > data = open(path, 'rb').read()
adec6374a0b2 py3: replace file() with open() in test-mactext.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32940
diff changeset
7 > data = data.replace(b'\n', b'\r')
adec6374a0b2 py3: replace file() with open() in test-mactext.t
Pulkit Goyal <7895pulkit@gmail.com>
parents: 32940
diff changeset
8 > open(path, 'wb').write(data)
12458
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
9 > EOF
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
10 $ hg init
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
11 $ echo '[hooks]' >> .hg/hgrc
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
12 $ echo 'pretxncommit.cr = python:hgext.win32text.forbidcr' >> .hg/hgrc
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
13 $ echo 'pretxnchangegroup.cr = python:hgext.win32text.forbidcr' >> .hg/hgrc
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
14 $ cat .hg/hgrc
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
15 [hooks]
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
16 pretxncommit.cr = python:hgext.win32text.forbidcr
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
17 pretxnchangegroup.cr = python:hgext.win32text.forbidcr
15243
1e9451476bf8 tests: cleanup of echo statements left over from test conversion
Mads Kiilerich <mads@kiilerich.com>
parents: 12458
diff changeset
18
12458
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
19 $ echo hello > f
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
20 $ hg add f
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
21 $ hg ci -m 1
15243
1e9451476bf8 tests: cleanup of echo statements left over from test conversion
Mads Kiilerich <mads@kiilerich.com>
parents: 12458
diff changeset
22
39707
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 36023
diff changeset
23 $ "$PYTHON" unix2mac.py f
12458
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
24 $ hg ci -m 2
16932
7985a9e2ddce win32text: lowercase warning message
Martin Geisler <mg@aragost.com>
parents: 15243
diff changeset
25 attempt to commit or push text file(s) using CR line endings
12458
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
26 in dea860dc51ec: f
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
27 transaction abort!
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
28 rollback completed
9446bd059da3 tests: unify test-mactext
Matt Mackall <mpm@selenic.com>
parents: 8167
diff changeset
29 abort: pretxncommit.cr hook failed
46417
768056549737 errors: use exit code 40 for when a hook fails
Martin von Zweigbergk <martinvonz@google.com>
parents: 44642
diff changeset
30 [40]
44642
da9b7f9635a2 tests: use `f --hexdump` to print file content
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39707
diff changeset
31 $ hg cat f | f --hexdump
da9b7f9635a2 tests: use `f --hexdump` to print file content
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39707
diff changeset
32
da9b7f9635a2 tests: use `f --hexdump` to print file content
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39707
diff changeset
33 0000: 68 65 6c 6c 6f 0a |hello.|
da9b7f9635a2 tests: use `f --hexdump` to print file content
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39707
diff changeset
34 $ f --hexdump f
da9b7f9635a2 tests: use `f --hexdump` to print file content
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39707
diff changeset
35 f:
da9b7f9635a2 tests: use `f --hexdump` to print file content
Gregory Szorc <gregory.szorc@gmail.com>
parents: 39707
diff changeset
36 0000: 68 65 6c 6c 6f 0d |hello.|