@abtnode/core 1.17.7-beta-20251225-073259-cb6ecf68 → 1.17.7-beta-20251229-085620-84f09930

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 (41) hide show
  1. package/lib/blocklet/manager/disk.js +150 -36
  2. package/lib/blocklet/manager/ensure-blocklet-running.js +1 -1
  3. package/lib/blocklet/manager/helper/blue-green-start-blocklet.js +1 -1
  4. package/lib/blocklet/manager/helper/install-application-from-general.js +2 -3
  5. package/lib/blocklet/manager/helper/install-component-from-url.js +7 -4
  6. package/lib/blocklet/migration-dist/migration.cjs +5 -4
  7. package/lib/blocklet/passport/index.js +10 -3
  8. package/lib/blocklet/project/index.js +7 -2
  9. package/lib/blocklet/security/index.js +2 -2
  10. package/lib/cert.js +6 -3
  11. package/lib/event/index.js +98 -87
  12. package/lib/event/util.js +7 -13
  13. package/lib/index.js +18 -27
  14. package/lib/migrations/1.17.7-beta-2025122601-settings-authentication.js +19 -0
  15. package/lib/migrations/1.5.0-site.js +3 -7
  16. package/lib/migrations/1.5.15-site.js +3 -7
  17. package/lib/monitor/blocklet-runtime-monitor.js +37 -5
  18. package/lib/monitor/node-runtime-monitor.js +4 -4
  19. package/lib/router/helper.js +525 -452
  20. package/lib/router/index.js +280 -104
  21. package/lib/router/manager.js +14 -28
  22. package/lib/states/audit-log.js +6 -3
  23. package/lib/states/blocklet-child.js +93 -1
  24. package/lib/states/blocklet-extras.js +1 -1
  25. package/lib/states/blocklet.js +429 -197
  26. package/lib/states/node.js +0 -10
  27. package/lib/states/site.js +87 -4
  28. package/lib/team/manager.js +2 -21
  29. package/lib/util/blocklet.js +71 -37
  30. package/lib/util/get-accessible-external-node-ip.js +21 -6
  31. package/lib/util/index.js +3 -3
  32. package/lib/util/ip.js +15 -1
  33. package/lib/util/launcher.js +11 -11
  34. package/lib/util/ready.js +2 -9
  35. package/lib/util/reset-node.js +6 -5
  36. package/lib/validators/router.js +0 -3
  37. package/lib/webhook/sender/api/index.js +5 -0
  38. package/package.json +35 -37
  39. package/lib/migrations/1.0.36-snapshot.js +0 -10
  40. package/lib/migrations/1.1.9-snapshot.js +0 -7
  41. package/lib/states/routing-snapshot.js +0 -146
@@ -10,11 +10,17 @@ const { BlockletStatus } = require('@blocklet/constant');
10
10
  const defaultLogger = require('@abtnode/logger')('blocklet-runtime-monitor');
11
11
 
12
12
  const { Op } = require('sequelize');
13
- const { isInstanceWorker } = require('@abtnode/util/lib/pm2/is-instance-worker');
13
+ const { isWorkerInstance } = require('@abtnode/util/lib/pm2/is-instance-worker');
14
14
  const { getRuntimeInfo } = require('../util/blocklet');
15
15
 
16
16
  const insertThrottleMap = new Map();
17
17
 
18
+ const isRuntimeMonitorDisabled = () => {
19
+ const value = process.env.ABT_NODE_RUNTIME_MONITOR_DISABLED;
20
+ // Disabled when set to '1' or 'true', enabled when '0', 'false', or unset
21
+ return value === '1' || value === 'true';
22
+ };
23
+
18
24
  class BlockletRuntimeMonitor extends EventEmitter {
19
25
  constructor({ states, logger = defaultLogger } = {}) {
20
26
  super();
@@ -29,6 +35,10 @@ class BlockletRuntimeMonitor extends EventEmitter {
29
35
  }
30
36
 
31
37
  async getHistory(blockletDid, hours = 1) {
38
+ if (isRuntimeMonitorDisabled()) {
39
+ return [];
40
+ }
41
+
32
42
  const result = await this.states.runtimeInsight.model.findAll({
33
43
  where: {
34
44
  did: {
@@ -53,6 +63,10 @@ class BlockletRuntimeMonitor extends EventEmitter {
53
63
  * @memberof BlockletRuntimeMonitor
54
64
  */
55
65
  getRuntimeInfo(blockletDid, componentId = 'app') {
66
+ if (isRuntimeMonitorDisabled()) {
67
+ return null;
68
+ }
69
+
56
70
  if (!this.data[blockletDid]) {
57
71
  return null;
58
72
  }
@@ -65,11 +79,19 @@ class BlockletRuntimeMonitor extends EventEmitter {
65
79
  }
66
80
 
67
81
  async monit(did) {
82
+ if (isRuntimeMonitorDisabled()) {
83
+ return;
84
+ }
85
+
68
86
  const blocklet = await this.states.blocklet.getBlocklet(did);
69
87
  await this._monit(blocklet);
70
88
  }
71
89
 
72
90
  async _monit(blocklet, { addToHistory } = {}) {
91
+ if (isRuntimeMonitorDisabled()) {
92
+ return;
93
+ }
94
+
73
95
  const {
74
96
  meta: { did: blockletDid },
75
97
  status,
@@ -160,6 +182,10 @@ class BlockletRuntimeMonitor extends EventEmitter {
160
182
  }
161
183
 
162
184
  async monitAll() {
185
+ if (isRuntimeMonitorDisabled()) {
186
+ return;
187
+ }
188
+
163
189
  if (this.inProgress) {
164
190
  this.logger.debug('monitoring is in progress');
165
191
  return;
@@ -198,11 +224,16 @@ class BlockletRuntimeMonitor extends EventEmitter {
198
224
  }
199
225
 
200
226
  async getBlockletRuntimeInfo(blockletDid) {
201
- const blocklets = await this.states.blocklet.getBlocklets();
202
- const blocklet = blocklets.find((x) => x.meta.did === blockletDid);
227
+ if (isRuntimeMonitorDisabled()) {
228
+ return null;
229
+ }
203
230
 
204
- const info = this.getRuntimeInfo(blockletDid);
231
+ const blocklet = await this.states.blocklet.getBlocklet(blockletDid);
232
+ if (!blocklet) {
233
+ return null;
234
+ }
205
235
 
236
+ const info = this.getRuntimeInfo(blockletDid);
206
237
  if (blocklet && !info) {
207
238
  await this._monit(blocklet, { addToHistory: false }).catch((err) => {
208
239
  this.logger.error('failed to get blocklet runtime info', { error: err });
@@ -217,7 +248,7 @@ class BlockletRuntimeMonitor extends EventEmitter {
217
248
  }
218
249
 
219
250
  _push(blockletDid, value) {
220
- if (isInstanceWorker()) {
251
+ if (isWorkerInstance()) {
221
252
  return Promise.resolve();
222
253
  }
223
254
 
@@ -246,3 +277,4 @@ class BlockletRuntimeMonitor extends EventEmitter {
246
277
  }
247
278
 
248
279
  module.exports.BlockletRuntimeMonitor = BlockletRuntimeMonitor;
280
+ module.exports.isRuntimeMonitorDisabled = isRuntimeMonitorDisabled;
@@ -169,14 +169,14 @@ class NodeRuntimeMonitor extends EventEmitter {
169
169
  try {
170
170
  const { cpu, mem, disks } = this.data.realtime;
171
171
  // 计算每个 CPU 的占用率:load字段为百分比,除以 100 得到 0 到 1 的值
172
- const cpuUtilizations = cpu.cpus.filter((v) => v.load > 0).map((v) => v.load / 100);
172
+ const cpuUtilizations = cpu.cpus?.filter((v) => v.load > 0).map((v) => v.load / 100) || [0];
173
+
174
+ // 计算每个硬盘占用率:used / total
175
+ const diskUtilizations = disks?.filter((v) => v.used > 0).map((v) => v.used / v.total) || [0];
173
176
 
174
177
  // 计算内存占用率:used / total
175
178
  const memoryUtilization = mem.total > 0 && mem.available > 0 ? (mem.total - mem.available) / mem.total : 0;
176
179
 
177
- // 计算每个硬盘占用率:used / total
178
- const diskUtilizations = disks.filter((v) => v.used > 0).map((v) => v.used / v.total);
179
-
180
180
  // 返回包含所需值的对象
181
181
  return {
182
182
  cpus: cpuUtilizations,