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

chore(NA): bump node into v20 #173461

Merged
merged 31 commits into from
Jan 2, 2024
Merged
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
c8856b6
Revert "Revert "Upgrade to Node.js 20 (#162696)""
mistic Nov 23, 2023
a49cdff
chore(NA): use node v20.10.0 instead
mistic Nov 23, 2023
60860ec
chore(NA): use node v20.10.0 instead
mistic Nov 23, 2023
1809b42
chore(NA): use node v20.10.0 instead
mistic Nov 24, 2023
c011e33
chore(NA): merge and solve conflicts with main
mistic Dec 15, 2023
60a36ac
chore(NA): replace node version
mistic Dec 16, 2023
a2e8a83
Merge remote-tracking branch 'upstream/main' into bump-node20
mistic Dec 16, 2023
627af3a
chore(NA): update yarn lock file
mistic Dec 16, 2023
ba4bec8
Merge branch 'main' into bump-node20
mistic Dec 16, 2023
ff5b74f
Merge branch 'main' into bump-node20
mistic Dec 18, 2023
ac80fa9
chore(NA): update re2 builds bundled into the distributable
mistic Dec 18, 2023
5421f0a
Merge branch 'bump-node20' of github.com:mistic/kibana into bump-node20
mistic Dec 18, 2023
e759172
Merge branch 'main' into bump-node20
mistic Dec 18, 2023
1bbf14b
Merge branch 'main' into bump-node20
mistic Dec 19, 2023
683b55d
Merge remote-tracking branch 'upstream/main' into bump-node20
mistic Dec 19, 2023
cc78d15
test(NA): add waitFor on artifact_entries_list ftr test
mistic Dec 19, 2023
3db1c03
test(NA): add waitFor on artifact_entries_list ftr test
mistic Dec 19, 2023
b4536cb
Revert "test(NA): add waitFor on artifact_entries_list ftr test"
mistic Dec 19, 2023
b06e0a0
Revert "test(NA): add waitFor on artifact_entries_list ftr test"
mistic Dec 19, 2023
2d2f693
Merge remote-tracking branch 'upstream/main' into bump-node20
mistic Dec 19, 2023
57485e0
Merge branch 'main' into bump-node20
mistic Dec 19, 2023
59aa4b7
Merge branch 'main' into bump-node20
mistic Dec 20, 2023
6273984
chore(NA): update shasum on patch native modules task
mistic Dec 21, 2023
9cb8fe2
Merge branch 'bump-node20' of github.com:mistic/kibana into bump-node20
mistic Dec 21, 2023
076496e
chore(NA): merge and solve conflicts with main
mistic Dec 22, 2023
cf74891
Merge remote-tracking branch 'upstream/main' into bump-node20
jbudz Dec 26, 2023
35a17e4
fix conflict
jbudz Dec 26, 2023
9cb7970
fix arm checksum
jbudz Dec 26, 2023
54fcc9f
update types
jbudz Dec 26, 2023
2361ced
Merge branch 'main' into bump-node20
jbudz Jan 2, 2024
0431e4d
Merge remote-tracking branch 'upstream/main' into bump-node20
jbudz Jan 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .buildkite/pipelines/artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ steps:
- exit_status: -1
agents:
queue: n2-2
timeout_in_minutes: 30
timeout_in_minutes: 60
if: "build.env('RELEASE_BUILD') == null || build.env('RELEASE_BUILD') == '' || build.env('RELEASE_BUILD') == 'false'"
retry:
automatic:
Expand Down
2 changes: 1 addition & 1 deletion .node-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18.18.2
20.10.0
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
18.18.2
20.10.0
12 changes: 6 additions & 6 deletions WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install
# Setup the Node.js toolchain for the architectures we want to support
node_repositories(
node_repositories = {
"18.18.2-darwin_amd64": ("node-v18.18.2-darwin-x64.tar.gz", "node-v18.18.2-darwin-x64", "5bb8da908ed590e256a69bf2862238c8a67bc4600119f2f7721ca18a7c810c0f"),
"18.18.2-darwin_arm64": ("node-v18.18.2-darwin-arm64.tar.gz", "node-v18.18.2-darwin-arm64", "9f982cc91b28778dd8638e4f94563b0c2a1da7aba62beb72bd427721035ab553"),
"18.18.2-linux_arm64": ("node-v18.18.2-linux-arm64.tar.xz", "node-v18.18.2-linux-arm64", "8a5a03f6a742159c9aa0ae3a99b368cd938cf62f3a5522a2e5acbe6313710efe"),
"18.18.2-linux_amd64": ("node-v18.18.2-linux-x64.tar.xz", "node-v18.18.2-linux-x64", "f7cf590bc7153f3beaa9e1138d00e50d74df223f0bec61f63e7df65f7315b76a"),
"18.18.2-windows_amd64": ("node-v18.18.2-win-x64.zip", "node-v18.18.2-win-x64", "3bb0e51e579a41a22b3bf6cb2f3e79c03801aa17acbe0ca00fc555d1282e7acd"),
"20.10.0-darwin_amd64": ("node-v20.10.0-darwin-x64.tar.gz", "node-v20.10.0-darwin-x64", "5ff5e8abd3eea6e5f507eb6677554f5b2188eedef654096aa4168a9941e91a32"),
"20.10.0-darwin_arm64": ("node-v20.10.0-darwin-arm64.tar.gz", "node-v20.10.0-darwin-arm64", "68b93099451d77aac116cf8fce179cabcf53fec079508dc6b39d3a086fb461a8"),
"20.10.0-linux_arm64": ("node-v20.10.0-linux-arm64.tar.xz", "node-v20.10.0-linux-arm64", "a5c22683890d5d244f3afd488ef44e573b5b8287f8911b9a1b061ed3f20a5e6d"),
"20.10.0-linux_amd64": ("node-v20.10.0-linux-x64.tar.xz", "node-v20.10.0-linux-x64", "9c0fbc8cc7be9a6543af4b9afb05759c538c0f81015c388d63277b0158507697"),
"20.10.0-windows_amd64": ("node-v20.10.0-win-x64.zip", "node-v20.10.0-win-x64", "e5b861814a97e28ae7ac06a34e88fd5e0565b447d270c26e20b5ef60bf0aaaf9"),
},
node_version = "18.18.2",
node_version = "20.10.0",
node_urls = [
"https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/dist/v{version}/{filename}",
],
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -74,12 +74,12 @@
"url": "https://github.com/elastic/kibana.git"
},
"engines": {
"node": "18.18.2",
"node": "20.10.0",
"yarn": "^1.22.19"
},
"resolutions": {
"**/@hello-pangea/dnd": "16.2.0",
"**/@types/node": "18.18.5",
"**/@types/node": "20.10.5",
"**/@typescript-eslint/utils": "5.62.0",
"**/chokidar": "^3.5.3",
"**/globule/minimatch": "^3.1.2",
Expand Down Expand Up @@ -1412,7 +1412,7 @@
"@types/multistream": "^4.1.0",
"@types/mustache": "^0.8.31",
"@types/nock": "^10.0.3",
"@types/node": "18.18.5",
"@types/node": "20.10.5",
"@types/node-fetch": "2.6.4",
"@types/node-forge": "^1.3.10",
"@types/nodemailer": "^6.4.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ test('return error when manifest content is not a valid JSON', async () => {
});

await expect(parseManifest(pluginPath, packageInfo)).rejects.toMatchObject({
message: `Unexpected token o in JSON at position 1 (invalid-manifest, ${pluginManifestPath})`,
message: `Unexpected token 'o', "not-json" is not valid JSON (invalid-manifest, ${pluginManifestPath})`,
type: PluginDiscoveryErrorType.InvalidManifest,
path: pluginManifestPath,
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,7 @@ describe('plugins discovery system', () => {
.toPromise();

expect(errors).toContain(
`Error: Unexpected token o in JSON at position 1 (invalid-manifest, ${manifestPath(
`Error: Unexpected token 'o', "not-json" is not valid JSON (invalid-manifest, ${manifestPath(
'plugin_a'
)})`
);
Expand Down
2 changes: 1 addition & 1 deletion packages/kbn-es-archiver/src/lib/archives/parse.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ describe('esArchiver createParseArchiveStreams', () => {
] as [Readable, ...Writable[]]);
throw new Error('should have failed');
} catch (err) {
expect(err.message).toEqual(expect.stringContaining('Unexpected number'));
expect(err.message).toEqual(`Expected property name or '}' in JSON at position 1`);
}
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,11 @@ const { ES_KEY_PATH, ES_CERT_PATH } = require('@kbn/dev-utils');
}
);

// setup server auto close after 1 second of silence
// setup server auto close after 5 second of silence
let serverCloseTimer;
const delayServerClose = () => {
clearTimeout(serverCloseTimer);
serverCloseTimer = setTimeout(() => server.close(), 1000);
serverCloseTimer = setTimeout(() => server.close(), 5000);
};
server.on('request', delayServerClose);
server.on('listening', delayServerClose);
Expand Down
15 changes: 9 additions & 6 deletions packages/kbn-es/src/utils/docker.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
*/
import mockFs from 'mock-fs';

import { existsSync } from 'fs';
import { stat } from 'fs/promises';
import Fsp from 'fs/promises';
import { basename } from 'path';

import {
Expand Down Expand Up @@ -115,7 +114,7 @@ const volumeCmdTest = async (volumeCmd: string[]) => {

// extract only permission from mode
// eslint-disable-next-line no-bitwise
expect((await stat(serverlessObjectStorePath)).mode & 0o777).toBe(0o777);
expect((await Fsp.stat(serverlessObjectStorePath)).mode & 0o777).toBe(0o777);
};

describe('resolveDockerImage()', () => {
Expand Down Expand Up @@ -508,7 +507,7 @@ describe('setupServerlessVolumes()', () => {
const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath });

volumeCmdTest(volumeCmd);
expect(existsSync(serverlessObjectStorePath)).toBe(true);
await expect(Fsp.access(serverlessObjectStorePath)).resolves.not.toThrow();
});

test('should use an existing object store', async () => {
Expand All @@ -517,7 +516,9 @@ describe('setupServerlessVolumes()', () => {
const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath });

volumeCmdTest(volumeCmd);
expect(existsSync(`${serverlessObjectStorePath}/cluster_state/lease`)).toBe(true);
await expect(
Fsp.access(`${serverlessObjectStorePath}/cluster_state/lease`)
).resolves.not.toThrow();
});

test('should remove an existing object store when clean is passed', async () => {
Expand All @@ -526,7 +527,9 @@ describe('setupServerlessVolumes()', () => {
const volumeCmd = await setupServerlessVolumes(log, { basePath: baseEsPath, clean: true });

volumeCmdTest(volumeCmd);
expect(existsSync(`${serverlessObjectStorePath}/cluster_state/lease`)).toBe(false);
await expect(
Fsp.access(`${serverlessObjectStorePath}/cluster_state/lease`)
).rejects.toThrowError();
});

test('should add SSL and IDP metadata volumes when ssl and kibanaUrl are passed', async () => {
Expand Down
11 changes: 9 additions & 2 deletions packages/kbn-es/src/utils/docker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -542,12 +542,19 @@ export async function setupServerlessVolumes(log: ToolingLog, options: Serverles
log.info(chalk.bold(`Checking for local serverless ES object store at ${objectStorePath}`));
log.indent(4);

if (clean && fs.existsSync(objectStorePath)) {
let exists = null;
try {
await Fsp.access(objectStorePath);
exists = true;
} catch (e) {
exists = false;
}
if (clean && exists) {
log.info('Cleaning existing object store.');
await Fsp.rm(objectStorePath, { recursive: true, force: true });
}

if (clean || !fs.existsSync(objectStorePath)) {
if (clean || !exists) {
await Fsp.mkdir(objectStorePath, { recursive: true }).then(() =>
log.info('Created new object store.')
);
Expand Down
20 changes: 10 additions & 10 deletions src/dev/build/tasks/patch_native_modules_task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ const packages: Package[] = [
extractMethod: 'gunzip',
archives: {
'linux-x64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-x64-108.gz',
sha256: '136b6cf61b54bf610071a950400518add65d44a4923f11ef658769df1a037f0b',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-x64-115.gz',
sha256: 'b88183fe7bc8afa260d22cd909f496ab5636aace7075b54ac345d33ea32aedc0',
},
// Linux ARM builds are currently done manually as Github Actions used in upstream project
// do not natively support an Linux ARM target.
Expand All @@ -63,20 +63,20 @@ const packages: Package[] = [
// * capture the sha256 with: `shasum -a 256 linux-arm64-*`
// * upload the `linux-arm64-*.gz` artifact to the `yarn-prebuilt-artifacts` bucket in GCS using the correct version number
'linux-arm64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-arm64-108.gz',
sha256: '311822ac689bd49a534ecf400b4732a288ad218f711b0e593e41dd3a6b739d97',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/linux-arm64-115.gz',
sha256: '6c04136a6658df3dcc5b8ac0041641c227d232bed385fe55f62c8470f8db041d',
},
'darwin-x64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-x64-108.gz',
sha256: '215b6ffb1e5d124439a7dbdd09e4ed1263e065839354a6ad67091ce00d14ee9b',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-x64-115.gz',
mistic marked this conversation as resolved.
Show resolved Hide resolved
sha256: '1e0d79983c94222c414a5410444ec0ccf37614fd0e45187d0f313a19b203702c',
},
'darwin-arm64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-arm64-108.gz',
sha256: '0a8bc28150c9efd04f3b52ac214cc7898bde1b8e1f8e6900ae711b03665ff657',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/darwin-arm64-115.gz',
sha256: '192c8e036062504b818941989c44ddb799efe0419d039f7089caedb09d49a597',
},
'win32-x64': {
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/win32-x64-108.gz',
sha256: '117872144e4a2bb61611aacc51ac9fd24e494c209cf63366f236099a662316eb',
url: 'https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache/node-re2/uhop/node-re2/releases/download/1.20.9/win32-x64-115.gz',
sha256: '01ae2df89f976f4097e50e121d7ec6ac62ec8050c838107dcfb976d037a60d59',
},
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -744,7 +744,7 @@ describe('createStreamingBatchedFunction()', () => {
const [, error1] = await promise1;
const [result1] = await promise2;
expect(error1).toMatchObject({
message: 'Unexpected token N in JSON at position 0',
message: `Unexpected token 'N', "Not a JSON\n" is not valid JSON`,
code: 'STREAM',
});
expect(result1).toMatchObject({
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/data/public/search/expressions/esdsl.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ describe('esdsl', () => {
} catch (error) {
errorMessage = error.message;
}
expect(errorMessage).toEqual('Unexpected token i in JSON at position 0');
expect(errorMessage).toEqual(`Unexpected token 'i', "invalid json" is not valid JSON`);
});

test('adds filters', async () => {
Expand Down
7 changes: 7 additions & 0 deletions src/setup_node_env/exit_on_warning.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,13 @@ var IGNORE_WARNINGS = [
// We need to discard that warning
name: 'ProductNotSupportedSecurityError',
},
// https://github.com/browserify/browserify-rsa/pull/20
{
name: 'DeprecationWarning',
code: 'DEP0170',
message:
'The URL https://github.com:crypto-browserify/browserify-rsa.git is invalid. Future versions of Node.js will throw an error.',
},
];

if (process.noProcessWarnings !== true) {
Expand Down
46 changes: 0 additions & 46 deletions src/setup_node_env/heap_snapshot.js

This file was deleted.

2 changes: 0 additions & 2 deletions src/setup_node_env/setup_env.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@ require('./exit_on_warning');
require('./harden');
// The following require statements MUST be executed before any others - END

// @todo Remove when migrated to Node 20 (#162696)
require('./heap_snapshot');
require('symbol-observable');
require('source-map-support').install();
require('./node_version_validator');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ describe('user action migrations', () => {
const log = context.log as jest.Mocked<SavedObjectsMigrationLogger>;
expect(log.error.mock.calls[0]).toMatchInlineSnapshot(`
Array [
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token a in JSON at position 1",
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Expected property name or '}' in JSON at position 1",
Object {
"migrations": Object {
"userAction": Object {
Expand Down Expand Up @@ -448,7 +448,7 @@ describe('user action migrations', () => {
const log = context.log as jest.Mocked<SavedObjectsMigrationLogger>;
expect(log.error.mock.calls[0]).toMatchInlineSnapshot(`
Array [
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token b in JSON at position 1",
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Expected property name or '}' in JSON at position 1",
Object {
"migrations": Object {
"userAction": Object {
Expand Down Expand Up @@ -644,7 +644,7 @@ describe('user action migrations', () => {
const log = context.log as jest.Mocked<SavedObjectsMigrationLogger>;
expect(log.error.mock.calls[0]).toMatchInlineSnapshot(`
Array [
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token e in JSON at position 1",
"Failed to migrate user action connector with doc id: 1 version: 8.0.0 error: Unexpected token 'e', \\"new json value\\" is not valid JSON",
Object {
"migrations": Object {
"userAction": Object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ describe('DocumentCreationLogic', () => {
DocumentCreationLogic.actions.onSubmitJson();

expect(DocumentCreationLogic.actions.setErrors).toHaveBeenCalledWith([
'Unexpected token i in JSON at position 0',
`Unexpected token 'i', "invalid JSON" is not valid JSON`,
]);
expect(DocumentCreationLogic.actions.uploadDocuments).not.toHaveBeenCalled();
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import mockFs from 'mock-fs';
import axios from 'axios';
import { createHash } from 'crypto';
import { readFileSync } from 'fs';
import { readFile } from 'fs/promises';
import { resolve as resolvePath } from 'path';
import { Readable } from 'stream';
import { fetch } from './fetch';
Expand Down Expand Up @@ -38,7 +38,7 @@ describe('fetch', () => {
test('downloads the url to the path', async () => {
await fetch('url', TEMP_FILE);

expect(readFileSync(TEMP_FILE, 'utf8')).toEqual('foobar');
await expect(readFile(TEMP_FILE, 'utf8')).resolves.toBe('foobar');
});

test('returns the sha1 hex hash of the http body', async () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@

import Axios from 'axios';
import { createHash } from 'crypto';
import { closeSync, mkdirSync, openSync, writeSync } from 'fs';
import { mkdir, open } from 'fs/promises';
import { writeSync } from 'fs';
import { dirname } from 'path';
import { Readable } from 'stream';
import { finished } from 'stream/promises';
Expand All @@ -21,9 +22,8 @@ export async function fetch(url: string, path: string, logger?: Logger): Promise

const hash = createHash('sha256');

mkdirSync(dirname(path), { recursive: true });
const handle = openSync(path, 'w');

await mkdir(dirname(path), { recursive: true });
const handle = await open(path, 'w');
try {
const response = await Axios.request<Readable>({
url,
Expand All @@ -32,7 +32,7 @@ export async function fetch(url: string, path: string, logger?: Logger): Promise
});

response.data.on('data', (chunk: Buffer) => {
writeSync(handle, chunk);
writeSync(handle.fd, chunk);
hash.update(chunk);
});

Expand All @@ -43,7 +43,7 @@ export async function fetch(url: string, path: string, logger?: Logger): Promise

throw new Error(`Unable to download ${url}: ${error}`);
} finally {
closeSync(handle);
await handle.close();
}

return hash.digest('hex');
Expand Down
Loading