mirror of
https://github.com/mempool/mempool.git
synced 2024-11-19 18:03:00 +01:00
DiskCache fix when using clustering.
This commit is contained in:
parent
140fc0c5e1
commit
c0ad643d42
@ -1,5 +1,6 @@
|
||||
const config = require('../../mempool-config.json');
|
||||
import * as fs from 'fs';
|
||||
import * as cluster from 'cluster';
|
||||
import * as process from 'process';
|
||||
import memPool from './mempool';
|
||||
import blocks from './blocks';
|
||||
|
||||
@ -7,15 +8,17 @@ class DiskCache {
|
||||
static FILE_NAME = './cache.json';
|
||||
|
||||
constructor() {
|
||||
process.on('SIGINT', () => {
|
||||
this.saveCacheToDisk();
|
||||
process.exit(2);
|
||||
});
|
||||
if (process.env.workerId === '0' || !config.CLUSTER_NUM_CORES || config.CLUSTER_NUM_CORES === 1) {
|
||||
process.on('SIGINT', () => {
|
||||
this.saveCacheToDisk();
|
||||
process.exit(2);
|
||||
});
|
||||
|
||||
process.on('SIGTERM', () => {
|
||||
this.saveCacheToDisk();
|
||||
process.exit(2);
|
||||
});
|
||||
process.on('SIGTERM', () => {
|
||||
this.saveCacheToDisk();
|
||||
process.exit(2);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
saveCacheToDisk() {
|
||||
|
@ -37,12 +37,19 @@ class Server {
|
||||
|
||||
const numCPUs = config.CLUSTER_NUM_CORES;
|
||||
for (let i = 0; i < numCPUs; i++) {
|
||||
cluster.fork();
|
||||
const env = { workerId: i };
|
||||
const worker = cluster.fork(env);
|
||||
worker.process['env'] = env;
|
||||
}
|
||||
|
||||
cluster.on('exit', (worker, code, signal) => {
|
||||
console.log(`Mempool Worker #${worker.process.pid} died. Restarting in 10 seconds...`, signal || code);
|
||||
setTimeout(() => { cluster.fork(); }, 10000);
|
||||
const workerId = worker.process['env'].workerId;
|
||||
console.log(`Mempool Worker PID #${worker.process.pid} workerId: ${workerId} died. Restarting in 10 seconds...`, signal || code);
|
||||
setTimeout(() => {
|
||||
const env = { workerId: workerId };
|
||||
const newWorker = cluster.fork(env);
|
||||
newWorker.process['env'] = env;
|
||||
}, 10000);
|
||||
});
|
||||
} else {
|
||||
this.startServer(true);
|
||||
|
Loading…
Reference in New Issue
Block a user