Commit Graph

163 Commits

Author SHA1 Message Date
Filipe Névola
94cd41f760 Merge pull request #11114 from meteor/full-rebuild-build-in-place 2020-07-09 13:17:27 -04:00
zodern
97d5679889 Enable in place builds for full rebuilds on Windows 2020-07-08 10:09:06 -05:00
filipenevola
da2c653803 Adds message for when Mongo server is not starting on Windows. 2020-06-24 10:06:18 -04:00
Seba Kerckhof
9c9a8263ab Add separate SERVER_NODE_FLAGS envar (#10965)
* Add separate SERVER_NODE_FLAGS envar

Since Meteor 0.5.3, Meteor allowed to pass node command line flags
to the server node process via the `NODE_OPTIONS` environment variable.

However, since Node version 8 / Meteor 1.6 this has become a default node
envar with the same behavior:
https://nodejs.org/api/cli.html#cli_node_options_options

The side effect is that this now also affects Meteor tool.

The command line parameters could already be set separately via the `TOOL_NODE_FLAGS` envar.
This is now also possible (again) for the server.
2020-04-17 20:17:53 -04:00
Kyle Shankwiler
6803d8dfd1 Add an error message warning developers of oversized headers. (#10877)
* Add an error message warning developers of oversized headers.

An explanation of the issue being logged can be found here: https://forums.meteor.com/t/meteor-1-8-1-unexpected-error-too-many-csp-rules/48447/12.

* Ensure the large request header test works as intended
2020-04-17 11:32:21 -04:00
Ben Newman
a467255d9c Use IPC message to handle .reload command in meteor shell.
I considered using a nonzero process.exit code, but I didn't want to run
any risk of reusing a meaningful code, and the accepted range of codes
unfortunately does not include parseInt("reload", 36), or 1657112629.

Should fix #10934.
2020-02-26 12:13:48 -05:00
Seba Kerckhof
28d898dd0b Merge branch 'devel' into error-page-syntax-highlighting 2020-01-23 16:52:52 +01:00
Ben Newman
e967e745a2 Don't wait for mongod to step down on shutdown. 2020-01-13 16:11:10 -05:00
Christian Klaussner
1a016f5c2b Update download URLs for MongoDB 4.2.1. 2020-01-13 16:02:43 -05:00
Christian Klaussner
92013e3486 Remove multiple restart feature (#10345) 2019-12-18 17:56:54 -05:00
Christian Klaussner
c112077ac2 Convert ANSI escape codes to HTML on error page 2019-12-14 21:19:30 +01:00
Ben Newman
b3d88944ae Explicitly track potentially unused WatchSet files.
The previous implementation simply avoided calling watchSet.addFile for
potentially unused files, trusting that addFile would be called later if
the file was eventually used. However, this strategy left the contents of
watchSet.files incomplete for tasks such as IsopackCache._checkUpToDate,
which require full information about all files, even the ones that might
not be used by the bundle. The new strategy maintains metadata about
potentially unused files in a separate data structure, which will be
merged/cloned/serialized/deserialized along with other WatchSet data.
2019-09-06 16:24:41 -04:00
Michael Newman
f8ba7a96fe Convert tools/utils/mongo-exit-codes to TypeScript (#10625) 2019-07-21 12:02:29 -04:00
Michael Newman
8af53f97d6 Convert tools/utils/eachline.js to TypeScript (#10614)
Thanks to @menewman for tackling this small but important module!
2019-07-15 11:34:45 -04:00
Ben Newman
769337551e Convert tools/tool-env/profile.js to TypeScript.
Unfortunately, this conversion triggered an error due to one of the
shortcomings of the Babel implementation of TypeScript:

SyntaxError: /tools/tool-env/profile.ts: Namespace not marked type-only declare. Non-declarative namespaces are only supported experimentally in Babel. To enable and review caveats see: https://babeljs.io/docs/en/babel-plugin-transform-typescript
  278 | }
  279 |
> 280 | export namespace Profile {
      |                  ^
  281 |   export let enabled = !! process.env.METEOR_PROFILE;
  282 |
  283 |   export function time<TResult>(bucket: string, f: () => TResult) {
    at File.buildCodeFrameError (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/core/lib/transformation/file/file.js:261:12)
    at transpileNamespace (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/plugin-transform-typescript/lib/namespace.js:25:25)
    at PluginPass.TSModuleDeclaration (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/plugin-transform-typescript/lib/index.js:271:32)
    at newFn (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/traverse/lib/visitors.js:193:21)
    at NodePath._call (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/traverse/lib/path/context.js:53:20)
    at NodePath.call (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/traverse/lib/path/context.js:40:17)
    at NodePath.visit (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/traverse/lib/path/context.js:88:12)
    at TraversalContext.visitQueue (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/traverse/lib/context.js:118:16)
    at TraversalContext.visitMultiple (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/traverse/lib/context.js:85:17)
    at TraversalContext.visit (/Users/ben/meteor/dev_bundle/lib/node_modules/@babel/traverse/lib/context.js:144:19)
2019-07-06 09:18:35 -04:00
Ben Newman
d8436bb635 Convert tools/fs/safe-watcher.js to TypeScript.
This completes the TypeScript conversion of the tools/fs directory. 🎉
2019-07-05 18:58:18 -04:00
Ben Newman
8958cbc5e9 Convert tools/fs/watch.js to TypeScript. 2019-07-05 17:50:20 -04:00
Ben Newman
5ed64fb1db Remove explicit .js extension from tools/fs/files imports. 2019-07-04 10:32:09 -04:00
Christian Klaussner
2b21a901a5 Wait until Mongo primary node is writable (#10500)
Using the `isMaster` command instead of checking the replica set member state is more reliable because a node can be a primary without being writable.

Fixes #10381 and #9026.
2019-03-19 19:12:12 -04:00
Ben Newman
44e293b741 Merge branch 'devel' into release-1.8.1 2019-03-19 13:10:35 -04:00
Simon Schick
40e8da227e Added an environment variable to determine if Meteor will restart automatically (#10465) 2019-03-15 11:01:13 -04:00
Ben Newman
419ff7ce92 Merge pull request #10399 from zodern/windows-build-performance
Windows build performance
2019-01-31 12:02:41 -05:00
zodern
31dfb0cc06 Remove timeout for starting delayed build 2019-01-17 16:09:21 -06:00
zodern
285e1b50c3 Clean up code 2019-01-16 22:16:51 -06:00
Ben Newman
aaeb2a7c2c Pass --enableFreeMonitoring off to Mongo 4 shell, except on Linux. 2019-01-05 16:27:20 -05:00
Ben Newman
c7441e68c6 Ensure consistent LANG-related environment variables in findMongoPids.
For some reason, without all three of these environment variables set
(LANG, LC_ALL, and LANGUAGE), the STDOUT returned from the child process
in findMongoPids contained ?? in place of non-ASCII unicode characters,
which was causing the self-test of Mongo shell in a unicode application
directory to fail.

This implementation defaults all three environment variables to
process.env.LANG if it was defined, or "en_US.UTF-8" otherwise.
2019-01-05 15:05:34 -05:00
Ben Newman
61b2ac3878 Revert "Use --enableFreeMonitoring off instead of --quiet for Mongo shell."
This reverts commit 7055780697.

While this flag works as expected on MacOS, it appears not to be supported
on Linux, even using MongoDB 4.0.5 (the latest version):
https://jira.mongodb.org/browse/SERVER-38862
2019-01-05 13:17:33 -05:00
Ben Newman
7055780697 Use --enableFreeMonitoring off instead of --quiet for Mongo shell.
Previously: 7f7a987251

cc @klaussner @mitar
2019-01-05 12:45:24 -05:00
zodern
21f976d6f0 Fix delay between server starting and showing "=> Server restarted"
Creating the watcher can take up to 12+ seconds in small - medium apps, and uses sync fs calls.
The server would start right away, but the tool process wouldn't know about it until the watcher finished setting up. Also, the proxy doesn't forward requests until "=> Server restarted" is shown.
A new async option is added to Watcher which prevents it from blocking the event loop too long.
Also, the watcher and legacy bundle are only created after the server has started, or 3 seconds has passed.
2019-01-01 11:47:20 -06:00
Ben Newman
a6e52c87b9 Await lingering self.runPromise in AppProcess#_runOnce.
Should fix #10220.
2018-09-18 10:28:37 -04:00
Christian Klaussner
7f7a987251 Use --quiet option when running mongo shell 2018-08-08 18:23:33 -04:00
Christian Klaussner
b6574915fc Use protocol version 1 when initiating replica set
Protocol version 0 (used by default) is deprecated in MongoDB 4.0 (https://docs.mongodb.com/manual/release-notes/4.0/#remove-pv0-for-replica-sets).
2018-08-08 18:23:33 -04:00
Christian Klaussner
48075f4fd3 Update regular expression to match MongoDB 4.0 output 2018-08-08 18:23:32 -04:00
Ben Newman
f4946306c0 Make IPC system more testable, and implement some basic tests. 2018-07-17 16:44:58 -04:00
Ben Newman
77ed148614 Use listener API for communication between build/server processes.
Fixes #10073, per
https://github.com/meteor/meteor/issues/10073#issuecomment-405290391

While thinking about this bug, I realized that sending IPC messages to
specific packages in the server process was much less flexible than
sending messages based on an arbitrary topic string, since the topic
string approach allows both `autoupdate` and `dynamic-import` to listen
for the same message.

The topic string approach calls for a listener interface like
`onMessage(topic, callback)`, which elegantly replaces the previous
approach of requiring packages to export a single `onMessage` function.

However, because the `meteor` package does not have access to the module
system, implementing the `onMessage` listener interface in the `meteor`
package would have required exposing an API like `Meteor.onMessage(topic,
callback)`, which has an unpleasant global smell to it. Instead, the
`onMessage` function should be explicitly imported (using the module
system) from a less-generically-named package.

Since I knew I was going to have to move the message dispatch logic out of
the `meteor` package, I decided to create a new package called
`inter-process-messaging` to implement the parent/child components of the
IPC system.
2018-07-16 18:59:50 -04:00
Ben Newman
244fd2a677 Replace Package._on(name, callback) with Package._promise(name).
https://github.com/meteor/meteor/pull/10055#discussion_r201855997

As I explained in this comment, Package._on(packageName, callback) was a
bad API because it never called the callback if the package was not
installed, which caused any app not using the autoupdate package to get
stuck trying to communicate with the autoupdate package.
2018-07-11 19:37:44 -04:00
Ben Newman
1387473cf5 Pause requests for the legacy bundle while rewriting it.
This is the solution I came up with for the problems I described here:
https://github.com/meteor/meteor/pull/10055#issuecomment-403219805
2018-07-10 21:17:14 -04:00
Ben Newman
4b17a0b760 Allow sending IPC messages from build process to server process.
Instead of having every message consumer listen to every message and act
on the ones that seem relevant to its interests, we now have a single
process.on("message", callback) hook that can dispatch messages to
different Meteor packages running in the server process.

Receiving packages should export an onMessage function. The onMessage
function may be async, and its result will be delivered back to the build
process as the result of the sendMessage Promise.
2018-07-10 21:17:14 -04:00
Ben Newman
ff3dbf2f1b Send another client refresh message after legacy build completes.
Also removed the AppRunner#_refreshing boolean hack, since reporting
errors during IPC communication seems desirable.
2018-07-06 20:07:45 -04:00
Ben Newman
b9a05d85f6 Permit delayed bundling only if !Console.isHeadless(). 2018-07-04 13:44:12 -04:00
Ben Newman
7f88d26a60 Pass { childProcess, runLog } into post-startup callback function. 2018-07-04 13:44:12 -04:00
Ben Newman
aade180d46 Build web.browser.legacy bundle after startup on rebuilds. 2018-07-04 12:26:23 -04:00
Ben Newman
3d1db19e79 Remove unused NODE_PATH logic from bundler.js and run-app.js. 2018-07-04 10:51:06 -04:00
Ben Newman
5be6c45e77 Clean up previousBuilders caching in bundler.bundle.
Most importantly, we no longer return a copy of previousBuilders from
bundler.bundle, but simply modify the input object over time. The copying
approach was nice in theory, but incompatible with delaying the bundling
of certain architectures (e.g. web.browser.legacy) until some time after
bundler.bundle returns.
2018-07-04 10:25:53 -04:00
Christian Klaussner
c0bce716fc Update MongoDB driver to 3.0.5 (#9790)
* Update MongoDB driver to 3.0.5

* Use `MongoClient` instead of `Db` in Meteor Tool

* Update `mongo-livedata` test for new MongoDB driver version

* Consider `BulkWriteError` when checking MongoDB errors
2018-04-06 10:28:25 -04:00
Hugh Willson
542ad06b75 Revert the revert of "Upgrade to Mongo 3.6 (#9533)"
This reverts commit 85d74f8d2b.
2018-03-21 19:27:03 +02:00
Robert Lowe
3332558ddb Introduce MONGO_BIND_IP override (#9606)
* Introduce MONGO_BIND_IP override

Introduces an environment variable (MONGO_BIND_IP) for overriding of meteor's mongod's `bind_ip` option to allow docker containers to bind on `0.0.0.0` to be able to expose mongod processs via docker's `-p 3001:3001` port bindings.

Related issue: https://serverfault.com/questions/758225/cannot-connect-to-mongodb-in-docker
Partially Related PR: https://github.com/meteor/meteor/pull/469

* Use METEOR_MONGO_BIND_IP over ambiguous MONGO_BIND_IP

Change request to use METEOR_MONGO_BIND_IP over ambiguous MONGO_BIND_IP
2018-02-08 10:30:28 -05:00
Ben Newman
85d74f8d2b Revert "Upgrade to Mongo 3.6 (#9533)"
This reverts commit dfc0702558.

We've seen some odd test failures (e.g. `passwords - tokens`) and trouble
updating from 1.6.1 to 1.6.2-beta.3 (easily solved with `meteor reset`,
but also worth investigating), so I think we should keep working on the
Mongo 3.6 upgrade in a PR, rather than running all of our tests against
a devel branch that includes Mongo 3.6.

cc @abernix @hwillson
2018-01-30 17:47:12 -05:00
Hugh Willson
dfc0702558 Upgrade to Mongo 3.6 (#9533)
Update the Meteor Tool to use Mongo 3.6.2 for 64-bit OS'
and Mongo 3.2.18 for 32-bit OS'. A few important mentions:

- As of Mongo 3.6, all Mongo binary downloads include
  SSL - there is no longer a non-SSL based download bundle
  (so it's a bit bigger, but that shouldn't be an issue).
- Using the `--nojournal` option with WiredTiger based
  replica sets is no longer supported (see
  https://jira.mongodb.org/browse/SERVER-30760). The
  `--nojournal` flag was added in
  bcfe072d52
  to help reduce the amount of disk space used by Mongo,
  but since this option is no longer supported, we'll
  have to live with the extra disk space usage.
- Add PR link to History.md
2018-01-24 22:01:46 +02:00
Jesse Rosenberger
5e4ee8dc36 Only import necessary functions from cordova, not *.
The rest of the module is not necessary.
2017-11-17 20:17:21 +02:00