From 786169dc124c233bb3a392643baa281212745a68 Mon Sep 17 00:00:00 2001 From: Cat++ <69035887+NotGhex@users.noreply.github.com> Date: Sun, 4 Aug 2024 19:36:32 +0800 Subject: [PATCH 1/5] fix(Shard): add env, execArgv, and argv to worker-based threads --- packages/discord.js/src/sharding/Shard.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/discord.js/src/sharding/Shard.js b/packages/discord.js/src/sharding/Shard.js index f833309f9f06..b01cfa010022 100644 --- a/packages/discord.js/src/sharding/Shard.js +++ b/packages/discord.js/src/sharding/Shard.js @@ -136,7 +136,12 @@ class Shard extends EventEmitter { .on('exit', this._exitListener); break; case 'worker': - this.worker = new Worker(path.resolve(this.manager.file), { workerData: this.env }) + this.worker = new Worker(path.resolve(this.manager.file), { + workerData: this.env, + env: this.env, + execArgv: this.execArgv, + argv: this.args, + }) .on('message', this._handleMessage.bind(this)) .on('exit', this._exitListener); break; From f82aba6842f6cf6ca53f3fa470f1e7669d993c90 Mon Sep 17 00:00:00 2001 From: Cat++ <69035887+NotGhex@users.noreply.github.com> Date: Sun, 4 Aug 2024 19:54:34 +0800 Subject: [PATCH 2/5] chore: remove process only docs assertion from certain shard options --- packages/discord.js/src/sharding/ShardingManager.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/discord.js/src/sharding/ShardingManager.js b/packages/discord.js/src/sharding/ShardingManager.js index 4b15b46c562c..656b5f38019e 100644 --- a/packages/discord.js/src/sharding/ShardingManager.js +++ b/packages/discord.js/src/sharding/ShardingManager.js @@ -37,9 +37,7 @@ class ShardingManager extends EventEmitter { * @property {boolean} [silent=false] Whether to pass the silent flag to child process * (only available when mode is set to 'process') * @property {string[]} [shardArgs=[]] Arguments to pass to the shard script when spawning - * (only available when mode is set to 'process') * @property {string[]} [execArgv=[]] Arguments to pass to the shard script executable when spawning - * (only available when mode is set to 'process') * @property {string} [token] Token to use for automatic shard count and passing to shards */ From ef2c90091d81e6c515d41e79fcab4e853bf8e3d8 Mon Sep 17 00:00:00 2001 From: Cat++ <69035887+NotGhex@users.noreply.github.com> Date: Sun, 4 Aug 2024 20:23:25 +0800 Subject: [PATCH 3/5] chore: update comments for Shard.js --- packages/discord.js/src/sharding/Shard.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/discord.js/src/sharding/Shard.js b/packages/discord.js/src/sharding/Shard.js index b01cfa010022..0cb45b349c63 100644 --- a/packages/discord.js/src/sharding/Shard.js +++ b/packages/discord.js/src/sharding/Shard.js @@ -49,13 +49,13 @@ class Shard extends EventEmitter { this.silent = manager.silent; /** - * Arguments for the shard's process (only when {@link ShardingManager#mode} is `process`) + * Arguments for the shard's process/worker * @type {string[]} */ this.args = manager.shardArgs ?? []; /** - * Arguments for the shard's process executable (only when {@link ShardingManager#mode} is `process`) + * Arguments for the shard's process/worker executable * @type {string[]} */ this.execArgv = manager.execArgv; From ef6103c0b34dac4b94e3666c4177d8d094f459d7 Mon Sep 17 00:00:00 2001 From: Cat++ <69035887+catplvsplus@users.noreply.github.com> Date: Tue, 20 Aug 2024 18:24:38 +0800 Subject: [PATCH 4/5] refactor: Use SHARE_ENV for worker shard's env --- packages/discord.js/src/sharding/Shard.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/discord.js/src/sharding/Shard.js b/packages/discord.js/src/sharding/Shard.js index 0cb45b349c63..7b1fd86ef249 100644 --- a/packages/discord.js/src/sharding/Shard.js +++ b/packages/discord.js/src/sharding/Shard.js @@ -8,6 +8,8 @@ const { setTimeout: sleep } = require('node:timers/promises'); const { DiscordjsError, ErrorCodes } = require('../errors'); const ShardEvents = require('../util/ShardEvents'); const { makeError, makePlainError } = require('../util/Util'); +const { SHARE_ENV } = require('node:worker_threads'); + let childProcess = null; let Worker = null; @@ -138,7 +140,7 @@ class Shard extends EventEmitter { case 'worker': this.worker = new Worker(path.resolve(this.manager.file), { workerData: this.env, - env: this.env, + env: SHARE_ENV, execArgv: this.execArgv, argv: this.args, }) From 9dbd59b6f1364583b9b08643eac71fc042da639a Mon Sep 17 00:00:00 2001 From: Cat++ <69035887+catplvsplus@users.noreply.github.com> Date: Tue, 20 Aug 2024 19:26:36 +0800 Subject: [PATCH 5/5] chore: import order --- packages/discord.js/src/sharding/Shard.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/discord.js/src/sharding/Shard.js b/packages/discord.js/src/sharding/Shard.js index 7b1fd86ef249..9d9da67d518e 100644 --- a/packages/discord.js/src/sharding/Shard.js +++ b/packages/discord.js/src/sharding/Shard.js @@ -5,10 +5,10 @@ const path = require('node:path'); const process = require('node:process'); const { setTimeout, clearTimeout } = require('node:timers'); const { setTimeout: sleep } = require('node:timers/promises'); +const { SHARE_ENV } = require('node:worker_threads'); const { DiscordjsError, ErrorCodes } = require('../errors'); const ShardEvents = require('../util/ShardEvents'); const { makeError, makePlainError } = require('../util/Util'); -const { SHARE_ENV } = require('node:worker_threads'); let childProcess = null; let Worker = null;