Semver.io outage impacting render Node services

Hi,

I posted about this 3 weeks ago: Node-based cron jobs failing due to Heroku error?

Specifying a Node Version | Render seems to suggest that render supports specifying the version of node to use to run your app. However, Render’s implementation relies on semver.io. semver.io appears to be a best-effort service with no uptime guarantees (ref: semver.io/README.md at master · heroku/semver.io · GitHub, https://twitter.com/zeke/status/983550486455308288)

https://semver.io is having a several hour period of instability, which means that render services that specify a node version have been failing to launch off-and-on for the past several hours.

If specifying a node version is not a supported feature, is there a workaround that I can do as an end user?

If specifying a node version is a supported feature, can render migrate away from using semver.io?

Looks like we’re hitting the same issue (I just posted here), and your investigation is further along than mine. Render definitely needs a better way to support specifying a Node.js version.

My deploy is suddenly failing in Render because my desired Node.js version—14.14—apparently can’t be found. I’ve been using this version of Node.js with no problems in Render for 8 months; it’s defined in my package.json as described in the Render docs like this:

"engines": {
  "node": "~14.14"
}

Here’s the relevant error in my Render logs:

Jun 2 06:52:17 AM  ==> Running build command 'npm install'...
Jun 2 06:52:17 AM  npm ERR! code ENOTSUP
Jun 2 06:52:17 AM  npm ERR! notsup Unsupported engine for <redacted>: wanted: {"node":"~14.14"} (current: {"node":"14.15.0","npm":"6.14.8"})

There’s also some HTML output in the logs, with an iframe pointing to a generic Heroku error page:

Jun 2 06:52:00 AM  ==> Cloning from https://github.com/GrioSF/pyvott...
Jun 2 06:52:02 AM  ==> Checking out commit 5c8afc949a86552bd2805c6d651c81f280fbb5b9 in branch master
Jun 2 06:52:17 AM  ==> Detected Node version <!DOCTYPE html>
Jun 2 06:52:17 AM       <html>
Jun 2 06:52:17 AM         <head>
Jun 2 06:52:17 AM               <meta name="viewport" content="width=device-width, initial-scale=1">
Jun 2 06:52:17 AM               <meta charset="utf-8">
Jun 2 06:52:17 AM               <title>Application Error</title>
Jun 2 06:52:17 AM               <style media="screen">
Jun 2 06:52:17 AM                 html,body,iframe {
Jun 2 06:52:17 AM                       margin: 0;
Jun 2 06:52:17 AM                       padding: 0;
Jun 2 06:52:17 AM                 }
Jun 2 06:52:17 AM                 html,body {
Jun 2 06:52:17 AM                       height: 100%;
Jun 2 06:52:17 AM                       overflow: hidden;
Jun 2 06:52:17 AM                 }
Jun 2 06:52:17 AM                 iframe {
Jun 2 06:52:17 AM                       width: 100%;
Jun 2 06:52:17 AM                       height: 100%;
Jun 2 06:52:17 AM                       border: 0;
Jun 2 06:52:17 AM                 }
Jun 2 06:52:17 AM               </style>
Jun 2 06:52:17 AM         </head>
Jun 2 06:52:17 AM         <body>
Jun 2 06:52:17 AM               <iframe src="//www.herokucdn.com/error-pages/application-error.html"></iframe>
Jun 2 06:52:17 AM         </body>
Jun 2 06:52:17 AM       </html>

Any idea what’s going on?

Sorry about that. We’re working on replacing semver.io ASAP. I’ll post here as soon as it’s done.

1 Like

Awesome - thanks for the quick update!

1 Like

Has something changed? We haven’t changed our code, but our node cron job is again failing to start for the past hour. A sample failure looks like:

Jun 7 04:31:30 PM  ==> Starting service with 'yarn start:prod-cron'
Jun 7 04:31:32 PM  yarn run v1.22.5
Jun 7 04:31:33 PM  error webbase@0.0.1: The engine "node" is incompatible with this module. Expected version "^15.4.0". Got "14.17.0"
Jun 7 04:31:33 PM  error Commands cannot run with an incompatible environment.
Jun 7 04:31:33 PM  info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

It looks different from previous failures - doesn’t have the Heroku HTML spew, and semver.io is still up.

1 Like

Also having this issue with a background cron job that started today. @anurag

Jun 7 01:41:01 PM  error @: The engine "node" is incompatible with this module. Expected version "13.2.0". Got "14.17.0"
Jun 7 01:41:01 PM  error Commands cannot run with an incompatible environment.

@cldellow @likeaj6 You can specify a version with NODE_VERSION environment variable as a workaround right now. We’re really sorry about the inconvenience.

We’ve opened up an incident and are working on a fix: http://status.render.com/incidents/ssx0r284z0wp?utm_source=slack

1 Like

This ended up being a small config mismatch with the underlying Node image and our control plane code. Deploying a new version of the control plane fixed the issue. We’ve created an internal task to prevent this from happening again. Sorry for the trouble!

In other news, we are no longer dependent on semver.io :confetti_ball:

3 Likes

Awesome, glad to hear! I can confirm things are back to working again.

1 Like

Thank you @jennifer and @anurag!