Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions api/http/transport.js
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,11 @@ function TransportHttpApi (transportModule, app, logger, cache) {
function getCommonBlocksMiddleware (req, res, next) {
req.sanitize(req.query, schema.commonBlock, function (err, report, query) {
if (err) {
logger.debug('Common block request validation failed', { err: err.toString(), req: req.query });
logger.debug('transport-api', 'Common block request validation failed', { err: err.toString(), req: req.query });
return next(err);
}
if (!report.isValid) {
logger.debug('Common block request validation failed', { err: report, req: req.query });
logger.debug('transport-api', 'Common block request validation failed', { err: report, req: req.query });
return res.json({ success: false, error: report.issues });
}

Expand Down
14 changes: 7 additions & 7 deletions api/ws/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class WebSocketServer {
this.logger = logger;

const self = this;
self.logger.info(`[WsNodeServer] Created WebSocketServer`);
self.logger.info('ws-node-server', 'Created WebSocketServer');
}

/**
Expand All @@ -34,12 +34,12 @@ class WebSocketServer {
this.io.on('connection', (socket) => {
const peerIp = socket.handshake.address || socket.request.socket.remoteAddress;

self.logger.debug(`[WsNodeServer] WebSocket peer ${peerIp} is connecting…`);
self.logger.debug('ws-node-server', `WebSocket peer ${peerIp} is connecting…`);

const { nonce } = socket.handshake.auth;

if (!nonce) {
self.logger.trace(`[WsNodeServer] WebSocket peer ${peerIp} is not allowed to connect`, 'Wrong peer nonce');
self.logger.trace('ws-node-server', `WebSocket peer ${peerIp} is not allowed to connect`, 'Wrong peer nonce');

socket.disconnect(true);
return;
Expand All @@ -55,7 +55,7 @@ class WebSocketServer {
normalizeIp(peerIp) !== normalizeIp(existingPeer.ip) ||
existingPeer.state === Peer.STATE.BANNED
) {
self.logger.trace(`[WsNodeServer] WebSocket peer ${peerIp} is not allowed to connect`, 'Unknown or banned peer');
self.logger.trace('ws-node-server', `WebSocket peer ${peerIp} is not allowed to connect`, 'Unknown or banned peer');

socket.disconnect(true);
return;
Expand All @@ -64,7 +64,7 @@ class WebSocketServer {
if (logic.peers.getSocketCount() >= this.max) {
const reason = 'Server connection limit exceeded';

self.logger.trace(`[WsNodeServer] WebSocket peer ${peerIp} is not allowed to connect`, reason);
self.logger.trace('ws-node-server', `WebSocket peer ${peerIp} is not allowed to connect`, reason);

socket.emit('disconnect_reason', reason);
socket.disconnect(true);
Expand All @@ -73,12 +73,12 @@ class WebSocketServer {

existingPeer.isBroadcastingViaSocket = true;

self.logger.info(`[WsNodeServer] WebSocket peer ${peerIp} is connected to the node`);
self.logger.info('ws-node-server', `WebSocket peer ${peerIp} is connected to the node`);

socket.on('disconnect', () => {
const disconnectedPeer = logic.peers.getByNonce(nonce);

self.logger.debug(`[WsNodeServer] WebSocket peer ${disconnectedPeer.ip} is disconnecting…`);
self.logger.debug('ws-node-server', `WebSocket peer ${disconnectedPeer.ip} is disconnecting…`);

if (disconnectedPeer) {
disconnectedPeer.isBroadcastingViaSocket = false;
Expand Down
34 changes: 17 additions & 17 deletions api/ws/transport.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class TransportWsApi {
this.startRotation();

const self = this;
self.logger.info(`[WsNodeClient] Created TransportWsApi`);
self.logger.info('ws-node-client', `Created TransportWsApi`);
}

/**
Expand All @@ -38,7 +38,7 @@ class TransportWsApi {
initialize() {
const self = this;

self.logger.info(`[WsNodeClient] Connecting to random peers via WebSocket…`);
self.logger.info('ws-node-client', `Connecting to random peers via WebSocket…`);

// Clear existing connections
self.connections.forEach(({ socket }) => {
Expand All @@ -52,7 +52,7 @@ class TransportWsApi {
if (err || !peers.length) {
const reason = err ?? 'No suitable peers found';
self.logger.info(
`[WsNodeClient] Unable to initialize peers: ${reason}. Scheduling reconnection…`,
'ws-node-client', `Unable to initialize peers: ${reason}. Scheduling reconnection…`,
);
return self.scheduleReconnect();
}
Expand All @@ -75,7 +75,7 @@ class TransportWsApi {
return;
}

self.logger.debug(`[WsNodeClient] Connecting to WebSocket peer ${peerUrl}…`);
self.logger.debug('ws-node-client', `Connecting to WebSocket peer ${peerUrl}…`);

const socket = io(peerUrl, {
reconnection: false,
Expand All @@ -89,7 +89,7 @@ class TransportWsApi {
socket.on('connect_error', (err) => self.handleConnectError(peer, err));
socket.on('disconnect', (reason) => self.handleDisconnect(peer, reason));
socket.on('disconnect_reason', (reason) => {
this.logger.debug(`[WsNodeClient] ${peer.ip}:${peer.port} rejected connection`, reason);
this.logger.debug('ws-node-client', `${peer.ip}:${peer.port} rejected connection`, reason);
});

self.connections.set(peerUrl, { socket, peer });
Expand All @@ -101,7 +101,7 @@ class TransportWsApi {
* @param {Peer} peer target peer
*/
handleConnect(socket, peer) {
this.logger.info(`[WsNodeClient] Connected to peer WebSocket at ${peer.ip}:${peer.port}`);
this.logger.info('ws-node-client', `Connected to peer WebSocket at ${peer.ip}:${peer.port}`);

this.peers.switchToWs(peer);
this.peers.recordRequest(peer.ip, peer.port, null);
Expand All @@ -115,7 +115,7 @@ class TransportWsApi {
* @param {string} err error message
*/
handleConnectError(peer, err) {
this.logger.debug(`[WsNodeClient] Connection error with ${peer.ip}:${peer.port}`, err.message);
this.logger.debug('ws-node-client', `Connection error with ${peer.ip}:${peer.port}`, err.message);

this.peers.switchToHttp(peer);
this.peers.recordRequest(peer.ip, peer.port, err);
Expand All @@ -129,7 +129,7 @@ class TransportWsApi {
* @param {string} reason disconnection reason
*/
handleDisconnect(peer, reason) {
this.logger.info(`[WsNodeClient] Disconnected from ${peer.ip}:${peer.port}`, reason);
this.logger.info('ws-node-client', `Disconnected from ${peer.ip}:${peer.port}`, reason);
this.peers.switchToHttp(peer);
this.replacePeer(peer);
}
Expand All @@ -149,7 +149,7 @@ class TransportWsApi {
self.getRandomPeer((err, newPeer) => {
if (err || !newPeer) {
const reason = err ?? 'No suitable peers found';
self.logger.debug(`[WsNodeClient] Failed to find replacement peer for ${disconnectedPeer}. ${reason}`);
self.logger.debug('ws-node-client', `Failed to find replacement peer for ${disconnectedPeer}. ${reason}`);
return;
}

Expand Down Expand Up @@ -245,26 +245,26 @@ class TransportWsApi {
updatePeers() {
const self = this;

self.logger.info('[WsNodeClient] Updating peers…');
self.logger.info('ws-node-client', 'Updating peers…');

this.connections.forEach(({ peer }) => {
if (self.peers.isBanned(peer)) {
self.logger.info(`[WsNodeClient] Disconnecting from banned peer ws://${peer.ip}:${peer.port}…`);
self.logger.info('ws-node-client', `Disconnecting from banned peer ws://${peer.ip}:${peer.port}…`);
self.cleanupConnection(peer);
}
});

const availableSlots = this.maxConnections - this.connections.size;

if (availableSlots <= 0) {
self.logger.info('[WsNodeClient] Max connections reached. No peers updated.');
self.logger.info('ws-node-client', 'Max connections reached. No peers updated.');
return;
}

this.getRandomPeers(availableSlots, (err, candidates) => {
if (err || !candidates.length) {
const reason = err ?? 'Every peer is already connected via WebSocket';
self.logger.info(`[WsNodeClient] ${reason}. No peers updated.`);
self.logger.info('ws-node-client', `${reason}. No peers updated.`);
return;
}

Expand Down Expand Up @@ -295,7 +295,7 @@ class TransportWsApi {
rotatePeers() {
const self = this;

self.logger.info('[WsNodeClient] Rotating peers…');
self.logger.info('ws-node-client', 'Rotating peers…');

const totalConnections = self.connections.size;

Expand All @@ -311,16 +311,16 @@ class TransportWsApi {
self.getRandomPeers(countToRotate, (err, newPeers) => {
if (err || !newPeers.length) {
const reason = err ?? 'No suitable peers found';
self.logger.info(`[WsNodeClient] Could not rotate peers: ${reason}`);
self.logger.info('ws-node-client', `Could not rotate peers: ${reason}`);
return;
}

self.logger.info(`[WsNodeClient] Rotating ${newPeers.length} out of ${totalConnections} peers.`);
self.logger.info('ws-node-client', `Rotating ${newPeers.length} out of ${totalConnections} peers.`);

const peersToRotate = shuffled.slice(0, newPeers.length).map((connection) => connection.peer);

peersToRotate.forEach(peer => {
self.logger.debug(`[WsNodeClient] Rotating peer ${peer.ip}:${peer.port}`);
self.logger.debug('ws-node-client', `Rotating peer ${peer.ip}:${peer.port}`);
self.cleanupConnection(peer);
});

Expand Down
39 changes: 20 additions & 19 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -177,16 +177,17 @@ var config = {
* @property {object} - Logger instance.
*/
var logger = new Logger({
echo: appConfig.consoleLogLevel,
consoleLogLevel: appConfig.consoleLogLevel,
errorLevel: appConfig.fileLogLevel,
filename: appConfig.logFileName
filename: appConfig.logFileName,
debugFilename: appConfig.debugFileName
});

// Trying to get last git commit
try {
lastCommit = git.getLastCommit();
} catch (err) {
logger.debug('Cannot get last git commit', err.message);
logger.debug('system', 'Cannot get last git commit', err.message);
}

/**
Expand All @@ -196,7 +197,7 @@ try {
var d = require('domain').create();

d.on('error', function (err) {
logger.fatal('Domain master', {
logger.fatal('runtime', 'Domain master', {
message: err.message,
stack: err.stack
});
Expand All @@ -218,7 +219,7 @@ d.run(function () {
try {
appConfig.nethash = Buffer.from(genesisblock.payloadHash, 'hex').toString('hex');
} catch (e) {
logger.error('Failed to assign nethash from genesis block');
logger.error('genesis', 'Failed to assign nethash from genesis block');
throw Error(e);
}

Expand Down Expand Up @@ -354,7 +355,7 @@ d.run(function () {
dbSequence: ['logger', function (scope, cb) {
var sequence = new Sequence({
onWarning: function (current, limit) {
scope.logger.warn('DB queue', current);
scope.logger.warn('queue', 'Database queue size is too big. Tasks that queued database changes:', current);
}
});
cb(null, sequence);
Expand All @@ -363,7 +364,7 @@ d.run(function () {
sequence: ['logger', function (scope, cb) {
var sequence = new Sequence({
onWarning: function (current, limit) {
scope.logger.warn('Main queue', current);
scope.logger.warn('queue', 'Main queue size is too big. Jobs in the queue:', current);
}
});
cb(null, sequence);
Expand All @@ -372,7 +373,7 @@ d.run(function () {
balancesSequence: ['logger', function (scope, cb) {
var sequence = new Sequence({
onWarning: function (current, limit) {
scope.logger.warn('Balance queue', current);
scope.logger.warn('queue', 'Balance queue is overloaded. Tasks that require changing balance in the queue:', current);
}
});
cb(null, sequence);
Expand Down Expand Up @@ -587,14 +588,14 @@ d.run(function () {
var d = require('domain').create();

d.on('error', function (err) {
scope.logger.fatal('Domain ' + name, {
scope.logger.fatal('runtime', 'Domain ' + name, {
message: err.message,
stack: err.stack
});
});

d.run(function () {
logger.debug('Loading module', name);
logger.debug('startup', 'Loading module', name);
var Klass = require(config.modules[name]);
var obj = new Klass(cb, scope);
modules.push(obj);
Expand Down Expand Up @@ -638,7 +639,7 @@ d.run(function () {
var ApiEndpoint = require(apiEndpointPath);
new ApiEndpoint(scope.modules[moduleName], scope.network.app, scope.logger, scope.modules.cache);
} catch (e) {
scope.logger.error('Unable to load API endpoint for ' + moduleName + ' of ' + protocol, e);
scope.logger.error('startup', 'Unable to load API endpoint for ' + moduleName + ' of ' + protocol, e);
}
});
});
Expand All @@ -665,12 +666,12 @@ d.run(function () {
*/
listen: ['ready', function (scope, cb) {
scope.network.server.listen(scope.config.port, scope.config.address, function (err) {
scope.logger.info('ADAMANT started: ' + scope.config.address + ':' + scope.config.port);
scope.logger.info('startup', 'ADAMANT started: ' + scope.config.address + ':' + scope.config.port);

if (!err) {
if (scope.config.ssl.enabled) {
scope.network.https.listen(scope.config.ssl.options.port, scope.config.ssl.options.address, function (err) {
scope.logger.info('ADAMANT https started: ' + scope.config.ssl.options.address + ':' + scope.config.ssl.options.port);
scope.logger.info('startup', 'ADAMANT https started: ' + scope.config.ssl.options.address + ':' + scope.config.ssl.options.port);

cb(err, scope.network);
});
Expand All @@ -684,7 +685,7 @@ d.run(function () {
}]
}, function (err, scope) {
if (err) {
logger.fatal(err);
logger.fatal('startup', err);
} else {
/**
* Handles app instance (acts as global variable, passed as parameter).
Expand Down Expand Up @@ -714,7 +715,7 @@ d.run(function () {
* @todo logic repeats: bus, ed, genesisblock, logger, schema.
* @todo description for nonce and ready
*/
scope.logger.info('Modules ready and launched');
scope.logger.info('startup', 'Modules ready and launched');
/**
* Event reporting a cleanup.
* @event cleanup
Expand All @@ -724,7 +725,7 @@ d.run(function () {
* @listens cleanup
*/
process.once('cleanup', function () {
scope.logger.info('Cleaning up...');
scope.logger.info('exit', 'Cleaning up...');
async.eachSeries(modules, function (module, cb) {
if (typeof (module.cleanup) === 'function') {
module.cleanup(cb);
Expand All @@ -733,9 +734,9 @@ d.run(function () {
}
}, function (err) {
if (err) {
scope.logger.error(err);
scope.logger.error('exit', 'An error occurred while cleaning up modules:', err);
} else {
scope.logger.info('Cleaned up successfully');
scope.logger.info('exit', 'Cleaned up successfully');
}
process.exit(1);
});
Expand Down Expand Up @@ -802,7 +803,7 @@ d.run(function () {
*/
process.on('uncaughtException', function (err) {
// Handle error safely
logger.fatal('System error', {
logger.fatal('runtime', 'System error', {
message: err.message,
stack: err.stack
});
Expand Down
1 change: 1 addition & 0 deletions config.default.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"port": 36666,
"address": "0.0.0.0",
"fileLogLevel": "warn",
"debugFileName": "logs/adamant_debug.log",
"logFileName": "logs/adamant.log",
"consoleLogLevel": "info",
"trustProxy": false,
Expand Down
4 changes: 2 additions & 2 deletions helpers/cache.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ module.exports.connect = function (cacheEnabled, config, logger, cb) {

client.connect()
.then(() => {
logger.info('App connected with redis server');
logger.info('cache', 'App connected with redis server');

if (!isRedisLoaded) {
isRedisLoaded = true;
Expand All @@ -34,7 +34,7 @@ module.exports.connect = function (cacheEnabled, config, logger, cb) {
}
})
.catch((err) => {
logger.error('Redis:', err);
logger.error('cache', 'An error occurred while connecting to redis server:', err);
// Only throw an error if cache was enabled in config but were unable to load it properly
if (!isRedisLoaded) {
isRedisLoaded = true;
Expand Down
Loading