@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.
Files changed (35) hide show
  1. package/dist/cluster/cluster-setup.d.ts +2 -0
  2. package/dist/cluster/cluster-setup.js +11 -3
  3. package/dist/cluster/cluster-setup.js.map +1 -1
  4. package/dist/cluster/connect-rpc-object.d.ts +18 -0
  5. package/dist/cluster/cpu-timer.d.ts +6 -0
  6. package/dist/cluster/cpu-timer.js +44 -0
  7. package/dist/cluster/cpu-timer.js.map +1 -0
  8. package/dist/plugin/plugin-api.d.ts +1 -0
  9. package/dist/plugin/plugin-api.js.map +1 -1
  10. package/dist/plugin/plugin-host.js +2 -0
  11. package/dist/plugin/plugin-host.js.map +1 -1
  12. package/dist/plugin/plugin-remote-worker.js +2 -1
  13. package/dist/plugin/plugin-remote-worker.js.map +1 -1
  14. package/dist/runtime.d.ts +1 -0
  15. package/dist/runtime.js +1 -0
  16. package/dist/runtime.js.map +1 -1
  17. package/dist/scrypted-cluster-main.d.ts +5 -3
  18. package/dist/scrypted-cluster-main.js +33 -13
  19. package/dist/scrypted-cluster-main.js.map +1 -1
  20. package/dist/services/cluster-fork.d.ts +2 -1
  21. package/dist/services/cluster-fork.js +2 -0
  22. package/dist/services/cluster-fork.js.map +1 -1
  23. package/dist/tsconfig.tsbuildinfo +1 -1
  24. package/package.json +2 -2
  25. package/python/cluster_setup.py +2 -2
  26. package/python/plugin_remote.py +5 -5
  27. package/src/cluster/cluster-setup.ts +13 -5
  28. package/src/cluster/connect-rpc-object.ts +18 -0
  29. package/src/cluster/cpu-timer.ts +48 -0
  30. package/src/plugin/plugin-api.ts +1 -0
  31. package/src/plugin/plugin-host.ts +2 -0
  32. package/src/plugin/plugin-remote-worker.ts +2 -1
  33. package/src/runtime.ts +1 -0
  34. package/src/scrypted-cluster-main.ts +37 -16
  35. package/src/services/cluster-fork.ts +6 -3
@@ -1,4 +1,4 @@
1
- import type { ClusterManager, ClusterWorker, ForkOptions } from '@scrypted/types';
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
- const serverClusterWorkerId = crypto_1.default.randomUUID();
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 process.env.SCRYPTED_CLUSTER_WORKER_ID;
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<any>;
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":"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"}
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.47",
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.82",
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",
@@ -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') or ''}{o['port']}{o.get('sourceKey', None) or ''}{o['proxyId']}{self.clusterSecret}",
147
+ f"{o['id']}{o.get('address', '')}{o['port']}{o.get('sourceKey', '')}{o['proxyId']}{self.clusterSecret}",
148
148
  "utf8",
149
149
  )
150
150
  )
@@ -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, api: Any):
233
- self.api = api
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 os.getenv("SCRYPTED_CLUSTER_WORKER_ID", None)
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.api)
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: ClusterObject = value?.__cluster;
240
- if (clusterObject?.id !== clusterId)
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
+ }
@@ -164,6 +164,7 @@ export interface PluginRemoteLoadZipOptions {
164
164
  main?: string;
165
165
 
166
166
  clusterId: string;
167
+ clusterWorkerId: string;
167
168
  clusterSecret: string;
168
169
  }
169
170
 
@@ -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 } = {};