nx 20.2.0-canary.20241122-a1efb63 → 20.2.0-canary.20241123-128778e
Sign up to get free protection for your applications and to get access to all the features.
- package/package.json +11 -11
- package/src/command-line/init/init-v2.js +1 -0
- package/src/core/graph/main.js +1 -1
- package/src/core/graph/styles.js +1 -1
- package/src/daemon/client/client.js +3 -0
- package/src/daemon/server/server.js +9 -0
- package/src/daemon/tmp-dir.js +1 -1
- package/src/native/nx.wasm32-wasi.wasm +0 -0
- package/src/project-graph/plugins/isolation/plugin-worker.js +20 -2
package/src/core/graph/styles.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[532],{
|
1
|
+
"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[532],{15894:()=>{}},s=>{var e;e=15894,s(s.s=e)}]);
|
@@ -406,6 +406,9 @@ class DaemonClient {
|
|
406
406
|
}
|
407
407
|
}
|
408
408
|
async startInBackground() {
|
409
|
+
if (global.NX_PLUGIN_WORKER) {
|
410
|
+
throw new Error('Fatal Error: Something unexpected has occurred. Plugin Workers should not start a new daemon process. Please report this issue.');
|
411
|
+
}
|
409
412
|
(0, node_fs_1.mkdirSync)(tmp_dir_1.DAEMON_DIR_FOR_CURRENT_WORKSPACE, { recursive: true });
|
410
413
|
if (!(0, node_fs_1.existsSync)(tmp_dir_1.DAEMON_OUTPUT_LOG_FILE)) {
|
411
414
|
(0, node_fs_1.writeFileSync)(tmp_dir_1.DAEMON_OUTPUT_LOG_FILE, '');
|
@@ -353,6 +353,15 @@ async function startServer() {
|
|
353
353
|
server.listen((0, socket_utils_1.getFullOsSocketPath)(), async () => {
|
354
354
|
try {
|
355
355
|
logger_1.serverLogger.log(`Started listening on: ${(0, socket_utils_1.getFullOsSocketPath)()}`);
|
356
|
+
setInterval(() => {
|
357
|
+
if ((0, cache_1.getDaemonProcessIdSync)() !== process.pid) {
|
358
|
+
return (0, shutdown_utils_1.handleServerProcessTermination)({
|
359
|
+
server,
|
360
|
+
reason: 'this process is no longer the current daemon (native)',
|
361
|
+
sockets: exports.openSockets,
|
362
|
+
});
|
363
|
+
}
|
364
|
+
}).unref();
|
356
365
|
// this triggers the storage of the lock file hash
|
357
366
|
daemonIsOutdated();
|
358
367
|
if (!(0, shutdown_utils_1.getWatcherInstance)()) {
|
package/src/daemon/tmp-dir.js
CHANGED
@@ -43,7 +43,7 @@ function isDaemonDisabled() {
|
|
43
43
|
function socketDirName() {
|
44
44
|
const hasher = (0, crypto_1.createHash)('sha256');
|
45
45
|
hasher.update(workspace_root_1.workspaceRoot.toLowerCase());
|
46
|
-
const unique = hasher.digest('hex').substring(0,
|
46
|
+
const unique = hasher.digest('hex').substring(0, 20);
|
47
47
|
return (0, path_1.join)(tmp_1.tmpdir, unique);
|
48
48
|
}
|
49
49
|
/**
|
Binary file
|
@@ -10,9 +10,19 @@ if (process.env.NX_PERF_LOGGING === 'true') {
|
|
10
10
|
require('../../../utils/perf-logging');
|
11
11
|
}
|
12
12
|
global.NX_GRAPH_CREATION = true;
|
13
|
+
global.NX_PLUGIN_WORKER = true;
|
14
|
+
let connected = false;
|
13
15
|
let plugin;
|
14
16
|
const socketPath = process.argv[2];
|
15
17
|
const server = (0, net_1.createServer)((socket) => {
|
18
|
+
connected = true;
|
19
|
+
// This handles cases where the host process was killed
|
20
|
+
// after the worker connected but before the worker was
|
21
|
+
// instructed to load the plugin.
|
22
|
+
const loadTimeout = setTimeout(() => {
|
23
|
+
console.error(`Plugin Worker exited because no plugin was loaded within 10 seconds of starting up.`);
|
24
|
+
process.exit(1);
|
25
|
+
}, 10000).unref();
|
16
26
|
socket.on('data', (0, consume_messages_from_socket_1.consumeMessagesFromSocket)((raw) => {
|
17
27
|
const message = JSON.parse(raw.toString());
|
18
28
|
if (!(0, messaging_1.isPluginWorkerMessage)(message)) {
|
@@ -20,6 +30,8 @@ const server = (0, net_1.createServer)((socket) => {
|
|
20
30
|
}
|
21
31
|
return (0, messaging_1.consumeMessage)(socket, message, {
|
22
32
|
load: async ({ plugin: pluginConfiguration, root }) => {
|
33
|
+
if (loadTimeout)
|
34
|
+
clearTimeout(loadTimeout);
|
23
35
|
process.chdir(root);
|
24
36
|
try {
|
25
37
|
const [promise] = (0, loader_1.loadNxPlugin)(pluginConfiguration, root);
|
@@ -112,6 +124,8 @@ const server = (0, net_1.createServer)((socket) => {
|
|
112
124
|
// since the worker is spawned per host process. As such,
|
113
125
|
// we can safely close the worker when the host disconnects.
|
114
126
|
socket.on('end', () => {
|
127
|
+
// Destroys the socket once it's fully closed.
|
128
|
+
socket.destroySoon();
|
115
129
|
// Stops accepting new connections, but existing connections are
|
116
130
|
// not closed immediately.
|
117
131
|
server.close(() => {
|
@@ -121,11 +135,15 @@ const server = (0, net_1.createServer)((socket) => {
|
|
121
135
|
catch (e) { }
|
122
136
|
process.exit(0);
|
123
137
|
});
|
124
|
-
// Destroys the socket once it's fully closed.
|
125
|
-
socket.destroySoon();
|
126
138
|
});
|
127
139
|
});
|
128
140
|
server.listen(socketPath);
|
141
|
+
setTimeout(() => {
|
142
|
+
if (!connected) {
|
143
|
+
console.error('The plugin worker is exiting as it was not connected to within 5 seconds.');
|
144
|
+
process.exit(1);
|
145
|
+
}
|
146
|
+
}, 5000).unref();
|
129
147
|
const exitHandler = (exitCode) => () => {
|
130
148
|
server.close();
|
131
149
|
try {
|