function logUnhandledException (err) { logger.fatal(err, 'Unchaught exception, terminating bot process immediately') // leave time for error to be written to disk before exiting process setTimeout(() => process.exit(1), 10) }
/** * deleteFile * @param {String} filename * @param {Function} callback */ deleteFile (filename, callback) { fs.unlink(path.join(config.storage.local.path, filename), (err) => { if (err) { logger.fatal({err: err}, 'unable to delete file'); return callback(err); } return callback(); }); }
put (name, contents, callback) { const params = { Bucket: config.storage.s3.bucket, Key: [config.storage.s3.prefix, `npm/registry/v2/manifests`, name].join('/'), Body: JSON.stringify(contents) // ServerSideEncryption: 'AES256' }; logger.debug({params: _.omit(params, ['Body'])}, 'saveFile S3 Parameters'); this.s3.putObject(params, (err) => { if (err) { logger.fatal(err, 'saveFile.putObject.error'); return callback(err); } logger.info({filename: name}, 'saveFile successful'); return callback(null); }); }
/** * getFile * @param {String} filename * @param {Function} callback * @returns {ReadStream} */ getFile (filename, callback) { logger.info({filename: filename}, 'getFile'); const basepath = config.storage.local.path; const filepath = `${basepath}/npm/registry/v2/blobs/${filename}`; var readStream = fs.createReadStream(filepath); readStream.on('error', (err) => { logger.fatal({err: err, filename: filename}, 'getFile ReadStream Error'); }); callback(null, readStream); }
MongoClient.connect(uri) .then((db) => { logger.info('MongodDB connection success') db.on('close', function () { logger.info('MongodDB connection close') }) db.on('error', function (err) { logger.error('MongodDB error', err) }) db.on('timeout', function (err) { logger.error('MongodDB timeout', err) throw err }) return Promise.resolve(db) }) .catch((err) => { logger.fatal('MongodDB connection error!') throw err })
saveFile (attachments, callback) { const done = after(Object.keys(attachments).length, callback); Object.keys(attachments).forEach((a) => { const params = { Bucket: config.storage.s3.bucket, Key: [config.storage.s3.prefix, `npm/registry/v2/blobs`, a].join('/'), Body: Buffer.from(attachments[a].data, 'base64') // ServerSideEncryption: 'AES256' }; logger.debug({params: _.omit(params, ['Body'])}, 'saveFile S3 Parameters'); this.s3.putObject(params, (err) => { if (err) { logger.fatal(err, 'saveFile.putObject.error'); return done(err); } logger.info({filename: a}, 'saveFile successful'); return done(null); }); }); }
if (err) throw err; }); }).catch(this.log.fatal);
if (err) Log.fatal({ err: err, meta: _.get(err, 'meta') }, 'A fatal error was encountered while attempting to create a server.'); // eslint-disable-line