Meteor 2.3-beta.5 is out. Node.js 14 upgrade included!

:tada: Meteor 2.3-beta.0 is out.

I really recommend that you test your app with it as we are upgrading to Node.js 14 :smile:

Check what is included here and then upgrade:
meteor update --release 2.3-beta.0
or create a new app
meteor create my-app --release 2.3-beta.0

Highlights

  • Node.js update to 14.17.0 from 12.22.1 :tada:
  • Typescript update to 4.2.4
  • New env variable METEOR_TOOL_ENABLE_REIFY_RUNTIME_CACHE to improve runtime performance on restarts.
  • New flag --platforms has been added to the build command to specify the platform you want to build for. meteor build . --platforms=android.
  • Skeletons dependencies updated to latest version
20 Likes

this update have server side render?

The server-render package has been available since 1.5.1

6 Likes

Great update, look forward to the official release

2 Likes

Does this have the native this.unblock() for publications?

1 Like

Seems like this upgrade finally kills being able to use datadog trace (dd-trace) and probably any other package that relies on async-hooks. Or is there any reason to believe this crash can be fixed?

TypeError: Cannot read property 'Symbol(ddResourceStore)' of undefined
    at Scope._init (...node_modules/dd-trace/packages/dd-trace/src/scope/async_resource.js:70:33)
    at emitInitNative (internal/async_hooks.js:207:43)
    at emitInitScript (internal/async_hooks.js:475:3)

Yes, we are going to include in the release notes.

Hi, dd-trace team implemented a workaround to work with node-fibers on Node.js 12. I’m not sure if a new workaround needs to be implemented for Node.js 14 or not.

Could you please open a question in their repo? If they have questions for us they will get in contact with me :wink: Thanks.

2 Likes

Thanks for being so proactive on this. DataDog is quite essential if you run a Meteor app in production.

Hi @a4xrbj1, before I ask a question here let me say very clearly: I really love datadog and at Meteor we use their services to monitor many of our components, mostly our Go components that provide Proxies, Schedulers, Image builders, Automatic Certificates and everything in our infrastructure.

Now my honest question, what exactly are you tracking with dd-trace that you are not able to track with APM? This is a very honest question from someone that already scaled many Meteor apps in productions and I never used dd-trace, probably I’m missing something.

In my optimizations and monitoring cases Meteor APM + Memory Profiler package + CPU Profiler package where enough to me but I would like to understand more the usage of dd-trace with Meteor apps, I’m sure they are offering something that is great for Node.js apps in general :wink:

We describe a little bit on how to understand problems with your container in this package of Galaxy (cloud) Guide Container environment | Galaxy Docs

Specifically in these paragraphs:

One important tool to identify bottlenecks is the Meteor APM as it shows to you the Methods and Publications running. Specially in cases where you have spikes in CPU usage keep an eye as well in background jobs, maybe they are consuming all your CPU and then your container becomes unhealthy. Node.js is single threaded so is very important to be aware of heavy CPU operations in your app, mainly if you run background job tasks in the same app your users use the UI.

You can also profile your CPU as you would in any Node.js project, this package can help you to generate a profile and send it to S3. If your problem is related with memory you could use this package to get heap dumps from your container.

Again, I’m not advising against datadog, I just want to understand more what they are offering to you and Meteor users in general. I really love their services :wink:

My bad, I read DataDog and jumped (because I was just praising them in today’s Meteor meetup presentation where I presented my Electron app.

Not using dd-trace (or rather DataDog APM) so it’s actually not a problem (for me).

We use them mainly for log file handling and monitoring of our Fargate, Lambda and MongoDb.

Besides we don’t use pub/sub for many collections, only a few which have very little data (if at all) and thus APM isn’t a tool that we need in general.

2 Likes

Filed an issue and it got shot down as expected.

We like dd-trace because it integrates so well with all other datadog data like log events, but I can’t say that it’s essential so rather than staying behind on Meteor I guess we will just stop using it.

Alternatives like Monti are not worth setting up for us now (it was great and we used it before moving all things to Datadog), and Galaxy was never an option for various reasons.

Beta 3 is out! The major addition is removal of deprecated code from before Meteor 1.0 days in packages. Together with other changes this lead to major version bump on accounts-base , accounts-password and oauth . If you have packages that depend on these they will have to be updated to handle this major version bump.
You can update as usual using:
meteor update --release 2.3-beta.3
But you might need to be a bit more permissive with your packages this time around:
meteor update --allow-incompatible-update --all-packages --release 2.3-beta.3

5 Likes

Working on beta.4 right now to resolve any remaining issues with version conflicts. Packages that depend on accounts-base , accounts-password and oauth will need to update to allow for the major bump. Easiest approach would be to use api.versionsFrom(['2.2', '2.3']) (once 2.3 is released) or something along those lines. I will start preparing this for MCP packages this weekend so that we can release new versions that are compatible with 2.3 on the day of the release. We can have a release party…

6 Likes

Hello,
I am following your advise to try the 2.3-beta.5

meteor update --release 2.3-beta.5

leads to this :

Changes to your project's package version selections from updating the release:
                                              
accounts-base*                upgraded from 1.9.0 to 2.0.0-beta230.5
accounts-password*            upgraded from 1.7.1 to 2.0.0-beta230.5
alanning:roles*               downgraded from 3.2.3 to 1.2.10
babel-compiler                upgraded from 7.6.1 to 7.6.2-beta230.5
browser-policy                added, version 1.1.0
browser-policy-common         added, version 1.0.11
browser-policy-content        added, version 1.1.1
browser-policy-framing        added, version 1.1.0
cosmos:browserify             removed from your project
ddp-client                    upgraded from 2.4.1 to 2.5.0-beta230.5
ddp-rate-limiter              upgraded from 1.0.9 to 1.1.0-beta230.5
ddp-server                    upgraded from 2.3.3 to 2.4.0-beta230.5
deanius:promise*              downgraded from 3.1.3 to 2.3.1
dynamic-import                upgraded from 0.6.0 to 0.7.0-beta230.5
ecmascript                    upgraded from 0.15.1 to 0.15.2-beta230.5
email                         upgraded from 2.0.0 to 2.1.0-beta230.5
http                          removed from your project
launch-screen                 upgraded from 1.2.1 to 1.3.0-beta230.5
meteor-base                   upgraded from 1.4.0 to 1.5.0-beta230.5
meteortesting:browser-tests*  downgraded from 1.3.4 to 0.2.0
meteortesting:mocha*          downgraded from 2.0.1 to 0.5.1
meteortesting:mocha-core      removed from your project
minimongo                     upgraded from 1.6.2 to 1.7.0-beta230.5
mizzao:timesync               removed from your project
mizzao:user-status*           downgraded from 1.0.0 to 0.5.0
mongo                         upgraded from 1.11.1 to 1.12.0-beta230.5
okgrow:promise                added, version 0.9.0
practicalmeteor:mocha-core    added, version 1.0.1
promise                       upgraded from 0.11.2 to 0.12.0-beta230.5
service-configuration         upgraded from 1.0.11 to 1.1.0-beta230.5
socket-stream-client          upgraded from 0.3.3 to 0.4.0-beta230.5
srp                           removed from your project
webapp                        upgraded from 1.10.1 to 1.11.0-beta230.5

                                              
* These packages have been updated to new versions that are not backwards
compatible.
rationalk: updated to Meteor 2.3-beta.5.  

Note : I needed to apply also this : Make compatible with Meteor 2.3 by StorytellerCZ · Pull Request #271 · Meteor-Community-Packages/meteor-collection-hooks · GitHub

Is this normal that we have downgraded packages ?
Then the app does not start anymore
Thanks for your answers

The downgrade is a bug that I’m trying to figure out. My guess right now is that it is downgrading to an old version that doesn’t have any version restrains (hence it is super old). I’m submitting PRs to all the packages that I see reported with this issue, for betas and rc the fix is to have them locally and fix the versioning there. After the release of 2.3 it will be up to the package maintainers to get their package dependencies into order.

1 Like

Thanks for your work on this.
I think that after the release of 2.3 I will need to download locally all the packages you forked instead of using original ones. Especially for packages that are not updated anymore. Am I right ?

For those that are not maintained anymore yes. MCP packages will be up to date within hour after the release. From you list this for example includes mizzao:user-status and alanning:roles. For the rest of packages it will depend on the maintainers if they merge and publish my fixes.

1 Like

This is why community feedback is so important, if some deprecation removals are affecting many packages we could post-pone them but we need feedback to make this decision :wink:

1 Like