@scrypted/server 0.123.47 → 0.123.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cluster/cluster-setup.d.ts +2 -0
- package/dist/cluster/cluster-setup.js +11 -3
- package/dist/cluster/cluster-setup.js.map +1 -1
- package/dist/cluster/connect-rpc-object.d.ts +18 -0
- package/dist/cluster/cpu-timer.d.ts +6 -0
- package/dist/cluster/cpu-timer.js +44 -0
- package/dist/cluster/cpu-timer.js.map +1 -0
- package/dist/plugin/plugin-api.d.ts +1 -0
- package/dist/plugin/plugin-api.js.map +1 -1
- package/dist/plugin/plugin-host.js +2 -0
- package/dist/plugin/plugin-host.js.map +1 -1
- package/dist/plugin/plugin-remote-worker.js +2 -1
- package/dist/plugin/plugin-remote-worker.js.map +1 -1
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +1 -0
- package/dist/runtime.js.map +1 -1
- package/dist/scrypted-cluster-main.d.ts +5 -3
- package/dist/scrypted-cluster-main.js +33 -13
- package/dist/scrypted-cluster-main.js.map +1 -1
- package/dist/services/cluster-fork.d.ts +2 -1
- package/dist/services/cluster-fork.js +2 -0
- package/dist/services/cluster-fork.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/python/cluster_setup.py +2 -2
- package/python/plugin_remote.py +5 -5
- package/src/cluster/cluster-setup.ts +13 -5
- package/src/cluster/connect-rpc-object.ts +18 -0
- package/src/cluster/cpu-timer.ts +48 -0
- package/src/plugin/plugin-api.ts +1 -0
- package/src/plugin/plugin-host.ts +2 -0
- package/src/plugin/plugin-remote-worker.ts +2 -1
- package/src/runtime.ts +1 -0
- package/src/scrypted-cluster-main.ts +37 -16
- package/src/services/cluster-fork.ts +6 -3
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { ClusterManager,
|
1
|
+
import type { ClusterManager, ForkOptions } from '@scrypted/types';
|
2
2
|
import tls from 'tls';
|
3
3
|
import type { createSelfSignedCertificate } from './cert';
|
4
4
|
import type { PluginAPI } from './plugin/plugin-api';
|
@@ -26,6 +26,7 @@ export interface RunningClusterWorker extends ClusterWorkerProperties {
|
|
26
26
|
forks: Set<ClusterForkOptions>;
|
27
27
|
address: string;
|
28
28
|
weight: number;
|
29
|
+
cpuUsage: number;
|
29
30
|
}
|
30
31
|
export declare class PeerLiveness {
|
31
32
|
private killed;
|
@@ -52,11 +53,12 @@ export declare function startClusterClient(mainFilename: string, serviceControl?
|
|
52
53
|
export declare function createClusterServer(mainFilename: string, scryptedRuntime: ScryptedRuntime, certificate: ReturnType<typeof createSelfSignedCertificate>): tls.Server;
|
53
54
|
export declare class ClusterManagerImpl implements ClusterManager {
|
54
55
|
private api;
|
56
|
+
private clusterWorkerId;
|
55
57
|
private clusterServicePromise;
|
56
58
|
private clusterMode;
|
57
|
-
constructor(api: PluginAPI);
|
59
|
+
constructor(api: PluginAPI, clusterWorkerId: string);
|
58
60
|
getClusterWorkerId(): string;
|
59
61
|
getClusterMode(): 'server' | 'client' | undefined;
|
60
|
-
getClusterWorkers(): Promise<Record<string, ClusterWorker>>;
|
62
|
+
getClusterWorkers(): Promise<Record<string, import("@scrypted/types").ClusterWorker>>;
|
61
63
|
private getClusterService;
|
62
64
|
}
|
@@ -15,14 +15,15 @@ const tls_1 = __importDefault(require("tls"));
|
|
15
15
|
const cluster_hash_1 = require("./cluster/cluster-hash");
|
16
16
|
const cluster_labels_1 = require("./cluster/cluster-labels");
|
17
17
|
const cluster_setup_1 = require("./cluster/cluster-setup");
|
18
|
+
const cpu_timer_1 = require("./cluster/cpu-timer");
|
18
19
|
const plugin_volume_1 = require("./plugin/plugin-volume");
|
19
20
|
const node_worker_common_1 = require("./plugin/runtime/node-worker-common");
|
20
21
|
const runtime_host_1 = require("./plugin/runtime/runtime-host");
|
21
22
|
const rpc_1 = require("./rpc");
|
22
23
|
const rpc_serializer_1 = require("./rpc-serializer");
|
23
|
-
const sleep_1 = require("./sleep");
|
24
24
|
const env_1 = require("./services/env");
|
25
25
|
const info_1 = require("./services/info");
|
26
|
+
const sleep_1 = require("./sleep");
|
26
27
|
(0, source_map_support_1.install)({
|
27
28
|
environment: 'node',
|
28
29
|
});
|
@@ -79,7 +80,7 @@ class ClusterForkResult extends PeerLiveness {
|
|
79
80
|
}
|
80
81
|
}
|
81
82
|
exports.ClusterForkResult = ClusterForkResult;
|
82
|
-
function createClusterForkParam(mainFilename, clusterId, clusterSecret) {
|
83
|
+
function createClusterForkParam(mainFilename, clusterId, clusterSecret, clusterWorkerId) {
|
83
84
|
const clusterForkParam = async (runtime, runtimeWorkerOptions, peerLiveness, getZip) => {
|
84
85
|
let runtimeWorker;
|
85
86
|
const builtins = (0, runtime_host_1.getBuiltinRuntimeHosts)();
|
@@ -118,7 +119,7 @@ function createClusterForkParam(mainFilename, clusterId, clusterSecret) {
|
|
118
119
|
let ping;
|
119
120
|
try {
|
120
121
|
const initializeCluster = await threadPeer.getParam('initializeCluster');
|
121
|
-
await initializeCluster({ clusterId, clusterSecret });
|
122
|
+
await initializeCluster({ clusterId, clusterSecret, clusterWorkerId });
|
122
123
|
getRemote = await threadPeer.getParam('getRemote');
|
123
124
|
ping = await threadPeer.getParam('ping');
|
124
125
|
}
|
@@ -152,6 +153,7 @@ function createClusterForkParam(mainFilename, clusterId, clusterSecret) {
|
|
152
153
|
function startClusterClient(mainFilename, serviceControl) {
|
153
154
|
console.log('Cluster client starting.');
|
154
155
|
const envControl = new env_1.EnvControl();
|
156
|
+
const cpuTimer = new cpu_timer_1.CpuTimer();
|
155
157
|
const originalClusterAddress = process.env.SCRYPTED_CLUSTER_ADDRESS;
|
156
158
|
const labels = (0, cluster_labels_1.getClusterLabels)();
|
157
159
|
const weight = (0, cluster_labels_1.getClusterWorkerWeight)();
|
@@ -197,6 +199,7 @@ function startClusterClient(mainFilename, serviceControl) {
|
|
197
199
|
peer.params['service-control'] = serviceControl;
|
198
200
|
peer.params['env-control'] = envControl;
|
199
201
|
peer.params['info'] = new info_1.Info();
|
202
|
+
peer.params['cpu'] = async () => cpuTimer.sample();
|
200
203
|
const { localAddress, localPort } = socket;
|
201
204
|
console.log('Cluster server connected.', localAddress, localPort);
|
202
205
|
socket.on('close', () => {
|
@@ -218,10 +221,9 @@ function startClusterClient(mainFilename, serviceControl) {
|
|
218
221
|
weight,
|
219
222
|
};
|
220
223
|
const { clusterId, clusterWorkerId } = await connectForkWorker(auth, properties);
|
221
|
-
process.env.SCRYPTED_CLUSTER_WORKER_ID = clusterWorkerId;
|
222
224
|
const clusterPeerSetup = (0, cluster_setup_1.setupCluster)(peer);
|
223
|
-
await clusterPeerSetup.initializeCluster({ clusterId, clusterSecret });
|
224
|
-
peer.params['fork'] = createClusterForkParam(mainFilename, clusterId, clusterSecret);
|
225
|
+
await clusterPeerSetup.initializeCluster({ clusterId, clusterSecret, clusterWorkerId });
|
226
|
+
peer.params['fork'] = createClusterForkParam(mainFilename, clusterId, clusterSecret, clusterWorkerId);
|
225
227
|
await peer.killed;
|
226
228
|
}
|
227
229
|
catch (e) {
|
@@ -236,19 +238,25 @@ function startClusterClient(mainFilename, serviceControl) {
|
|
236
238
|
})();
|
237
239
|
}
|
238
240
|
function createClusterServer(mainFilename, scryptedRuntime, certificate) {
|
239
|
-
|
240
|
-
process.env.SCRYPTED_CLUSTER_WORKER_ID = serverClusterWorkerId;
|
241
|
+
scryptedRuntime.serverClusterWorkerId = crypto_1.default.randomUUID();
|
241
242
|
const serverWorker = {
|
242
243
|
labels: (0, cluster_labels_1.getClusterLabels)(),
|
243
|
-
id: serverClusterWorkerId,
|
244
|
+
id: scryptedRuntime.serverClusterWorkerId,
|
244
245
|
peer: undefined,
|
245
|
-
fork: Promise.resolve(createClusterForkParam(mainFilename, scryptedRuntime.clusterId, scryptedRuntime.clusterSecret)),
|
246
|
+
fork: Promise.resolve(createClusterForkParam(mainFilename, scryptedRuntime.clusterId, scryptedRuntime.clusterSecret, scryptedRuntime.serverClusterWorkerId)),
|
246
247
|
name: process.env.SCRYPTED_CLUSTER_WORKER_NAME || os_1.default.hostname(),
|
247
248
|
address: process.env.SCRYPTED_CLUSTER_ADDRESS,
|
248
249
|
weight: (0, cluster_labels_1.getClusterWorkerWeight)(),
|
249
250
|
forks: new Set(),
|
251
|
+
cpuUsage: 0,
|
250
252
|
};
|
251
|
-
scryptedRuntime.clusterWorkers.set(serverClusterWorkerId, serverWorker);
|
253
|
+
scryptedRuntime.clusterWorkers.set(scryptedRuntime.serverClusterWorkerId, serverWorker);
|
254
|
+
{
|
255
|
+
const cpuTimer = new cpu_timer_1.CpuTimer();
|
256
|
+
setInterval(() => {
|
257
|
+
serverWorker.cpuUsage = cpuTimer.sample();
|
258
|
+
}, 1000);
|
259
|
+
}
|
252
260
|
const server = tls_1.default.createServer({
|
253
261
|
key: certificate.serviceKey,
|
254
262
|
cert: certificate.certificate,
|
@@ -279,6 +287,7 @@ function createClusterServer(mainFilename, scryptedRuntime, certificate) {
|
|
279
287
|
name: auth.id,
|
280
288
|
address: socket.remoteAddress,
|
281
289
|
forks: new Set(),
|
290
|
+
cpuUsage: 0,
|
282
291
|
};
|
283
292
|
scryptedRuntime.clusterWorkers.set(id, worker);
|
284
293
|
peer.killedSafe.finally(() => {
|
@@ -288,6 +297,15 @@ function createClusterServer(mainFilename, scryptedRuntime, certificate) {
|
|
288
297
|
scryptedRuntime.clusterWorkers.delete(id);
|
289
298
|
});
|
290
299
|
console.log('Cluster client authenticated.', socket.remoteAddress, socket.remotePort, properties);
|
300
|
+
let cpu;
|
301
|
+
const cpuTimer = setInterval(async () => {
|
302
|
+
cpu ||= peer.getParam('cpu');
|
303
|
+
const usage = await (await cpu)();
|
304
|
+
worker.cpuUsage = usage;
|
305
|
+
}, 1000);
|
306
|
+
peer.killedSafe.finally(() => {
|
307
|
+
clearInterval(cpuTimer);
|
308
|
+
});
|
291
309
|
}
|
292
310
|
catch (e) {
|
293
311
|
peer.kill(e);
|
@@ -304,13 +322,15 @@ function createClusterServer(mainFilename, scryptedRuntime, certificate) {
|
|
304
322
|
}
|
305
323
|
class ClusterManagerImpl {
|
306
324
|
api;
|
325
|
+
clusterWorkerId;
|
307
326
|
clusterServicePromise;
|
308
327
|
clusterMode = (0, cluster_setup_1.getScryptedClusterMode)()?.[0];
|
309
|
-
constructor(api) {
|
328
|
+
constructor(api, clusterWorkerId) {
|
310
329
|
this.api = api;
|
330
|
+
this.clusterWorkerId = clusterWorkerId;
|
311
331
|
}
|
312
332
|
getClusterWorkerId() {
|
313
|
-
return
|
333
|
+
return this.clusterWorkerId;
|
314
334
|
}
|
315
335
|
getClusterMode() {
|
316
336
|
return this.clusterMode;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"scrypted-cluster-main.js","sourceRoot":"","sources":["../src/scrypted-cluster-main.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"scrypted-cluster-main.js","sourceRoot":"","sources":["../src/scrypted-cluster-main.ts"],"names":[],"mappings":"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"}
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import { ClusterWorker } from "@scrypted/types";
|
1
2
|
import type { RuntimeWorkerOptions } from "../plugin/runtime/runtime-worker";
|
2
3
|
import type { ScryptedRuntime } from "../runtime";
|
3
4
|
import type { ClusterForkOptions, ClusterForkResultInterface, PeerLiveness } from "../scrypted-cluster-main";
|
@@ -5,7 +6,7 @@ export declare class ClusterForkService {
|
|
5
6
|
runtime: ScryptedRuntime;
|
6
7
|
constructor(runtime: ScryptedRuntime);
|
7
8
|
fork(runtimeWorkerOptions: RuntimeWorkerOptions, options: ClusterForkOptions, peerLiveness: PeerLiveness, getZip: () => Promise<Buffer>): Promise<ClusterForkResultInterface>;
|
8
|
-
getClusterWorkers(): Promise<
|
9
|
+
getClusterWorkers(): Promise<Record<string, ClusterWorker>>;
|
9
10
|
getEnvControl(clusterWorkerId: string): Promise<any>;
|
10
11
|
getServiceControl(clusterWorkerId: string): Promise<any>;
|
11
12
|
getInfo(clusterWorkerId: string): Promise<any>;
|
@@ -90,9 +90,11 @@ class ClusterForkService {
|
|
90
90
|
const ret = {};
|
91
91
|
for (const worker of this.runtime.clusterWorkers.values()) {
|
92
92
|
ret[worker.id] = {
|
93
|
+
id: worker.id,
|
93
94
|
name: worker.name,
|
94
95
|
labels: worker.labels,
|
95
96
|
forks: [...worker.forks],
|
97
|
+
cpuUsage: worker.cpuUsage,
|
96
98
|
};
|
97
99
|
}
|
98
100
|
return ret;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"cluster-fork.js","sourceRoot":"","sources":["../../src/services/cluster-fork.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"cluster-fork.js","sourceRoot":"","sources":["../../src/services/cluster-fork.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"root":["../src/cert.ts","../src/db-types.ts","../src/deferred.ts","../src/event-registry.ts","../src/http-interfaces.ts","../src/infer-defaults.ts","../src/io.ts","../src/ip.ts","../src/level.ts","../src/listen-zero.ts","../src/logger.ts","../src/media-helpers.ts","../src/rpc-buffer-serializer.ts","../src/rpc-peer-eval.ts","../src/rpc-serializer.ts","../src/rpc.ts","../src/runtime.ts","../src/scrypted-cluster-main.ts","../src/scrypted-main-exports.ts","../src/scrypted-main.ts","../src/scrypted-plugin-main.ts","../src/scrypted-server-main.ts","../src/server-settings.ts","../src/sleep.ts","../src/state.ts","../src/threading.ts","../src/usertoken.ts","../src/cluster/cluster-hash.ts","../src/cluster/cluster-labels.ts","../src/cluster/cluster-setup.ts","../src/cluster/connect-rpc-object.ts","../src/fetch/http-fetch.ts","../src/fetch/index.ts","../src/mixin/mixin-cycle.ts","../src/plugin/acl.ts","../src/plugin/descriptor.ts","../src/plugin/device.ts","../src/plugin/endpoint.ts","../src/plugin/media.ts","../src/plugin/mediaobject.ts","../src/plugin/plugin-api.ts","../src/plugin/plugin-console.ts","../src/plugin/plugin-debug.ts","../src/plugin/plugin-device.ts","../src/plugin/plugin-error.ts","../src/plugin/plugin-host-api.ts","../src/plugin/plugin-host.ts","../src/plugin/plugin-http.ts","../src/plugin/plugin-lazy-remote.ts","../src/plugin/plugin-npm-dependencies.ts","../src/plugin/plugin-remote-websocket.ts","../src/plugin/plugin-remote-worker.ts","../src/plugin/plugin-remote.ts","../src/plugin/plugin-repl.ts","../src/plugin/plugin-state-check.ts","../src/plugin/plugin-volume.ts","../src/plugin/socket-serializer.ts","../src/plugin/system.ts","../src/plugin/runtime/child-process-worker.ts","../src/plugin/runtime/cluster-fork-worker.ts","../src/plugin/runtime/custom-worker.ts","../src/plugin/runtime/node-fork-worker.ts","../src/plugin/runtime/node-thread-worker.ts","../src/plugin/runtime/node-worker-common.ts","../src/plugin/runtime/python-worker.ts","../src/plugin/runtime/runtime-host.ts","../src/plugin/runtime/runtime-worker.ts","../src/services/addresses.ts","../src/services/alerts.ts","../src/services/backup.ts","../src/services/cluster-fork.ts","../src/services/cors.ts","../src/services/env.ts","../src/services/info.ts","../src/services/plugin.ts","../src/services/service-control.ts","../src/services/users.ts"],"version":"5.7.2"}
|
1
|
+
{"root":["../src/cert.ts","../src/db-types.ts","../src/deferred.ts","../src/event-registry.ts","../src/http-interfaces.ts","../src/infer-defaults.ts","../src/io.ts","../src/ip.ts","../src/level.ts","../src/listen-zero.ts","../src/logger.ts","../src/media-helpers.ts","../src/rpc-buffer-serializer.ts","../src/rpc-peer-eval.ts","../src/rpc-serializer.ts","../src/rpc.ts","../src/runtime.ts","../src/scrypted-cluster-main.ts","../src/scrypted-main-exports.ts","../src/scrypted-main.ts","../src/scrypted-plugin-main.ts","../src/scrypted-server-main.ts","../src/server-settings.ts","../src/sleep.ts","../src/state.ts","../src/threading.ts","../src/usertoken.ts","../src/cluster/cluster-hash.ts","../src/cluster/cluster-labels.ts","../src/cluster/cluster-setup.ts","../src/cluster/connect-rpc-object.ts","../src/cluster/cpu-timer.ts","../src/fetch/http-fetch.ts","../src/fetch/index.ts","../src/mixin/mixin-cycle.ts","../src/plugin/acl.ts","../src/plugin/descriptor.ts","../src/plugin/device.ts","../src/plugin/endpoint.ts","../src/plugin/media.ts","../src/plugin/mediaobject.ts","../src/plugin/plugin-api.ts","../src/plugin/plugin-console.ts","../src/plugin/plugin-debug.ts","../src/plugin/plugin-device.ts","../src/plugin/plugin-error.ts","../src/plugin/plugin-host-api.ts","../src/plugin/plugin-host.ts","../src/plugin/plugin-http.ts","../src/plugin/plugin-lazy-remote.ts","../src/plugin/plugin-npm-dependencies.ts","../src/plugin/plugin-remote-websocket.ts","../src/plugin/plugin-remote-worker.ts","../src/plugin/plugin-remote.ts","../src/plugin/plugin-repl.ts","../src/plugin/plugin-state-check.ts","../src/plugin/plugin-volume.ts","../src/plugin/socket-serializer.ts","../src/plugin/system.ts","../src/plugin/runtime/child-process-worker.ts","../src/plugin/runtime/cluster-fork-worker.ts","../src/plugin/runtime/custom-worker.ts","../src/plugin/runtime/node-fork-worker.ts","../src/plugin/runtime/node-thread-worker.ts","../src/plugin/runtime/node-worker-common.ts","../src/plugin/runtime/python-worker.ts","../src/plugin/runtime/runtime-host.ts","../src/plugin/runtime/runtime-worker.ts","../src/services/addresses.ts","../src/services/alerts.ts","../src/services/backup.ts","../src/services/cluster-fork.ts","../src/services/cors.ts","../src/services/env.ts","../src/services/info.ts","../src/services/plugin.ts","../src/services/service-control.ts","../src/services/users.ts"],"version":"5.7.2"}
|
package/package.json
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"name": "@scrypted/server",
|
3
|
-
"version": "0.123.
|
3
|
+
"version": "0.123.49",
|
4
4
|
"description": "",
|
5
5
|
"dependencies": {
|
6
6
|
"@scrypted/ffmpeg-static": "^6.1.0-build3",
|
7
7
|
"@scrypted/node-pty": "^1.0.22",
|
8
|
-
"@scrypted/types": "^0.3.
|
8
|
+
"@scrypted/types": "^0.3.87",
|
9
9
|
"adm-zip": "^0.5.16",
|
10
10
|
"body-parser": "^1.20.3",
|
11
11
|
"cookie-parser": "^1.4.7",
|
package/python/cluster_setup.py
CHANGED
@@ -21,7 +21,6 @@ class ClusterObject(TypedDict):
|
|
21
21
|
sourceKey: str
|
22
22
|
sha256: str
|
23
23
|
|
24
|
-
|
25
24
|
def isClusterAddress(address: str):
|
26
25
|
return not address or address == os.environ.get("SCRYPTED_CLUSTER_ADDRESS", None)
|
27
26
|
|
@@ -99,6 +98,7 @@ class ClusterSetup:
|
|
99
98
|
return
|
100
99
|
self.clusterId = options["clusterId"]
|
101
100
|
self.clusterSecret = options["clusterSecret"]
|
101
|
+
self.clusterWorkerId = options.get("clusterWorkerId", None)
|
102
102
|
self.SCRYPTED_CLUSTER_ADDRESS = os.environ.get("SCRYPTED_CLUSTER_ADDRESS", None)
|
103
103
|
|
104
104
|
async def handleClusterClient(
|
@@ -144,7 +144,7 @@ class ClusterSetup:
|
|
144
144
|
m = hashlib.sha256()
|
145
145
|
m.update(
|
146
146
|
bytes(
|
147
|
-
f"{o['id']}{o.get('address'
|
147
|
+
f"{o['id']}{o.get('address', '')}{o['port']}{o.get('sourceKey', '')}{o['proxyId']}{self.clusterSecret}",
|
148
148
|
"utf8",
|
149
149
|
)
|
150
150
|
)
|
package/python/plugin_remote.py
CHANGED
@@ -229,21 +229,21 @@ class EventRegistry(object):
|
|
229
229
|
|
230
230
|
|
231
231
|
class ClusterManager(scrypted_python.scrypted_sdk.types.ClusterManager):
|
232
|
-
def __init__(self,
|
233
|
-
self.
|
232
|
+
def __init__(self, remote: PluginRemote):
|
233
|
+
self.remote = remote
|
234
234
|
self.clusterService = None
|
235
235
|
|
236
236
|
def getClusterMode(self) -> Any | Any:
|
237
237
|
return os.getenv("SCRYPTED_CLUSTER_MODE", None)
|
238
238
|
|
239
239
|
def getClusterWorkerId(self) -> str:
|
240
|
-
return
|
240
|
+
return self.remote.clusterSetup.clusterWorkerId
|
241
241
|
|
242
242
|
async def getClusterWorkers(
|
243
243
|
self,
|
244
244
|
) -> Mapping[str, scrypted_python.scrypted_sdk.types.ClusterWorker]:
|
245
245
|
self.clusterService = self.clusterService or asyncio.ensure_future(
|
246
|
-
self.api.getComponent("cluster-fork")
|
246
|
+
self.remote.api.getComponent("cluster-fork")
|
247
247
|
)
|
248
248
|
cs = await self.clusterService
|
249
249
|
return await cs.getClusterWorkers()
|
@@ -839,7 +839,7 @@ class PluginRemote:
|
|
839
839
|
self.systemManager = SystemManager(self.api, self.systemState)
|
840
840
|
self.deviceManager = DeviceManager(self.nativeIds, self.systemManager)
|
841
841
|
self.mediaManager = MediaManager(await self.api.getMediaManager())
|
842
|
-
self.clusterManager = ClusterManager(self
|
842
|
+
self.clusterManager = ClusterManager(self)
|
843
843
|
|
844
844
|
try:
|
845
845
|
sdk.systemManager = self.systemManager
|
@@ -17,6 +17,13 @@ export function isClusterAddress(address: string) {
|
|
17
17
|
return !address || address === process.env.SCRYPTED_CLUSTER_ADDRESS;
|
18
18
|
}
|
19
19
|
|
20
|
+
export function getClusterObject(clusterId: string, value: any) {
|
21
|
+
const clusterObject: ClusterObject = value?.__cluster;
|
22
|
+
if (clusterObject?.id !== clusterId)
|
23
|
+
return;
|
24
|
+
return clusterObject;
|
25
|
+
}
|
26
|
+
|
20
27
|
async function peerConnectRPCObject(peer: RpcPeer, o: ClusterObject) {
|
21
28
|
let peerConnectRPCObject: Promise<ConnectRPCObject> = peer.tags['connectRPCObject'];
|
22
29
|
if (!peerConnectRPCObject) {
|
@@ -32,6 +39,7 @@ export function setupCluster(peer: RpcPeer) {
|
|
32
39
|
let clusterId: string;
|
33
40
|
let clusterSecret: string;
|
34
41
|
let clusterPort: number;
|
42
|
+
let clusterWorkerId: string;
|
35
43
|
|
36
44
|
// all cluster clients, incoming and outgoing, connect with random ports which can be used as peer ids
|
37
45
|
// on the cluster server that is listening on the actual port.
|
@@ -236,8 +244,8 @@ export function setupCluster(peer: RpcPeer) {
|
|
236
244
|
}
|
237
245
|
|
238
246
|
const connectRPCObject = async (value: any) => {
|
239
|
-
const clusterObject
|
240
|
-
if (clusterObject
|
247
|
+
const clusterObject = getClusterObject(clusterId, value);
|
248
|
+
if (!clusterObject)
|
241
249
|
return value;
|
242
250
|
const { address, port, proxyId } = clusterObject;
|
243
251
|
// handle the case when trying to connect to an object is on this cluster node,
|
@@ -315,12 +323,12 @@ export function setupCluster(peer: RpcPeer) {
|
|
315
323
|
const initializeCluster: InitializeCluster = async (options: {
|
316
324
|
clusterId: string;
|
317
325
|
clusterSecret: string;
|
326
|
+
clusterWorkerId: string;
|
318
327
|
}) => {
|
319
328
|
if (clusterPort)
|
320
329
|
return;
|
321
330
|
|
322
|
-
({ clusterId, clusterSecret } = options);
|
323
|
-
|
331
|
+
({ clusterId, clusterSecret, clusterWorkerId, } = options);
|
324
332
|
|
325
333
|
const clients = new Set<net.Socket>();
|
326
334
|
|
@@ -379,7 +387,7 @@ export function setupCluster(peer: RpcPeer) {
|
|
379
387
|
}
|
380
388
|
}
|
381
389
|
|
382
|
-
export type InitializeCluster = (cluster: { clusterId: string, clusterSecret: string }) => Promise<void>;
|
390
|
+
export type InitializeCluster = (cluster: { clusterId: string, clusterSecret: string, clusterWorkerId: string, }) => Promise<void>;
|
383
391
|
|
384
392
|
export function getScryptedClusterMode(): ['server' | 'client', string, number] {
|
385
393
|
const mode = process.env.SCRYPTED_CLUSTER_MODE as 'server' | 'client';
|
@@ -1,9 +1,27 @@
|
|
1
1
|
export interface ClusterObject {
|
2
|
+
/**
|
3
|
+
* Id of the cluster.
|
4
|
+
*/
|
2
5
|
id: string;
|
6
|
+
/**
|
7
|
+
* Address of the process that created this object.
|
8
|
+
*/
|
3
9
|
address: string;
|
10
|
+
/**
|
11
|
+
* Port of the process that created this object.
|
12
|
+
*/
|
4
13
|
port: number;
|
14
|
+
/**
|
15
|
+
* Id of the object within the source peer.
|
16
|
+
*/
|
5
17
|
proxyId: string;
|
18
|
+
/**
|
19
|
+
* Id of the source peer.
|
20
|
+
*/
|
6
21
|
sourceKey: string;
|
22
|
+
/**
|
23
|
+
* Hash of the object.
|
24
|
+
*/
|
7
25
|
sha256: string;
|
8
26
|
}
|
9
27
|
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import { CpuInfo, cpus } from 'os';
|
2
|
+
|
3
|
+
function getIdleTotal(cpu: CpuInfo) {
|
4
|
+
const t = cpu.times;
|
5
|
+
const total = t.user + t.nice + t.sys + t.idle + t.irq;
|
6
|
+
const idle = t.idle;
|
7
|
+
return {
|
8
|
+
idle,
|
9
|
+
total,
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
export class CpuTimer {
|
14
|
+
previousSample: ReturnType<typeof cpus>;
|
15
|
+
maxSpeed = 0;
|
16
|
+
|
17
|
+
sample(): number {
|
18
|
+
const sample = cpus();
|
19
|
+
const previousSample = this.previousSample;
|
20
|
+
this.previousSample = sample;
|
21
|
+
|
22
|
+
// can cpu count change at runtime, who knows
|
23
|
+
if (!previousSample || previousSample.length !== sample.length)
|
24
|
+
return 0;
|
25
|
+
|
26
|
+
// cpu may be throttled in low power mode, so observe total speed to scale
|
27
|
+
let totalSpeed = 0;
|
28
|
+
|
29
|
+
const times = sample.map((v, i) => {
|
30
|
+
totalSpeed += v.speed;
|
31
|
+
const c = getIdleTotal(v);
|
32
|
+
const p = getIdleTotal(previousSample[i]);
|
33
|
+
const total = c.total - p.total;
|
34
|
+
const idle = c.idle - p.idle;
|
35
|
+
return 1 - idle / total;
|
36
|
+
});
|
37
|
+
|
38
|
+
this.maxSpeed = Math.max(this.maxSpeed, totalSpeed);
|
39
|
+
|
40
|
+
// will return a value between 0 and 1, where 1 is full cpu speed
|
41
|
+
// the cpu usage is scaled by the clock speed
|
42
|
+
// so if the cpu is running at 1ghz out of 3ghz, the cpu usage is scaled by 1/3
|
43
|
+
const clockScale = totalSpeed / this.maxSpeed;
|
44
|
+
|
45
|
+
const total = times.reduce((p, c) => p + c, 0);
|
46
|
+
return total / sample.length * clockScale;
|
47
|
+
}
|
48
|
+
}
|
package/src/plugin/plugin-api.ts
CHANGED
@@ -248,6 +248,7 @@ export class PluginHost {
|
|
248
248
|
const loadZipOptions: PluginRemoteLoadZipOptions = {
|
249
249
|
clusterId: this.scrypted.clusterId,
|
250
250
|
clusterSecret: this.scrypted.clusterSecret,
|
251
|
+
clusterWorkerId: await this.clusterWorkerId,
|
251
252
|
// debug flag can be used to affect path resolution for sourcemaps etc.
|
252
253
|
debug: !!pluginDebug,
|
253
254
|
zipHash: this.zipHash,
|
@@ -390,6 +391,7 @@ export class PluginHost {
|
|
390
391
|
await clusterSetup.initializeCluster({
|
391
392
|
clusterId: this.scrypted.clusterId,
|
392
393
|
clusterSecret: this.scrypted.clusterSecret,
|
394
|
+
clusterWorkerId: this.scrypted.serverClusterWorkerId,
|
393
395
|
});
|
394
396
|
return this.scrypted.clusterFork;
|
395
397
|
})(),
|
@@ -115,7 +115,7 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
|
|
115
115
|
await initializeCluster(zipOptions);
|
116
116
|
|
117
117
|
scrypted.connectRPCObject = connectRPCObject;
|
118
|
-
scrypted.clusterManager = new ClusterManagerImpl(api);
|
118
|
+
scrypted.clusterManager = new ClusterManagerImpl(api, zipOptions.clusterWorkerId);
|
119
119
|
|
120
120
|
if (worker_threads.isMainThread) {
|
121
121
|
const fsDir = path.join(unzippedPath, 'fs')
|
@@ -332,6 +332,7 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
|
|
332
332
|
}
|
333
333
|
|
334
334
|
const forkOptions = Object.assign({}, zipOptions);
|
335
|
+
forkOptions.clusterWorkerId = await clusterWorkerId || forkOptions.clusterWorkerId;
|
335
336
|
forkOptions.fork = true;
|
336
337
|
forkOptions.main = options?.filename;
|
337
338
|
const forkZipAPI = new PluginZipAPI(() => zipAPI.getZip());
|
package/src/runtime.ts
CHANGED
@@ -65,6 +65,7 @@ export class ScryptedRuntime extends PluginHttp<HttpPluginData> {
|
|
65
65
|
clusterId = crypto.randomBytes(3).toString('hex');
|
66
66
|
clusterSecret = process.env.SCRYPTED_CLUSTER_SECRET || crypto.randomBytes(16).toString('hex');
|
67
67
|
clusterWorkers = new Map<string, RunningClusterWorker>();
|
68
|
+
serverClusterWorkerId: string;
|
68
69
|
plugins: { [id: string]: PluginHost } = {};
|
69
70
|
pluginDevices: { [id: string]: PluginDevice } = {};
|
70
71
|
devices: { [id: string]: DeviceProxyPair } = {};
|