MCPcopy
hub / github.com/scality/cloudserver / main

Function main

lib/server.js:443–505  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

441}
442
443function main() {
444 const workers = _config.clusters;
445 if (!_config.isCluster) {
446 process.env.REPORT_TOKEN = _config.reportToken;
447 const server = new S3Server(_config);
448 server.initiateStartup(logger.newRequestLogger());
449 }
450 if (_config.isCluster && cluster.isPrimary) {
451 for (let n = 0; n < workers; n++) {
452 const worker = cluster.fork();
453 logger.info('new worker forked', {
454 workerId: worker.id,
455 workerPid: worker.process.pid,
456 });
457 }
458 setInterval(() => {
459 const len = Object.keys(cluster.workers).length;
460 if (len < workers) {
461 for (let i = len; i < workers; i++) {
462 const newWorker = cluster.fork();
463 logger.info('new worker forked', {
464 workerId: newWorker.id,
465 workerPid: newWorker.process.pid,
466 });
467 }
468 }
469 }, 1000);
470 cluster.on('disconnect', worker => {
471 logger.error('worker disconnected. making sure exits', {
472 workerId: worker.id,
473 workerPid: worker.process.pid,
474 });
475 setTimeout(() => {
476 if (!worker.isDead() && !worker.exitedAfterDisconnect) {
477 logger.error('worker not exiting. killing it', {
478 workerId: worker.id,
479 workerPid: worker.pid,
480 });
481 worker.process.kill('SIGKILL');
482 }
483 }, 2000);
484 });
485 cluster.on('exit', worker => {
486 logger.error('worker exited.', {
487 workerId: worker.id,
488 workerPid: worker.process.pid,
489 });
490 });
491
492 const metricServer = new S3Server(_config);
493 metricServer.startServer(_config.metricsListenOn,
494 _config.metricsPort, metricServer.routeAdminRequest);
495 }
496 if (_config.isCluster && cluster.isWorker) {
497 const server = new S3Server(_config, cluster.worker);
498 server.initiateStartup(logger.newRequestLogger());
499 }
500

Callers

nothing calls this directly

Calls 4

initiateStartupMethod · 0.95
startServerMethod · 0.95
infoMethod · 0.80
errorMethod · 0.80

Tested by

no test coverage detected