xypriss 2.0.0 → 2.1.1
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/README.md +171 -381
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +10 -0
- package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +10 -0
- package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/cjs/mods/security/src/components/cache/index.js +10 -2
- package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/cjs/mods/security/src/components/fortified-function/index.js +9 -0
- package/dist/cjs/mods/security/src/components/fortified-function/index.js.map +1 -1
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
- package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/cjs/mods/security/src/core/crypto.js +14 -0
- package/dist/cjs/mods/security/src/core/crypto.js.map +1 -1
- package/dist/cjs/mods/security/src/index.js +10 -1
- package/dist/cjs/mods/security/src/index.js.map +1 -1
- package/dist/cjs/shared/logger/Logger.js +372 -29
- package/dist/cjs/shared/logger/Logger.js.map +1 -1
- package/dist/cjs/src/cluster/bun-cluster-manager.js +91 -1
- package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -1
- package/dist/cjs/src/cluster/cluster-manager.js +15 -3
- package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
- package/dist/cjs/src/cluster/modules/AutoScaler.js +4 -4
- package/dist/cjs/src/cluster/modules/AutoScaler.js.map +1 -1
- package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +2 -2
- package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
- package/dist/cjs/src/cluster/modules/EventLoopMonitor.js +270 -0
- package/dist/cjs/src/cluster/modules/EventLoopMonitor.js.map +1 -0
- package/dist/cjs/src/cluster/modules/GCStatsTracker.js +200 -0
- package/dist/cjs/src/cluster/modules/GCStatsTracker.js.map +1 -0
- package/dist/cjs/src/cluster/modules/HeapStatsCollector.js +111 -0
- package/dist/cjs/src/cluster/modules/HeapStatsCollector.js.map +1 -0
- package/dist/cjs/src/cluster/modules/NetworkTracker.js +162 -0
- package/dist/cjs/src/cluster/modules/NetworkTracker.js.map +1 -0
- package/dist/cjs/src/cluster/modules/ThroughputCalculator.js +186 -0
- package/dist/cjs/src/cluster/modules/ThroughputCalculator.js.map +1 -0
- package/dist/cjs/src/cluster/modules/WorkerManager.js +14 -15
- package/dist/cjs/src/cluster/modules/WorkerManager.js.map +1 -1
- package/dist/cjs/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
- package/dist/cjs/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/sqlInjection.js +335 -0
- package/dist/cjs/src/middleware/built-in/sqlInjection.js.map +1 -0
- package/dist/cjs/src/middleware/safe-json-middleware.js +1 -1
- package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +447 -332
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/modules/index.js +9 -3
- package/dist/cjs/src/plugins/modules/index.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +41 -1
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +62 -2
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +32 -6
- package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js +206 -0
- package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +3 -28
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +265 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +143 -24
- package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
- package/dist/cjs/src/server/const/default.js +23 -9
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +8 -8
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
- package/dist/cjs/src/server/core/XyprissApp.js +284 -17
- package/dist/cjs/src/server/core/XyprissApp.js.map +1 -1
- package/dist/cjs/src/server/handlers/NotFoundHandler.js +1 -1
- package/dist/cjs/src/server/handlers/NotFoundHandler.js.map +1 -1
- package/dist/cjs/src/server/middleware/MiddlewareManager.js +57 -12
- package/dist/cjs/src/server/middleware/MiddlewareManager.js.map +1 -1
- package/dist/cjs/src/server/utils/forceClosePort.js +1 -1
- package/dist/cjs/src/server/utils/forceClosePort.js.map +1 -1
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +10 -0
- package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +10 -0
- package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/index.js +10 -2
- package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
- package/dist/esm/mods/security/src/components/fortified-function/index.js +9 -0
- package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -1
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
- package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
- package/dist/esm/mods/security/src/core/crypto.js +14 -0
- package/dist/esm/mods/security/src/core/crypto.js.map +1 -1
- package/dist/esm/mods/security/src/index.js +10 -1
- package/dist/esm/mods/security/src/index.js.map +1 -1
- package/dist/esm/shared/logger/Logger.js +372 -29
- package/dist/esm/shared/logger/Logger.js.map +1 -1
- package/dist/esm/src/cluster/bun-cluster-manager.js +91 -1
- package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -1
- package/dist/esm/src/cluster/cluster-manager.js +15 -3
- package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
- package/dist/esm/src/cluster/modules/AutoScaler.js +4 -4
- package/dist/esm/src/cluster/modules/AutoScaler.js.map +1 -1
- package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +2 -2
- package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
- package/dist/esm/src/cluster/modules/EventLoopMonitor.js +268 -0
- package/dist/esm/src/cluster/modules/EventLoopMonitor.js.map +1 -0
- package/dist/esm/src/cluster/modules/GCStatsTracker.js +198 -0
- package/dist/esm/src/cluster/modules/GCStatsTracker.js.map +1 -0
- package/dist/esm/src/cluster/modules/HeapStatsCollector.js +109 -0
- package/dist/esm/src/cluster/modules/HeapStatsCollector.js.map +1 -0
- package/dist/esm/src/cluster/modules/NetworkTracker.js +160 -0
- package/dist/esm/src/cluster/modules/NetworkTracker.js.map +1 -0
- package/dist/esm/src/cluster/modules/ThroughputCalculator.js +184 -0
- package/dist/esm/src/cluster/modules/ThroughputCalculator.js.map +1 -0
- package/dist/esm/src/cluster/modules/WorkerManager.js +14 -14
- package/dist/esm/src/cluster/modules/WorkerManager.js.map +1 -1
- package/dist/esm/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
- package/dist/esm/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
- package/dist/esm/src/middleware/built-in/sqlInjection.js +333 -0
- package/dist/esm/src/middleware/built-in/sqlInjection.js.map +1 -0
- package/dist/esm/src/middleware/safe-json-middleware.js +1 -1
- package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +447 -332
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/modules/index.js +9 -3
- package/dist/esm/src/plugins/modules/index.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +41 -1
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +62 -2
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +32 -6
- package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js +204 -0
- package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +2 -27
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +263 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
- package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +143 -24
- package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
- package/dist/esm/src/server/const/default.js +23 -9
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +8 -8
- package/dist/esm/src/server/core/HttpServer.js.map +1 -1
- package/dist/esm/src/server/core/XyprissApp.js +284 -17
- package/dist/esm/src/server/core/XyprissApp.js.map +1 -1
- package/dist/esm/src/server/handlers/NotFoundHandler.js +1 -1
- package/dist/esm/src/server/handlers/NotFoundHandler.js.map +1 -1
- package/dist/esm/src/server/middleware/MiddlewareManager.js +57 -12
- package/dist/esm/src/server/middleware/MiddlewareManager.js.map +1 -1
- package/dist/esm/src/server/utils/forceClosePort.js +1 -1
- package/dist/esm/src/server/utils/forceClosePort.js.map +1 -1
- package/dist/index.d.ts +675 -516
- package/package.json +9 -9
- package/dist/cjs/src/cluster/index.js +0 -361
- package/dist/cjs/src/cluster/index.js.map +0 -1
- package/dist/cjs/src/cluster/modules/ClusterFactory.js +0 -539
- package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +0 -1
- package/dist/cjs/src/cluster/modules/LoadBalancer.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -668
- package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -347
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -204
- package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js +0 -953
- package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -56
- package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
- package/dist/esm/src/cluster/index.js +0 -339
- package/dist/esm/src/cluster/index.js.map +0 -1
- package/dist/esm/src/cluster/modules/ClusterFactory.js +0 -511
- package/dist/esm/src/cluster/modules/ClusterFactory.js.map +0 -1
- package/dist/esm/src/cluster/modules/LoadBalancer.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -647
- package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -345
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -202
- package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js +0 -951
- package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -54
- package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced CPU Worker with Real Task Implementations
|
|
3
|
+
* Replaces mock implementations with actual CPU-intensive operations
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const {
|
|
7
|
+
Worker,
|
|
8
|
+
isMainThread,
|
|
9
|
+
parentPort,
|
|
10
|
+
workerData,
|
|
11
|
+
} = require("worker_threads");
|
|
12
|
+
const os = require("os");
|
|
13
|
+
const crypto = require("crypto");
|
|
14
|
+
|
|
15
|
+
// Import real CPU-intensive task implementations
|
|
16
|
+
const {
|
|
17
|
+
calculatePrimes,
|
|
18
|
+
calculateFibonacci,
|
|
19
|
+
multiplyMatrices,
|
|
20
|
+
computeHashes,
|
|
21
|
+
analyzeDataset,
|
|
22
|
+
analyzeText,
|
|
23
|
+
processImageData,
|
|
24
|
+
performCryptographicOperations,
|
|
25
|
+
} = require("./cpu-tasks");
|
|
26
|
+
|
|
27
|
+
// Worker configuration
|
|
28
|
+
const WORKER_CONFIG = {
|
|
29
|
+
maxExecutionTime: 30000,
|
|
30
|
+
maxMemoryUsage: 512 * 1024 * 1024, // 512MB
|
|
31
|
+
enableMetrics: true,
|
|
32
|
+
retryAttempts: 3,
|
|
33
|
+
retryDelay: 1000,
|
|
34
|
+
enableLogging: true,
|
|
35
|
+
debug: process.env.NODE_ENV === "development",
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// Worker state
|
|
39
|
+
let isShuttingDown = false;
|
|
40
|
+
let activeTask = null;
|
|
41
|
+
const workerMetrics = {
|
|
42
|
+
tasksProcessed: 0,
|
|
43
|
+
tasksSucceeded: 0,
|
|
44
|
+
tasksFailed: 0,
|
|
45
|
+
totalExecutionTime: 0,
|
|
46
|
+
averageExecutionTime: 0,
|
|
47
|
+
memoryPeakUsage: 0,
|
|
48
|
+
startTime: Date.now(),
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// Enhanced logging
|
|
52
|
+
function log(level, message, ...args) {
|
|
53
|
+
if (!WORKER_CONFIG.enableLogging) return;
|
|
54
|
+
const logger = require("./Logger").logger;
|
|
55
|
+
logger[level]("cpu-worker", message, ...args);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// System information
|
|
59
|
+
const systemInfo = {
|
|
60
|
+
cpus: os.cpus().length,
|
|
61
|
+
totalMemory: `${Math.round(os.totalmem() / 1024 / 1024)}MB`,
|
|
62
|
+
freeMemory: `${Math.round(os.freemem() / 1024 / 1024)}MB`,
|
|
63
|
+
platform: os.platform(),
|
|
64
|
+
arch: os.arch(),
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
log("debug", "CPU Worker initialized");
|
|
68
|
+
log("debug", "System info:", systemInfo);
|
|
69
|
+
|
|
70
|
+
// Resource monitoring
|
|
71
|
+
function checkResourceUsage() {
|
|
72
|
+
const memUsage = process.memoryUsage();
|
|
73
|
+
const cpuUsage = process.cpuUsage();
|
|
74
|
+
|
|
75
|
+
const usage = {
|
|
76
|
+
memory: {
|
|
77
|
+
heapUsed: memUsage.heapUsed,
|
|
78
|
+
heapTotal: memUsage.heapTotal,
|
|
79
|
+
external: memUsage.external,
|
|
80
|
+
rss: memUsage.rss,
|
|
81
|
+
},
|
|
82
|
+
cpu: {
|
|
83
|
+
user: cpuUsage.user,
|
|
84
|
+
system: cpuUsage.system,
|
|
85
|
+
},
|
|
86
|
+
uptime: process.uptime(),
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// Update peak memory usage
|
|
90
|
+
if (usage.memory.heapUsed > workerMetrics.memoryPeakUsage) {
|
|
91
|
+
workerMetrics.memoryPeakUsage = usage.memory.heapUsed;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return usage;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Enhanced task processing with real implementations
|
|
98
|
+
async function processTask(task) {
|
|
99
|
+
const { type, data } = task;
|
|
100
|
+
|
|
101
|
+
log("info", `Processing ${type} task with real implementation`);
|
|
102
|
+
|
|
103
|
+
switch (type) {
|
|
104
|
+
case "calculate":
|
|
105
|
+
return await processCalculationTask(data);
|
|
106
|
+
case "analyze":
|
|
107
|
+
return await processAnalysisTask(data);
|
|
108
|
+
case "crypto":
|
|
109
|
+
return await processCryptographicTask(data);
|
|
110
|
+
case "process":
|
|
111
|
+
return await processDataTask(data);
|
|
112
|
+
case "transform":
|
|
113
|
+
return await processTransformTask(data);
|
|
114
|
+
default:
|
|
115
|
+
throw new Error(`Unknown task type: ${type}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Real calculation tasks
|
|
121
|
+
*/
|
|
122
|
+
async function processCalculationTask(data) {
|
|
123
|
+
const startTime = Date.now();
|
|
124
|
+
|
|
125
|
+
if (!data.operation) {
|
|
126
|
+
throw new Error("Calculation operation is required");
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
let result;
|
|
130
|
+
|
|
131
|
+
switch (data.operation) {
|
|
132
|
+
case "primes":
|
|
133
|
+
const limit = data.limit || 10000;
|
|
134
|
+
const primes = calculatePrimes(limit);
|
|
135
|
+
result = {
|
|
136
|
+
operation: "prime_calculation",
|
|
137
|
+
limit,
|
|
138
|
+
primesFound: primes.length,
|
|
139
|
+
largestPrime: primes[primes.length - 1],
|
|
140
|
+
samplePrimes: primes.slice(0, 10),
|
|
141
|
+
executionTime: Date.now() - startTime,
|
|
142
|
+
};
|
|
143
|
+
break;
|
|
144
|
+
|
|
145
|
+
case "fibonacci":
|
|
146
|
+
const n = data.n || 1000;
|
|
147
|
+
const sequence = calculateFibonacci(n);
|
|
148
|
+
result = {
|
|
149
|
+
operation: "fibonacci_sequence",
|
|
150
|
+
length: n,
|
|
151
|
+
lastValue: sequence[sequence.length - 1],
|
|
152
|
+
sampleValues: sequence.slice(0, 10),
|
|
153
|
+
executionTime: Date.now() - startTime,
|
|
154
|
+
};
|
|
155
|
+
break;
|
|
156
|
+
|
|
157
|
+
case "matrix":
|
|
158
|
+
if (!data.matrixA || !data.matrixB) {
|
|
159
|
+
throw new Error("Two matrices required for multiplication");
|
|
160
|
+
}
|
|
161
|
+
const product = multiplyMatrices(data.matrixA, data.matrixB);
|
|
162
|
+
result = {
|
|
163
|
+
operation: "matrix_multiplication",
|
|
164
|
+
resultDimensions: [product.length, product[0].length],
|
|
165
|
+
result: product,
|
|
166
|
+
executionTime: Date.now() - startTime,
|
|
167
|
+
};
|
|
168
|
+
break;
|
|
169
|
+
|
|
170
|
+
default:
|
|
171
|
+
throw new Error(`Unknown calculation operation: ${data.operation}`);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Real analysis tasks
|
|
179
|
+
*/
|
|
180
|
+
async function processAnalysisTask(data) {
|
|
181
|
+
const startTime = Date.now();
|
|
182
|
+
|
|
183
|
+
if (!data.analysisType) {
|
|
184
|
+
throw new Error("Analysis type is required");
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
let result;
|
|
188
|
+
|
|
189
|
+
switch (data.analysisType) {
|
|
190
|
+
case "dataset":
|
|
191
|
+
const dataset = data.dataset || data.data?.dataset;
|
|
192
|
+
if (!dataset) {
|
|
193
|
+
throw new Error("Dataset is required for analysis");
|
|
194
|
+
}
|
|
195
|
+
const stats = analyzeDataset(dataset);
|
|
196
|
+
result = {
|
|
197
|
+
analysisType: "dataset_analysis",
|
|
198
|
+
statistics: stats,
|
|
199
|
+
executionTime: Date.now() - startTime,
|
|
200
|
+
};
|
|
201
|
+
break;
|
|
202
|
+
|
|
203
|
+
case "text":
|
|
204
|
+
const text = data.text || data.data?.text;
|
|
205
|
+
if (!text) {
|
|
206
|
+
throw new Error("Text is required for analysis");
|
|
207
|
+
}
|
|
208
|
+
const textStats = analyzeText(text);
|
|
209
|
+
result = {
|
|
210
|
+
analysisType: "text_analysis",
|
|
211
|
+
analysis: textStats,
|
|
212
|
+
executionTime: Date.now() - startTime,
|
|
213
|
+
};
|
|
214
|
+
break;
|
|
215
|
+
|
|
216
|
+
case "image":
|
|
217
|
+
if (!data.imageData) {
|
|
218
|
+
throw new Error("Image data is required for analysis");
|
|
219
|
+
}
|
|
220
|
+
const imageResult = processImageData(data.imageData);
|
|
221
|
+
result = {
|
|
222
|
+
analysisType: "image_processing",
|
|
223
|
+
processing: imageResult,
|
|
224
|
+
executionTime: Date.now() - startTime,
|
|
225
|
+
};
|
|
226
|
+
break;
|
|
227
|
+
|
|
228
|
+
default:
|
|
229
|
+
throw new Error(`Unknown analysis type: ${data.analysisType}`);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Real cryptographic tasks
|
|
237
|
+
*/
|
|
238
|
+
async function processCryptographicTask(data) {
|
|
239
|
+
const startTime = Date.now();
|
|
240
|
+
|
|
241
|
+
const operations = data.operations || 1000;
|
|
242
|
+
const cryptoResult = performCryptographicOperations(
|
|
243
|
+
data.payload || {},
|
|
244
|
+
operations
|
|
245
|
+
);
|
|
246
|
+
|
|
247
|
+
return {
|
|
248
|
+
taskType: "cryptographic_operations",
|
|
249
|
+
operationsCompleted: operations,
|
|
250
|
+
result: cryptoResult,
|
|
251
|
+
executionTime: Date.now() - startTime,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Real data processing tasks
|
|
257
|
+
*/
|
|
258
|
+
async function processDataTask(data) {
|
|
259
|
+
const startTime = Date.now();
|
|
260
|
+
|
|
261
|
+
// Perform hash computation
|
|
262
|
+
const iterations = data.hashIterations || 5000;
|
|
263
|
+
const hash = computeHashes(data, iterations);
|
|
264
|
+
|
|
265
|
+
return {
|
|
266
|
+
taskType: "data_processing",
|
|
267
|
+
originalData: JSON.stringify(data).substring(0, 100) + "...",
|
|
268
|
+
hashIterations: iterations,
|
|
269
|
+
finalHash: hash,
|
|
270
|
+
executionTime: Date.now() - startTime,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
/**
|
|
275
|
+
* Real transformation tasks
|
|
276
|
+
*/
|
|
277
|
+
async function processTransformTask(data) {
|
|
278
|
+
const startTime = Date.now();
|
|
279
|
+
|
|
280
|
+
// Perform multiple transformations
|
|
281
|
+
const transformations = [];
|
|
282
|
+
|
|
283
|
+
// Sort transformation
|
|
284
|
+
if (data.array && Array.isArray(data.array)) {
|
|
285
|
+
const sorted = [...data.array].sort((a, b) => a - b);
|
|
286
|
+
transformations.push({
|
|
287
|
+
type: "sort",
|
|
288
|
+
original: data.array.slice(0, 10),
|
|
289
|
+
result: sorted.slice(0, 10),
|
|
290
|
+
count: sorted.length,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Hash transformation
|
|
295
|
+
if (data.text) {
|
|
296
|
+
const hash = crypto
|
|
297
|
+
.createHash("sha256")
|
|
298
|
+
.update(data.text)
|
|
299
|
+
.digest("hex");
|
|
300
|
+
transformations.push({
|
|
301
|
+
type: "hash",
|
|
302
|
+
original: data.text.substring(0, 50),
|
|
303
|
+
result: hash,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return {
|
|
308
|
+
taskType: "data_transformation",
|
|
309
|
+
transformations,
|
|
310
|
+
executionTime: Date.now() - startTime,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Message handler with real task processing
|
|
315
|
+
if (parentPort) {
|
|
316
|
+
parentPort.on("message", async (task) => {
|
|
317
|
+
if (isShuttingDown) {
|
|
318
|
+
parentPort.postMessage({
|
|
319
|
+
success: false,
|
|
320
|
+
taskId: task.id,
|
|
321
|
+
error: "Worker is shutting down",
|
|
322
|
+
timestamp: new Date().toISOString(),
|
|
323
|
+
});
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
activeTask = task;
|
|
328
|
+
const startTime = Date.now();
|
|
329
|
+
|
|
330
|
+
try {
|
|
331
|
+
log("info", `Processing task: ${task.id} (type: ${task.type})`);
|
|
332
|
+
|
|
333
|
+
// Process task with real implementation
|
|
334
|
+
const result = await processTask(task);
|
|
335
|
+
const executionTime = Date.now() - startTime;
|
|
336
|
+
|
|
337
|
+
// Update metrics
|
|
338
|
+
workerMetrics.tasksProcessed++;
|
|
339
|
+
workerMetrics.tasksSucceeded++;
|
|
340
|
+
workerMetrics.totalExecutionTime += executionTime;
|
|
341
|
+
workerMetrics.averageExecutionTime =
|
|
342
|
+
workerMetrics.totalExecutionTime / workerMetrics.tasksProcessed;
|
|
343
|
+
|
|
344
|
+
// Send successful result
|
|
345
|
+
parentPort.postMessage({
|
|
346
|
+
success: true,
|
|
347
|
+
taskId: task.id,
|
|
348
|
+
result: result,
|
|
349
|
+
executionTime: executionTime,
|
|
350
|
+
resourceUsage: checkResourceUsage(),
|
|
351
|
+
timestamp: new Date().toISOString(),
|
|
352
|
+
workerMetrics: { ...workerMetrics },
|
|
353
|
+
});
|
|
354
|
+
|
|
355
|
+
log(
|
|
356
|
+
"info",
|
|
357
|
+
`Task ${task.id} completed successfully in ${executionTime}ms`
|
|
358
|
+
);
|
|
359
|
+
} catch (error) {
|
|
360
|
+
const executionTime = Date.now() - startTime;
|
|
361
|
+
|
|
362
|
+
// Update metrics
|
|
363
|
+
workerMetrics.tasksProcessed++;
|
|
364
|
+
workerMetrics.tasksFailed++;
|
|
365
|
+
|
|
366
|
+
log("error", `Task ${task.id} failed:`, error.message);
|
|
367
|
+
|
|
368
|
+
// Send error result
|
|
369
|
+
parentPort.postMessage({
|
|
370
|
+
success: false,
|
|
371
|
+
taskId: task.id,
|
|
372
|
+
error: {
|
|
373
|
+
message: error.message,
|
|
374
|
+
stack: error.stack,
|
|
375
|
+
code: error.code || "TASK_EXECUTION_ERROR",
|
|
376
|
+
},
|
|
377
|
+
executionTime: executionTime,
|
|
378
|
+
resourceUsage: checkResourceUsage(),
|
|
379
|
+
timestamp: new Date().toISOString(),
|
|
380
|
+
workerMetrics: { ...workerMetrics },
|
|
381
|
+
});
|
|
382
|
+
} finally {
|
|
383
|
+
activeTask = null;
|
|
384
|
+
}
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// Graceful shutdown
|
|
389
|
+
function gracefulShutdown(signal) {
|
|
390
|
+
if (isShuttingDown) return;
|
|
391
|
+
|
|
392
|
+
isShuttingDown = true;
|
|
393
|
+
log("info", `Received ${signal}, initiating graceful shutdown...`);
|
|
394
|
+
|
|
395
|
+
const shutdownTimeout = setTimeout(() => {
|
|
396
|
+
log("warn", "Shutdown timeout reached, forcing exit");
|
|
397
|
+
process.exit(1);
|
|
398
|
+
}, 5000);
|
|
399
|
+
|
|
400
|
+
// Wait for active task to complete
|
|
401
|
+
const checkActiveTask = () => {
|
|
402
|
+
if (!activeTask) {
|
|
403
|
+
clearTimeout(shutdownTimeout);
|
|
404
|
+
log("info", "Enhanced CPU Worker shutdown completed");
|
|
405
|
+
process.exit(0);
|
|
406
|
+
} else {
|
|
407
|
+
log(
|
|
408
|
+
"info",
|
|
409
|
+
`Waiting for active task ${activeTask.id} to complete...`
|
|
410
|
+
);
|
|
411
|
+
setTimeout(checkActiveTask, 100);
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
checkActiveTask();
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
|
|
419
|
+
process.on("SIGINT", () => gracefulShutdown("SIGINT"));
|
|
420
|
+
process.on("SIGHUP", () => gracefulShutdown("SIGHUP"));
|
|
421
|
+
|
|
422
|
+
// Handle uncaught exceptions
|
|
423
|
+
process.on("uncaughtException", (error) => {
|
|
424
|
+
log("error", "Uncaught exception:", error);
|
|
425
|
+
gracefulShutdown("UNCAUGHT_EXCEPTION");
|
|
426
|
+
});
|
|
427
|
+
|
|
428
|
+
// Handle unhandled promise rejections
|
|
429
|
+
process.on("unhandledRejection", (reason, promise) => {
|
|
430
|
+
log("error", "Unhandled promise rejection:", reason);
|
|
431
|
+
gracefulShutdown("UNHANDLED_REJECTION");
|
|
432
|
+
});
|
|
433
|
+
|