Commit Graph

25 Commits

Author SHA1 Message Date
Ben Newman
90ece32013 Fix problems in request callback that broke getUrlWithResuming tests. 2016-10-17 15:19:21 -04:00
Ben Newman
30aec9f345 Report an error when HTTP request body is incomplete.
When a download aborts prematurely, the status code is often 200 OK, even
though we probably should not proceed with any further processing of the
downloaded information.

This silent failure leads to problems like the dreaded "Error: ENOENT: no
such file or directory, open... os.json" (#7806 and others), which were
hard to diagnose properly because the failure occurred only later, when
extracting a buffer that downloaded incompletely.

The getUrlWithResuming helper should be able to retry after this error is
thrown, which will result in a more helpful warning, even if in the most
common case, i.e. MaxCDN failure, it will never actually succeed.

Note that this change will not help until Meteor 1.4.2 is officially
released and becomes the implementation used to download later releases.

Mitigates #7806.
2016-10-17 13:52:53 -04:00
Ben Newman
bb8e1a3b9f Implement ConcatStream class instead of using concat-stream npm package. 2016-08-01 14:42:22 -04:00
Tom Coleman
7769951ee8 Switched to concat-stream for performance 2016-08-01 17:55:37 +10:00
Ben Newman
e85cef8e1a Make download resumption test faster and more deterministic.
We now use a smaller file (the `babel-compiler` archive instead of
`meteor-tool`), and we interrupt every 500kB, which leads to three total
interruptions for that file. Also, we only delay one second (instead of
five) between attempts.
2016-07-14 17:00:08 -04:00
Ben Newman
91f203999b Make download resumption test always run (and pass).
This is a test that really needs to run and pass every time we run the
test suite, so I decided it shouldn't be --slow. If it takes too long, we
can always download a smaller test file.

Hard-coding the download length was a recipe for brittleness, so now I'm
downloading the file without interruptions in parallel with the
interrupted/resumed download, so that we can compare the two files when
both have finished downloading.

Follow-up to #7399.
2016-07-14 16:05:35 -04:00
Ben Newman
0c43039f60 Avoid fiberHelpers.bindEnvironment by returning Promise from attempt.
Follow-up to #7399.
2016-07-14 11:47:32 -04:00
Ben Newman
fbfb5b84e2 Avoid exposing httpHelpers._currentRequest.
Follow-up to #7399.
2016-07-14 11:47:32 -04:00
Tom Coleman
2cb3462b6d Minor fixes + added a comment 2016-07-14 11:47:32 -04:00
Tom Coleman
4a28c33dd7 Better logging and progress
Using Console.debug to register messages about retries.
2016-07-14 11:47:31 -04:00
Tom Coleman
36011459fa Made the test work in a sensible way 2016-07-14 11:47:31 -04:00
Tom Coleman
cc07c15b6b First pass at request resuming via buffering the range header
This is still a WIP, but I wanted to get feedback at this point.
Will update the PR with outstanding TODOs.
2016-07-14 11:47:30 -04:00
Ben Newman
e90ce88b0e Fix a bug in tools/utils/http-helpers.js. 2016-07-14 11:27:58 -04:00
Ben Newman
df77c39908 Bump default HTTP timeout to 60 seconds, and allow disabling. 2016-06-23 11:49:23 -04:00
Mitar
3846c6f45c Changed timeout 30 seconds as instructed by our god Math.random(). 2016-06-16 23:12:08 -07:00
Mitar
853e218a89 Set timeout for HTTP requests. 2016-05-31 23:35:46 +02:00
Ben Newman
7f0156f273 Eliminate Future from tools/http-helpers.js. 2015-12-09 12:06:47 -05:00
Ben Newman
ed17924940 Add braces to every if/for(-in)/while statement in tools directory. 2015-11-13 12:25:19 -05:00
Blake Bourque
0aa1291fd6 Patch to allow users to override root cert list
Fixes #4757
Uses environment variable CAFILE (to match NPM) which must contain a fully qualified path to a pem format root certificate to include in the list of trusted root certs.

This additional root certificate will be needed for those behind an SSL inspection proxy which acts as an SSL termination point and resigns the traffic with its own root certificate.
2015-10-27 13:39:18 -07:00
David Glasser
729ad9013e Style tweaks 2015-08-11 15:30:19 -07:00
SEKE
6fa16329fc Throw a non-empty error when getUrl gets an empty response body 2015-08-11 15:28:18 -07:00
Slava Kim
39d8aef3d9 move files into console/ tool-testing/ 2015-08-06 16:39:00 -07:00
Slava Kim
f49de5b9ac Move files connecting to Meteor-provided services
to a separate folder
2015-08-06 16:00:39 -07:00
Slava Kim
6b1bb038d8 Move files into tools/fs 2015-08-03 22:09:28 -07:00
Slava Kim
8a8db83d29 Move files into tools/utils 2015-08-03 20:32:38 -07:00