Mercurial > hg
annotate .hgignore @ 32024:ad41739c6b2b
bundle2: ignore errors seeking a bundle after an exception (issue4784)
Many have seen a "stream ended unexpectedly" error. This message is
raised from changegroup.readexactly() when a read(n) operation fails
to return exactly N bytes.
I believe most occurrences of this error in the wild stem from
the code changed in this patch. Before, if bundle2's part applicator
raised an Exception when processing/applying parts, the exception
handler would attempt to iterate the remaining parts. If I/O
during this iteration failed, it would likely raise the
"stream ended unexpectedly" exception.
The problem with this approach is that if we already encountered
an I/O error iterating the bundle2 data during application, then
any further I/O would almost certainly fail. If the original stream
were closed, changegroup.readexactly() would obtain an empty
string, triggering "stream ended unexpectedly" with "got 0." This is
the error message that users would see. What's worse is that the
original I/O related exception would be lost since a new exception
would be raised. This made debugging the actual I/O failure
effectively impossible.
This patch changes the exception handler for bundle2 application to
ignore errors when seeking the underlying stream. When the underlying
error is I/O related, the seek should fail fast and the original
exception will be re-raised. The output changes in
test-http-bad-server.t demonstrate this.
When the underlying error is not I/O related and the stream can be
seeked, the old behavior is preserved.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 16 Apr 2017 11:55:08 -0700 |
parents | cff0f5926797 |
children | fcddcf442e4f |
rev | line source |
---|---|
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
1 syntax: glob |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
2 |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
3 *.elc |
19991
ce5d711475a3
Makefile: do update on a temporary copy of a po file
Simon Heimberg <simohe@besonet.ch>
parents:
19426
diff
changeset
|
4 *.tmp |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
5 *.orig |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
6 *.rej |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
7 *~ |
5019
e6cc4d4f5a81
Ignore mergebackup files generated by mpatch
Bryan O'Sullivan <bos@serpentine.com>
parents:
2987
diff
changeset
|
8 *.mergebackup |
2341
dbbe7f72d15a
contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2151
diff
changeset
|
9 *.o |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
10 *.so |
13643
537899158396
hgignore: ignore dll files generated under cygwin
Craig Leres <leres@ee.lbl.gov>
parents:
13346
diff
changeset
|
11 *.dll |
17115
b52d08b930c5
hgignore: simply ignore all *.exe's everywhere
Adrian Buehlmann <adrian@cadifra.com>
parents:
16537
diff
changeset
|
12 *.exe |
6551 | 13 *.pyd |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
14 *.pyc |
13346
91fe769ac84e
hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents:
11380
diff
changeset
|
15 *.pyo |
91fe769ac84e
hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents:
11380
diff
changeset
|
16 *$py.class |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
17 *.swp |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
18 *.prof |
17274
2426ec322cd1
hgignore: ignore zip files
Adrian Buehlmann <adrian@cadifra.com>
parents:
17115
diff
changeset
|
19 *.zip |
8147
441dc7becd43
win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents:
7706
diff
changeset
|
20 \#*\# |
441dc7becd43
win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents:
7706
diff
changeset
|
21 .\#* |
2068
4a49daa3a40c
let run-tests run optional code coverage tests.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1817
diff
changeset
|
22 tests/.coverage* |
27634
a1eff44c432b
tests: write recent run times to a file named tests/.testtimes
Bryan O'Sullivan <bos@serpentine.com>
parents:
22945
diff
changeset
|
23 tests/.testtimes* |
28255
f75f7d39cca3
testing: generate tests operations using Hypothesis
David R. MacIver <david@drmaciver.com>
parents:
28061
diff
changeset
|
24 tests/.hypothesis |
f75f7d39cca3
testing: generate tests operations using Hypothesis
David R. MacIver <david@drmaciver.com>
parents:
28061
diff
changeset
|
25 tests/hypothesis-generated |
2151
0ce3cd330996
Ignore annotated coverage output of run-tests.py -C
Thomas Arendsen Hein <thomas@intevation.de>
parents:
2068
diff
changeset
|
26 tests/annotated |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
27 tests/*.err |
15859
44a371823f83
tests: add htmlcov option
Markus Zapke-Gründemann <info@keimlink.de>
parents:
15702
diff
changeset
|
28 tests/htmlcov |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
29 build |
28061
3753d2e1759b
hgignore: ignore chg binary
Yuya Nishihara <yuya@tcha.org>
parents:
27634
diff
changeset
|
30 contrib/chg/chg |
2341
dbbe7f72d15a
contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
2151
diff
changeset
|
31 contrib/hgsh/hgsh |
21874
8da01b6e7b49
contrib/vagrant: use Vagrant for running tests on virtual machine
anatoly techtonik <techtonik@gmail.com>
parents:
21560
diff
changeset
|
32 contrib/vagrant/.vagrant |
29031
e63dfbbdbd07
make: turn ubuntu docker into template
Sean Farley <sean@farley.io>
parents:
28430
diff
changeset
|
33 contrib/docker/ubuntu-* |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
34 dist |
21560
a9e1ab2da30d
packaging: move output directory from build/ to packages/
Matt Mackall <mpm@selenic.com>
parents:
19991
diff
changeset
|
35 packages |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
17732
diff
changeset
|
36 doc/common.txt |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
37 doc/*.[0-9] |
19426
e43184680461
doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents:
17732
diff
changeset
|
38 doc/*.[0-9].txt |
1817
e02fea13c69d
Ignore generated documentation
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1270
diff
changeset
|
39 doc/*.[0-9].gendoc.txt |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
40 doc/*.[0-9].{x,ht}ml |
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
41 MANIFEST |
14560
0980239cb20c
hgignore: ignore MANIFEST.in (generated since 2ce7dfe17bc5)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
14538
diff
changeset
|
42 MANIFEST.in |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
43 patches |
28430
17b85d739b62
setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents:
28255
diff
changeset
|
44 mercurial/__modulepolicy__.py |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
45 mercurial/__version__.py |
17732
93d97a212559
exewrapper: adapt for legacy HackableMercurial
Adrian Buehlmann <adrian@cadifra.com>
parents:
17274
diff
changeset
|
46 mercurial/hgpythonlib.h |
11380
2bb6dbf04757
Ignore mercurial.egg-info build output
Lee Cantey <lcantey@gmail.com>
parents:
8147
diff
changeset
|
47 mercurial.egg-info |
2987
12d1475b48df
Ignore .DS_Store directories
Lee Cantey <lcantey@gmail.com>
parents:
2386
diff
changeset
|
48 .DS_Store |
5693
5d0b94d3ad0c
.hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents:
5622
diff
changeset
|
49 tags |
5d0b94d3ad0c
.hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents:
5622
diff
changeset
|
50 cscope.* |
22945
3232f92360d4
hgignore: ignore the PyCharm workspace folder
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
21874
diff
changeset
|
51 .idea/* |
30406
cff0f5926797
perf: add asv benchmarks
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents:
29031
diff
changeset
|
52 .asv/* |
7648
02e358a3a8a7
i18n: let Makefile generate i18n/hg.pot
Martin Geisler <mg@daimi.au.dk>
parents:
7439
diff
changeset
|
53 i18n/hg.pot |
7649
a489e3a94443
i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents:
7648
diff
changeset
|
54 locale/*/LC_MESSAGES/hg.mo |
14538
3818c67a501e
setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents:
13643
diff
changeset
|
55 hgext/__index__.py |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
56 |
7706
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
57 # files installed with a local --pure build |
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
58 mercurial/base85.py |
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
59 mercurial/bdiff.py |
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
60 mercurial/diffhelpers.py |
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
61 mercurial/mpatch.py |
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
62 mercurial/osutil.py |
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
63 mercurial/parsers.py |
0ae7f0b312ea
use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents:
7649
diff
changeset
|
64 |
1270
fc3b41570082
Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents:
981
diff
changeset
|
65 syntax: regexp |
794
cdf61d3d3904
Ignore test error files, protect dot in .pc/
Thomas Arendsen Hein <thomas@intevation.de>
parents:
740
diff
changeset
|
66 ^\.pc/ |
7439
7dd44ad43914
Ignore eclipse droppings
Brendan Cully <brendan@kublai.com>
parents:
6551
diff
changeset
|
67 ^\.(pydev)?project |
15702
64a80204433f
ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents:
14560
diff
changeset
|
68 |
64a80204433f
ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents:
14560
diff
changeset
|
69 # hackable windows distribution additions |
16537
5068d0974278
update .hgignore for hackable with Python 2.7
Mads Kiilerich <mads@kiilerich.com>
parents:
15859
diff
changeset
|
70 ^hg-python |
15702
64a80204433f
ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents:
14560
diff
changeset
|
71 ^hg.py$ |