@scrypted/server 0.116.0 → 0.117.0

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.
@@ -95,7 +95,7 @@ function startPluginRemote(mainFilename, pluginId, peerSend, startPluginRemoteOp
95
95
  let clusterEntry = properties.__cluster;
96
96
  // ensure globally stable proxyIds.
97
97
  // worker threads will embed their pid and tid in the proxy id for cross worker fast path.
98
- const proxyId = clusterEntry?.proxyId || (worker_threads_1.default.isMainThread ? rpc_1.RpcPeer.generateId() : `n-${process.pid}-${worker_threads_1.default.threadId}-${rpc_1.RpcPeer.generateId()}`);
98
+ const proxyId = clusterEntry?.proxyId || `n-${process.pid}-${worker_threads_1.default.threadId}-${rpc_1.RpcPeer.generateId()}`;
99
99
  // if the cluster entry already exists, check if it belongs to this node.
100
100
  // if it belongs to this node, the entry must also be for this peer.
101
101
  // relying on the liveness/gc of a different peer may cause race conditions.
@@ -123,7 +123,14 @@ function startPluginRemote(mainFilename, pluginId, peerSend, startPluginRemoteOp
123
123
  const sourcePeer = sourceKey
124
124
  ? await clusterPeers.get(sourceKey)
125
125
  : peer;
126
- return sourcePeer?.localProxyMap.get(id);
126
+ if (!sourcePeer)
127
+ console.error('source peer not found', sourceKey);
128
+ const ret = sourcePeer?.localProxyMap.get(id);
129
+ if (!ret) {
130
+ console.error('source key not found', sourceKey, id);
131
+ return;
132
+ }
133
+ return ret;
127
134
  };
128
135
  // all cluster clients, incoming and outgoing, connect with random ports which can be used as peer ids
129
136
  // on the cluster server that is listening on the actual port/
@@ -134,10 +141,10 @@ function startPluginRemote(mainFilename, pluginId, peerSend, startPluginRemoteOp
134
141
  return `${address}:${port}`;
135
142
  }
136
143
  const clusterRpcServer = net_1.default.createServer(client => {
137
- const clusterPeer = (0, rpc_serializer_1.createDuplexRpcPeer)(peer.selfName, 'cluster-client', client, client);
138
144
  const clusterPeerAddress = client.remoteAddress;
139
145
  const clusterPeerPort = client.remotePort;
140
146
  const clusterPeerKey = getClusterPeerKey(clusterPeerAddress, clusterPeerPort);
147
+ const clusterPeer = (0, rpc_serializer_1.createDuplexRpcPeer)(peer.selfName, clusterPeerKey, client, client);
141
148
  // the listening peer sourceKey (client address/port) is used by the OTHER peer (the client)
142
149
  // to determine if it is already connected to THIS peer (the server).
143
150
  clusterPeer.onProxySerialization = (value) => onProxySerialization(value, clusterPeerKey);
@@ -171,14 +178,11 @@ function startPluginRemote(mainFilename, pluginId, peerSend, startPluginRemoteOp
171
178
  socket.on('close', () => clusterPeers.delete(clusterPeerKey));
172
179
  try {
173
180
  await (0, events_1.once)(socket, 'connect');
174
- // this connecting peer sourceKey (server address/port) is used by the OTHER peer (the server)
175
- // to determine if it is already connected to THIS peer (the client).
176
- const { address: sourceAddress, port: sourcePort } = socket.address();
181
+ const { address: sourceAddress } = socket.address();
177
182
  if (sourceAddress !== SCRYPTED_CLUSTER_ADDRESS && sourceAddress !== '127.0.0.1')
178
183
  console.warn("source address mismatch", sourceAddress);
179
- const sourcePeerKey = getClusterPeerKey(sourceAddress, sourcePort);
180
- const clusterPeer = (0, rpc_serializer_1.createDuplexRpcPeer)(peer.selfName, 'cluster-server', socket, socket);
181
- clusterPeer.onProxySerialization = (value) => onProxySerialization(value, sourcePeerKey);
184
+ const clusterPeer = (0, rpc_serializer_1.createDuplexRpcPeer)(peer.selfName, clusterPeerKey, socket, socket);
185
+ clusterPeer.onProxySerialization = (value) => onProxySerialization(value, clusterPeerKey);
182
186
  return clusterPeer;
183
187
  }
184
188
  catch (e) {
@@ -201,28 +205,6 @@ function startPluginRemote(mainFilename, pluginId, peerSend, startPluginRemoteOp
201
205
  }
202
206
  const tidChannels = new Map();
203
207
  const tidPeers = new Map();
204
- function finishTidPeerConnection(tid, port) {
205
- const threadPeer = node_thread_worker_1.NodeThreadWorker.createRpcPeer(peer.selfName, 'thread-server', port);
206
- // this connecting peer sourceKey (thread id) is used by the OTHER peer (the server)
207
- // to determine if it is already connected to THIS peer (the client).
208
- const threadPeerKey = `thread:${worker_threads_1.default.threadId}-${tid}`;
209
- threadPeer.onProxySerialization = value => onProxySerialization(value, threadPeerKey);
210
- const connectRPCObject = async (o) => {
211
- const sha256 = (0, cluster_hash_1.computeClusterObjectHash)(o, clusterSecret);
212
- if (sha256 !== o.sha256)
213
- throw new Error('secret incorrect');
214
- return resolveObject(o.proxyId, o.sourceKey);
215
- };
216
- threadPeer.params['connectRPCObject'] = connectRPCObject;
217
- function cleanup(message) {
218
- tidChannels.delete(tid);
219
- tidPeers.delete(tid);
220
- threadPeer.kill(message);
221
- }
222
- port.on('close', () => cleanup('connection closed.'));
223
- port.on('messageerror', () => cleanup('message error.'));
224
- return threadPeer;
225
- }
226
208
  function connectTidPeer(tid) {
227
209
  let peerPromise = tidPeers.get(tid);
228
210
  if (peerPromise)
@@ -239,17 +221,32 @@ function startPluginRemote(mainFilename, pluginId, peerSend, startPluginRemoteOp
239
221
  });
240
222
  }
241
223
  }
242
- function cleanup() {
243
- clusterPeers.delete(threadPeerKey);
224
+ const threadPeerKey = `thread:${tid}`;
225
+ function peerCleanup() {
244
226
  clusterPeers.delete(threadPeerKey);
245
227
  }
246
228
  peerPromise = tidDeferred.promise.then(port => {
247
- port.on('close', () => cleanup());
248
- port.on('messageerror', () => cleanup());
249
- return finishTidPeerConnection(tid, port);
229
+ port.on('close', () => peerCleanup());
230
+ port.on('messageerror', () => peerCleanup());
231
+ const threadPeer = node_thread_worker_1.NodeThreadWorker.createRpcPeer(peer.selfName, threadPeerKey, port);
232
+ threadPeer.onProxySerialization = value => onProxySerialization(value, threadPeerKey);
233
+ const connectRPCObject = async (o) => {
234
+ const sha256 = (0, cluster_hash_1.computeClusterObjectHash)(o, clusterSecret);
235
+ if (sha256 !== o.sha256)
236
+ throw new Error('secret incorrect');
237
+ return resolveObject(o.proxyId, o.sourceKey);
238
+ };
239
+ threadPeer.params['connectRPCObject'] = connectRPCObject;
240
+ function cleanup(message) {
241
+ tidChannels.delete(tid);
242
+ tidPeers.delete(tid);
243
+ threadPeer.kill(message);
244
+ }
245
+ port.on('close', () => cleanup('connection closed.'));
246
+ port.on('messageerror', () => cleanup('message error.'));
247
+ return threadPeer;
250
248
  });
251
- peerPromise.catch(() => cleanup());
252
- const threadPeerKey = `thread:${worker_threads_1.default.threadId}-${tid}`;
249
+ peerPromise.catch(() => peerCleanup());
253
250
  clusterPeers.set(threadPeerKey, peerPromise);
254
251
  tidPeers.set(tid, peerPromise);
255
252
  return peerPromise;
@@ -358,7 +355,7 @@ function startPluginRemote(mainFilename, pluginId, peerSend, startPluginRemoteOp
358
355
  return newValue;
359
356
  }
360
357
  catch (e) {
361
- console.error('failure rpc', e);
358
+ console.error('failure rpc', clusterObject, e);
362
359
  return value;
363
360
  }
364
361
  };
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-remote-worker.js","sourceRoot":"","sources":["../../src/plugin/plugin-remote-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-remote-worker.js","sourceRoot":"","sources":["../../src/plugin/plugin-remote-worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrypted/server",
3
- "version": "0.116.0",
3
+ "version": "0.117.0",
4
4
  "description": "",
5
5
  "dependencies": {
6
6
  "@scrypted/ffmpeg-static": "^6.1.0-build1",
@@ -601,21 +601,24 @@ class PluginRemote:
601
601
  return clusterPeerPromise
602
602
 
603
603
  async def connectClusterPeer():
604
- reader, writer = await asyncio.open_connection(address, port)
605
- sourceAddress, sourcePort = writer.get_extra_info("sockname")
606
- if (
607
- sourceAddress != SCRYPTED_CLUSTER_ADDRESS
608
- and sourceAddress != "127.0.0.1"
609
- ):
610
- print("source address mismatch", sourceAddress)
611
- sourceKey = getClusterPeerKey(sourceAddress, sourcePort)
612
- rpcTransport = rpc_reader.RpcStreamTransport(reader, writer)
613
- clusterPeer, peerReadLoop = await rpc_reader.prepare_peer_readloop(
614
- self.loop, rpcTransport
615
- )
616
- clusterPeer.onProxySerialization = lambda value: onProxySerialization(
617
- value, sourceKey
618
- )
604
+ try:
605
+ reader, writer = await asyncio.open_connection(address, port)
606
+ sourceAddress, sourcePort = writer.get_extra_info("sockname")
607
+ if (
608
+ sourceAddress != SCRYPTED_CLUSTER_ADDRESS
609
+ and sourceAddress != "127.0.0.1"
610
+ ):
611
+ print("source address mismatch", sourceAddress)
612
+ rpcTransport = rpc_reader.RpcStreamTransport(reader, writer)
613
+ clusterPeer, peerReadLoop = await rpc_reader.prepare_peer_readloop(
614
+ self.loop, rpcTransport
615
+ )
616
+ clusterPeer.onProxySerialization = lambda value: onProxySerialization(
617
+ value, clusterPeerKey
618
+ )
619
+ except:
620
+ clusterPeers.pop(clusterPeerKey)
621
+ raise
619
622
 
620
623
  async def run_loop():
621
624
  try:
@@ -116,7 +116,7 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
116
116
 
117
117
  // ensure globally stable proxyIds.
118
118
  // worker threads will embed their pid and tid in the proxy id for cross worker fast path.
119
- const proxyId = clusterEntry?.proxyId || (worker_threads.isMainThread ? RpcPeer.generateId() : `n-${process.pid}-${worker_threads.threadId}-${RpcPeer.generateId()}`);
119
+ const proxyId = clusterEntry?.proxyId || `n-${process.pid}-${worker_threads.threadId}-${RpcPeer.generateId()}`;
120
120
 
121
121
  // if the cluster entry already exists, check if it belongs to this node.
122
122
  // if it belongs to this node, the entry must also be for this peer.
@@ -148,7 +148,14 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
148
148
  const sourcePeer = sourceKey
149
149
  ? await clusterPeers.get(sourceKey)
150
150
  : peer;
151
- return sourcePeer?.localProxyMap.get(id);
151
+ if (!sourcePeer)
152
+ console.error('source peer not found', sourceKey);
153
+ const ret = sourcePeer?.localProxyMap.get(id);
154
+ if (!ret) {
155
+ console.error('source key not found', sourceKey, id);
156
+ return;
157
+ }
158
+ return ret;
152
159
  }
153
160
 
154
161
  // all cluster clients, incoming and outgoing, connect with random ports which can be used as peer ids
@@ -161,10 +168,10 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
161
168
  }
162
169
 
163
170
  const clusterRpcServer = net.createServer(client => {
164
- const clusterPeer = createDuplexRpcPeer(peer.selfName, 'cluster-client', client, client);
165
171
  const clusterPeerAddress = client.remoteAddress;
166
172
  const clusterPeerPort = client.remotePort;
167
173
  const clusterPeerKey = getClusterPeerKey(clusterPeerAddress, clusterPeerPort);
174
+ const clusterPeer = createDuplexRpcPeer(peer.selfName, clusterPeerKey, client, client);
168
175
  // the listening peer sourceKey (client address/port) is used by the OTHER peer (the client)
169
176
  // to determine if it is already connected to THIS peer (the server).
170
177
  clusterPeer.onProxySerialization = (value) => onProxySerialization(value, clusterPeerKey);
@@ -203,16 +210,12 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
203
210
 
204
211
  try {
205
212
  await once(socket, 'connect');
206
-
207
- // this connecting peer sourceKey (server address/port) is used by the OTHER peer (the server)
208
- // to determine if it is already connected to THIS peer (the client).
209
- const { address: sourceAddress, port: sourcePort } = (socket.address() as net.AddressInfo);
213
+ const { address: sourceAddress } = (socket.address() as net.AddressInfo);
210
214
  if (sourceAddress !== SCRYPTED_CLUSTER_ADDRESS && sourceAddress !== '127.0.0.1')
211
215
  console.warn("source address mismatch", sourceAddress);
212
- const sourcePeerKey = getClusterPeerKey(sourceAddress, sourcePort);
213
216
 
214
- const clusterPeer = createDuplexRpcPeer(peer.selfName, 'cluster-server', socket, socket);
215
- clusterPeer.onProxySerialization = (value) => onProxySerialization(value, sourcePeerKey);
217
+ const clusterPeer = createDuplexRpcPeer(peer.selfName, clusterPeerKey, socket, socket);
218
+ clusterPeer.onProxySerialization = (value) => onProxySerialization(value, clusterPeerKey);
216
219
  return clusterPeer;
217
220
  }
218
221
  catch (e) {
@@ -239,30 +242,6 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
239
242
  const tidChannels = new Map<number, Deferred<worker_threads.MessagePort>>();
240
243
  const tidPeers = new Map<number, Promise<RpcPeer>>();
241
244
 
242
- function finishTidPeerConnection(tid: number, port: worker_threads.MessagePort) {
243
- const threadPeer = NodeThreadWorker.createRpcPeer(peer.selfName, 'thread-server', port);
244
- // this connecting peer sourceKey (thread id) is used by the OTHER peer (the server)
245
- // to determine if it is already connected to THIS peer (the client).
246
- const threadPeerKey = `thread:${worker_threads.threadId}-${tid}`;
247
- threadPeer.onProxySerialization = value => onProxySerialization(value, threadPeerKey);
248
-
249
- const connectRPCObject: ConnectRPCObject = async (o) => {
250
- const sha256 = computeClusterObjectHash(o, clusterSecret);
251
- if (sha256 !== o.sha256)
252
- throw new Error('secret incorrect');
253
- return resolveObject(o.proxyId, o.sourceKey);
254
- }
255
- threadPeer.params['connectRPCObject'] = connectRPCObject;
256
- function cleanup(message: string) {
257
- tidChannels.delete(tid);
258
- tidPeers.delete(tid);
259
- threadPeer.kill(message);
260
- }
261
- port.on('close', () => cleanup('connection closed.'));
262
- port.on('messageerror', () => cleanup('message error.'));
263
- return threadPeer;
264
- }
265
-
266
245
  function connectTidPeer(tid: number) {
267
246
  let peerPromise = tidPeers.get(tid);
268
247
  if (peerPromise)
@@ -281,17 +260,35 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
281
260
  }
282
261
  }
283
262
 
284
- function cleanup() {
285
- clusterPeers.delete(threadPeerKey);
263
+ const threadPeerKey = `thread:${tid}`;
264
+ function peerCleanup() {
286
265
  clusterPeers.delete(threadPeerKey);
287
266
  }
288
267
  peerPromise = tidDeferred.promise.then(port => {
289
- port.on('close', () => cleanup());
290
- port.on('messageerror', () => cleanup());
291
- return finishTidPeerConnection(tid, port);
268
+ port.on('close', () => peerCleanup());
269
+ port.on('messageerror', () => peerCleanup());
270
+
271
+ const threadPeer = NodeThreadWorker.createRpcPeer(peer.selfName, threadPeerKey, port);
272
+ threadPeer.onProxySerialization = value => onProxySerialization(value, threadPeerKey);
273
+
274
+ const connectRPCObject: ConnectRPCObject = async (o) => {
275
+ const sha256 = computeClusterObjectHash(o, clusterSecret);
276
+ if (sha256 !== o.sha256)
277
+ throw new Error('secret incorrect');
278
+ return resolveObject(o.proxyId, o.sourceKey);
279
+ }
280
+ threadPeer.params['connectRPCObject'] = connectRPCObject;
281
+
282
+ function cleanup(message: string) {
283
+ tidChannels.delete(tid);
284
+ tidPeers.delete(tid);
285
+ threadPeer.kill(message);
286
+ }
287
+ port.on('close', () => cleanup('connection closed.'));
288
+ port.on('messageerror', () => cleanup('message error.'));
289
+ return threadPeer;
292
290
  });
293
- peerPromise.catch(() => cleanup());
294
- const threadPeerKey = `thread:${worker_threads.threadId}-${tid}`;
291
+ peerPromise.catch(() => peerCleanup());
295
292
  clusterPeers.set(threadPeerKey, peerPromise);
296
293
  tidPeers.set(tid, peerPromise);
297
294
 
@@ -414,7 +411,7 @@ export function startPluginRemote(mainFilename: string, pluginId: string, peerSe
414
411
  return newValue;
415
412
  }
416
413
  catch (e) {
417
- console.error('failure rpc', e);
414
+ console.error('failure rpc', clusterObject, e);
418
415
  return value;
419
416
  }
420
417
  }