Split pool daemon into mining and observer roles
Some checks failed
CodeQL / Analyze (javascript) (push) Failing after 36s

This commit is contained in:
Codex Bot
2026-03-21 19:32:14 +01:00
parent 0cd6cd6af2
commit cc1c288f52
9 changed files with 235 additions and 121 deletions

86
init.js
View File

@@ -41,16 +41,20 @@
// Load pool modules
if (cluster.isWorker) {
switch (process.env.workerType) {
case 'pool':
require('./lib/pool.js');
break;
case 'daemon':
require('./lib/daemon.js')
break
case 'blockUnlocker':
require('./lib/blockUnlocker.js');
break;
switch (process.env.workerType) {
case 'pool':
require('./lib/pool.js');
break;
case 'daemon':
case 'miningSource':
require('./lib/miningSource.js')
break
case 'chainObserver':
require('./lib/chainObserver.js')
break
case 'blockUnlocker':
require('./lib/blockUnlocker.js');
break;
case 'paymentProcessor':
require('./lib/paymentProcessor.js');
break;
@@ -73,7 +77,7 @@
// Run a single module ?
var singleModule = (function () {
var validModules = ['pool', 'api', 'unlocker', 'payments', 'chartsDataCollector', 'telegramBot'];
var validModules = ['pool', 'api', 'unlocker', 'payments', 'chartsDataCollector', 'telegramBot', 'daemon', 'miningSource', 'chainObserver'];
for (var i = 0; i < process.argv.length; i++) {
if (process.argv[i].indexOf('-module=') === 0) {
@@ -95,13 +99,17 @@
if (singleModule) {
log('info', logSystem, 'Running in single module mode: %s', [singleModule]);
switch (singleModule) {
case 'daemon':
spawnDaemon()
break
case 'pool':
spawnPoolWorkers();
break;
switch (singleModule) {
case 'daemon':
case 'miningSource':
spawnMiningSource();
break;
case 'chainObserver':
spawnChainObserver();
break;
case 'pool':
spawnPoolWorkers();
break;
case 'unlocker':
spawnBlockUnlocker();
break;
@@ -118,12 +126,13 @@
spawnTelegramBot();
break;
}
} else {
spawnPoolWorkers();
spawnDaemon();
spawnBlockUnlocker();
spawnPaymentProcessor();
spawnApi();
} else {
spawnPoolWorkers();
spawnMiningSource();
spawnChainObserver();
spawnBlockUnlocker();
spawnPaymentProcessor();
spawnApi();
spawnChartsDataCollector();
spawnTelegramBot();
}
@@ -229,18 +238,18 @@
}
/**
* Spawn daemon module
**/
function spawnDaemon () {
* Spawn mining source module
**/
function spawnMiningSource () {
if (!config.poolServer || !config.poolServer.enabled || !config.poolServer.ports || config.poolServer.ports.length === 0) return;
var worker = cluster.fork({
workerType: 'daemon'
workerType: 'miningSource'
});
worker.on('exit', function (code, signal) {
log('error', logSystem, 'Daemon died, spawning replacement...');
log('error', logSystem, 'Mining source died, spawning replacement...');
setTimeout(function () {
spawnDaemon();
spawnMiningSource();
}, 10);
})
.on('message', function (msg) {
@@ -260,6 +269,23 @@
});
}
/**
* Spawn chain observer module
**/
function spawnChainObserver () {
if (!config.poolServer || !config.poolServer.enabled || !config.poolServer.ports || config.poolServer.ports.length === 0) return;
var worker = cluster.fork({
workerType: 'chainObserver'
});
worker.on('exit', function () {
log('error', logSystem, 'Chain observer died, spawning replacement...');
setTimeout(function () {
spawnChainObserver();
}, 2000);
});
}
/**
* Spawn block unlocker module
**/