mirror of
https://github.com/discordjs/discord.js.git
synced 2026-03-18 20:43:30 +01:00
fix(Shard): add env, execArgv, and argv for worker-based shards (#10429)
* fix(Shard): add env, execArgv, and argv to worker-based threads * chore: remove process only docs assertion from certain shard options * chore: update comments for Shard.js * refactor: Use SHARE_ENV for worker shard's env * chore: import order --------- Co-authored-by: Cat++ <69035887+NotGhex@users.noreply.github.com>
This commit is contained in:
@@ -5,9 +5,11 @@ const path = require('node:path');
|
|||||||
const process = require('node:process');
|
const process = require('node:process');
|
||||||
const { setTimeout, clearTimeout } = require('node:timers');
|
const { setTimeout, clearTimeout } = require('node:timers');
|
||||||
const { setTimeout: sleep } = require('node:timers/promises');
|
const { setTimeout: sleep } = require('node:timers/promises');
|
||||||
|
const { SHARE_ENV } = require('node:worker_threads');
|
||||||
const { DiscordjsError, ErrorCodes } = require('../errors');
|
const { DiscordjsError, ErrorCodes } = require('../errors');
|
||||||
const ShardEvents = require('../util/ShardEvents');
|
const ShardEvents = require('../util/ShardEvents');
|
||||||
const { makeError, makePlainError } = require('../util/Util');
|
const { makeError, makePlainError } = require('../util/Util');
|
||||||
|
|
||||||
let childProcess = null;
|
let childProcess = null;
|
||||||
let Worker = null;
|
let Worker = null;
|
||||||
|
|
||||||
@@ -49,13 +51,13 @@ class Shard extends EventEmitter {
|
|||||||
this.silent = manager.silent;
|
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[]}
|
* @type {string[]}
|
||||||
*/
|
*/
|
||||||
this.args = manager.shardArgs ?? [];
|
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[]}
|
* @type {string[]}
|
||||||
*/
|
*/
|
||||||
this.execArgv = manager.execArgv;
|
this.execArgv = manager.execArgv;
|
||||||
@@ -136,7 +138,12 @@ class Shard extends EventEmitter {
|
|||||||
.on('exit', this._exitListener);
|
.on('exit', this._exitListener);
|
||||||
break;
|
break;
|
||||||
case 'worker':
|
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: SHARE_ENV,
|
||||||
|
execArgv: this.execArgv,
|
||||||
|
argv: this.args,
|
||||||
|
})
|
||||||
.on('message', this._handleMessage.bind(this))
|
.on('message', this._handleMessage.bind(this))
|
||||||
.on('exit', this._exitListener);
|
.on('exit', this._exitListener);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -37,9 +37,7 @@ class ShardingManager extends EventEmitter {
|
|||||||
* @property {boolean} [silent=false] Whether to pass the silent flag to child process
|
* @property {boolean} [silent=false] Whether to pass the silent flag to child process
|
||||||
* (only available when mode is set to 'process')
|
* (only available when mode is set to 'process')
|
||||||
* @property {string[]} [shardArgs=[]] Arguments to pass to the shard script when spawning
|
* @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
|
* @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
|
* @property {string} [token] Token to use for automatic shard count and passing to shards
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user