Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

drop Node 16 (EOL) #8365

Merged
merged 2 commits into from
Mar 13, 2024
Merged

drop Node 16 (EOL) #8365

merged 2 commits into from
Mar 13, 2024

Conversation

turadg
Copy link
Member

@turadg turadg commented Sep 21, 2023

Description

See https://nodejs.dev/en/about/releases/

Node v16 hit EOL on Sep 11. This drops it from matrix testing and narrows engines from >14 to LTS.

It adds a .node-version file for those using tools like https://github.com/nodenv (multiple tools observe the file).

The stricken parts were done in other PRs.

Security Considerations

Dropping unsupported versions should remove risks of exploits

Scaling Considerations

n/a

Documentation Considerations

https://docs.agoric.com/guides/getting-started/ already says to use an LTS version.

Testing Considerations

CI

Upgrade Considerations

Consumers using Node 14 or 16 will have to upgrade to 18.

@@ -61,7 +61,7 @@ jobs:
# Prerequisites
- uses: ./.github/actions/restore-node
with:
node-version: 16.x
node-version: 18.x
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't realize we were still on Node 16 here!

Copy link
Member

@mhofman mhofman Jan 29, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This may be breaking the "getting-started" integration test.

cc @LuqiPan who is currently working on updating this test.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yeah, pinning this at 18.18 might be the way to unblock for now. I'd like to get our dapps to handle node 18.19, but that's another story.

@mhofman
Copy link
Member

mhofman commented Sep 21, 2023

Do we actually need to already drop Node 16? Since this change needs to be synchronized with a change to GH required checks (manual process), and kinda wanted to only do this once when Node 20 gets LTS in a few weeks

@turadg
Copy link
Member Author

turadg commented Sep 21, 2023

Do we actually need to already drop Node 16? Since this change needs to be synchronized with a change to GH required checks (manual process), and kinda wanted to only do this once when Node 20 gets LTS in a few weeks

Technically there are about six weeks while 18 is the only LTS. I'm fine with doing the drop 16 at the same time as add 20, though either way we're fudging on what LTS is.

Regarding GH checks, it's rare that we have an error in one Node and not the other. Why don't we drop the 16 checks now and when 20 is running in CI we enable those? That would reduce the need to rerun CI on open PRs.

@erights
Copy link
Member

erights commented Sep 22, 2023

What about Endo?

Copy link
Member

@mhofman mhofman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Can you update the title and description to indicate this is adding Node 20?

Also we'll need to synchronize the update of branch protections

@@ -37,7 +37,7 @@
"typescript": "~5.3.2"
},
"engines": {
"node": "^16.13 || ^18.12"
"node": "^18.12 || ^20.9"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🙏

@mhofman
Copy link
Member

mhofman commented Dec 5, 2023

Oh yikes, looks like bufferfromfile is not compatible with node >19

@mhofman
Copy link
Member

mhofman commented Dec 5, 2023

Oh we already have a fork, maybe we can patch it there. Upstream looks unmaintained.

@turadg
Copy link
Member Author

turadg commented Dec 5, 2023

Upstream looks unmaintained.

Agreed, Wandalen/BufferFromFile#53

we already have a fork, maybe we can patch it there.

https://github.com/agoric-labs/BufferFromFile I'll take a crack at it.

@turadg
Copy link
Member Author

turadg commented Dec 8, 2023

Since Node 20 is blocked on the Bufferfile problem, @mhofman are you open now to dropping Node 16 without adopting 20? 16 is EOL so there's no point supporting it.

@mhofman
Copy link
Member

mhofman commented Dec 8, 2023

For master I think that's ok. For the release branch I'd be more reticent.

@turadg turadg added the automerge:rebase Automatically rebase updates, then merge label Dec 8, 2023
@turadg
Copy link
Member Author

turadg commented Dec 8, 2023

Integration errors below. In hindsight, when we have have a range of versions supported but only integrate with one, perhaps we should always integrate with the active LTS so that when it becomes the maintenance LTS we know it works.

deployment-test (Loadgen)

failed to delete intrinsics.Symbol.dispose (TypeError#1)
TypeError#1: Cannot delete property 'dispose' of function Symbol() { [native code] }

(TypeError#1)
Error: Process completed with exit code 255.

getting-started (all)

  Difference (- actual, + expected):

  - 'too many retries'
  + 'listening'

  › gettingStartedWorkflowTest (packages/agoric-cli/tools/getting-started.js:247:7)

I don't see any earlier errors in the log. Maybe it's an API change?

@turadg turadg mentioned this pull request Dec 8, 2023
@erights
Copy link
Member

erights commented Dec 8, 2023

failed to delete intrinsics.Symbol.dispose (TypeError#1)
TypeError#1: Cannot delete property 'dispose' of function Symbol() { [native code] }

This is a symptom of a problem fixed in endo ages ago:

endojs/endo#1578 merged May 4

endojs/endo#1579 merged May 30

which, IIUC, is well before the endo release that agoric_sdk currently depends on.

Where is this error coming from? What version of endo is it using?

@mhofman
Copy link
Member

mhofman commented Dec 9, 2023

Oh the loadgen dapp might be relying on an old Endo version. We likely need to fix other dapps first too.

@mhofman
Copy link
Member

mhofman commented Dec 9, 2023

FYI this Node 18 breakage is very recent (late November release), qnd has been trickling out this week.

Copy link

@turadg - This PR appears to be stuck. It's had a merge label for > 24 hours

@turadg turadg removed the automerge:rebase Automatically rebase updates, then merge label Dec 10, 2023
@turadg
Copy link
Member Author

turadg commented Dec 10, 2023

this Node 18 breakage is very recent (late November release

Are you saying 18.19 introduced the breakage and 18.18 should work? It's not in #8638

@mhofman
Copy link
Member

mhofman commented Dec 10, 2023

Are you saying 18.19 introduced the breakage and 18.18 should work? It's not in #8638

Correct. Node 18.19 introduced a breaking change to old versions of Endo / SES. agoric-sdk has long updated SES, but we were only testing dapps in Node 16

@turadg
Copy link
Member Author

turadg commented Dec 11, 2023

I think the 18.19 change is just what #8600 fixes. There's some other failure in getting-started (referenced above) but that's not a required check so this could land and we could follow up fixing that.

For the 18.19, the patch against ses 0.18.4 isn't applying cleanly against 0.18.8. @kriskowal should we repatch or wait for Endo to be updated?

@mhofman
Copy link
Member

mhofman commented Dec 11, 2023

#8600 is not necessary on master since the version of SES on master already includes that fix.

@turadg turadg added the automerge:rebase Automatically rebase updates, then merge label Dec 11, 2023
Copy link

@turadg - This PR appears to be stuck. It's had a merge label for > 24 hours

@turadg turadg removed the automerge:rebase Automatically rebase updates, then merge label Dec 13, 2023
@0xpatrickdev 0xpatrickdev requested a review from mhofman January 29, 2024 19:44
@mhofman mhofman added the force:integration Force integration tests to run on PR label Jan 29, 2024
Copy link
Member

@mhofman mhofman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Couple small tweaks needed. I added the force:integration label to see how integration tests run with this change. Also please manually rebase this PR on top of the latest master before merging, mergify and our CI checks have a limitation not enforcing our linear history rule when a merge commit exists in the branch.

yarn.lock Outdated Show resolved Hide resolved
"engines": {
"node": "^18.12"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking the create-dapp package actually should keep an engines field like the other packages

@0xpatrickdev
Copy link
Member

I think #8829 is the last piece before this can pass. CI seems to be failing due to the dependency on dapp-fungible-faucet

@mhofman
Copy link
Member

mhofman commented Jan 29, 2024

I think #8829 is the last piece before this can pass. CI seems to be failing due to the dependency on dapp-fungible-faucet

I would not block on that PR, and maybe force node 18.18 on that workflow instead?

Copy link
Contributor

@LuqiPan LuqiPan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@turadg turadg added the automerge:rebase Automatically rebase updates, then merge label Mar 13, 2024
@mergify mergify bot merged commit 183fddc into master Mar 13, 2024
66 checks passed
@mergify mergify bot deleted the drop-node-16 branch March 13, 2024 20:02
@erights
Copy link
Member

erights commented Mar 13, 2024

See also endojs/endo#2140

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automerge:rebase Automatically rebase updates, then merge force:integration Force integration tests to run on PR
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants