Catch stderr before 'exit' signal
Try to give a good error message on outdated glibc/libstdc++.
Simplify error reporting to two lines.
Print only last 20 lines of stderr.
Slightly better error message.
Specifically, don't watch until after serverHandle points to the NEW
process. This way, if the watcher files, we are sure to kill the new process,
not fail to kill it because serverHandle is still pointing at the old process or
no process. The old behavior led to sometimes failing to kill the server; while
it would eventually die due to failed keepalive, the new servers would also fail
due to EADDRINUSE.
This change is possible because unlike the only dependencyInfo, WatchSets are
completely self-contained (there's no "... and it should look like it did the
first time" involved).
While we're at it, make restartServer always stops the watcher, and clear some
variables after they're used.
Fixes#1247.
A better fix involves improving http-proxy itself but they're in the middle of a
giant Node 0.10 compatibility rewrite. This addresses the bug reported by Tim
Haines in a hacky but useful way.
Set $NODE_ENV appropriately (to 'development' in 'meteor run' and 'production'
otherwise) so that connect doesn't send stack traces over the network in
production.
This was broken by 957729c, which switched the child process listener from
'exit' to 'close' but didn't update another line which removed that listener. So
we had an allergic reaction to killing our own subprocess.
In addition to minor "make the tests match the code" changes, there's also:
- missing require('tar') in tarball download code
- fix an fd leak in the bundler that was causing EMFILE on mac
- switch run.js to listening for 'exit' to 'close' so that the end
of stdout/err can be read
- some concerningly necessary deletions of .build directories
Also, the version of cli-test.sh that runs against a fixed release is disabled,
since we're not building releases with the new package format for now.
Replace type: "bare" with type: "server" in attributes.json. This now just
means "only make one server process" rather than controlling the boot script.
Programs that are type: "traditional" that want to be a webapp now need to
explicitly depend on the webapp package.
one-time content scan. Addresses Issue #223.
This addresses two cases: files that change during a slow bundle (eg, during
slow NPM updates) and *do* end up with a different mtime (which could also be
addressed in other ways, see eg the issue-223-dead-end branch)... and those that
change twice within the same second on OSX HFS+ which only has 1-second mtime
resolution, which really cannot be addressed in any purely mtime-based way.
This still is not 100% perfect. Most notably, any files read via
register_extension (which is to say, basically all source files other than
package.js and static resources) still have a race between hash calculation and
the actual read done by the bundler, since the register_extension API takes a
source_path rather than contents. This could be addressed by making
register_extension handlers take the contents as an argument too (and encourage
the use of source_file only for things like printing errors with filenames, not
actually for reading the file). In addition, this won't detect files added after
the bundler passes them but before the initial DependencyWatcher run.