jenkins-bot has submitted this change and it was merged.
Change subject: Use the process logger in the service
......................................................................
Use the process logger in the service
Change-Id: Ie2dff208a4fbad0b00216882c1fcbc015a4101c2
---
M api/ParsoidService.js
M api/server.js
M lib/ParsoidLogger.js
3 files changed, 72 insertions(+), 64 deletions(-)
Approvals:
Subramanya Sastry: Looks good to me, approved
jenkins-bot: Verified
diff --git a/api/ParsoidService.js b/api/ParsoidService.js
index af8ccda..71ba535 100644
--- a/api/ParsoidService.js
+++ b/api/ParsoidService.js
@@ -10,17 +10,13 @@
hbs = require('handlebars'),
cluster = require('cluster'),
path = require('path'),
+ util = require('util'),
uuid = require('node-uuid').v4,
Buffer = require('buffer').Buffer;
-function ParsoidService( parsoidConfig ) {
-
- var instanceName = cluster.isWorker
- ? 'worker(' + process.pid + ')'
- : 'master';
-
- console.log( " - %s loading ...", instanceName );
+function ParsoidService( parsoidConfig, processLogger ) {
+ processLogger.log( "info", "loading ..." );
// Load routes
var routes = require('./routes')( parsoidConfig );
@@ -63,10 +59,10 @@
// Catch errors
app.on('error', function( err ) {
if ( err.errno === "EADDRINUSE" ) {
- console.error( "Port %d is already in use. Exiting.",
port );
+ processLogger.log( "error", util.format( "Port %d is
already in use. Exiting.", port ) );
cluster.worker.disconnect();
} else {
- console.error( err.message );
+ processLogger.log( "error", err );
}
});
@@ -112,7 +108,7 @@
app.listen( port, host );
- console.log( " - %s ready on %s:%s", instanceName, host || "", port );
+ processLogger.log( "info", util.format( "ready on %s:%s", host || "",
port ) );
}
module.exports = {
diff --git a/api/server.js b/api/server.js
index e9a4897..1613691 100755
--- a/api/server.js
+++ b/api/server.js
@@ -24,37 +24,49 @@
var cluster = require('cluster'),
path = require('path'),
util = require('util'),
- fs = require('fs'),
- // process arguments
- opts = require( "yargs" )
- .usage( "Usage: $0 [-h|-v] [--param[=val]]" )
- .default({
+ fs = require('fs');
- // Start a few more workers than there are cpus visible
to the OS,
- // so that we get some degree of parallelism even on
single-core
- // systems. A single long-running request would
otherwise hold up
- // all concurrent short requests.
- n: require( "os" ).cpus().length + 3,
- c: __dirname + '/localsettings.js',
+// process arguments
+var opts = require( "yargs" )
+ .usage( "Usage: $0 [-h|-v] [--param[=val]]" )
+ .default({
+ // Start a few more workers than there are cpus visible to the
OS,
+ // so that we get some degree of parallelism even on single-core
+ // systems. A single long-running request would otherwise hold
up
+ // all concurrent short requests.
+ n: require( "os" ).cpus().length + 3,
+ c: __dirname + '/localsettings.js',
+ v: false,
+ h: false
+ })
+ .boolean( [ "h", "v" ] )
+ .alias( "h", "help" )
+ .alias( "v", "version" )
+ .alias( "c", "config" )
+ .alias( "n", "num-workers" );
- v: false,
- h: false
+// Help
+var argv = opts.argv;
+if ( argv.h ) {
+ opts.showHelp();
+ process.exit( 0 );
+}
- })
- .boolean( [ "h", "v" ] )
- .alias( "h", "help" )
- .alias( "v", "version" )
- .alias( "c", "config" )
- .alias( "n", "num-workers" ),
- argv = opts.argv;
-
+// Version
+var meta = require( path.join( __dirname, "../package.json" ) );
+if ( argv.v ) {
+ console.log( meta.name + " " + meta.version );
+ process.exit( 0 );
+}
var ParsoidService = require("./ParsoidService.js").ParsoidService,
ParsoidConfig = require("../lib/mediawiki.ParsoidConfig").ParsoidConfig,
- ParsoidLogger = require("../lib/ParsoidLogger.js").ParsoidLogger,
- Logger = require("../lib/Logger.js").Logger;
+ Logger = require("../lib/Logger.js").Logger,
+ PLogger = require("../lib/ParsoidLogger.js"),
+ ParsoidLogger = PLogger.ParsoidLogger,
+ ParsoidLogData = PLogger.ParsoidLogData;
-// The global parsoid configuration object.
+// The global parsoid configuration object
var lsp = path.resolve( process.cwd(), argv.c ), localSettings;
try {
localSettings = require( lsp );
@@ -65,32 +77,29 @@
);
process.exit( 1 );
}
+
var parsoidConfig = new ParsoidConfig( localSettings, null );
-
-
-if (cluster.isMaster && argv.n > 0) {
-
- var meta = require( path.join( __dirname, "../package.json" ) );
-
- // help
- if ( argv.h ) {
- opts.showHelp();
- process.exit( 0 );
+var locationData = {
+ isMaster: cluster.isMaster,
+ toString: function() {
+ return util.format(
+ "[%s][%s]", this.isMaster ? "master" : "worker",
process.pid
+ );
}
+};
- // version
- if ( argv.v ) {
- console.log( meta.name + " " + meta.version );
- process.exit( 0 );
- }
+// Setup process logger
+var logger = new Logger();
+logger._createLogData = function( logType, logObject ) {
+ return new ParsoidLogData( logType, logObject, locationData );
+};
+logger._defaultBackend = ParsoidLogger.prototype._defaultBackend;
+ParsoidLogger.prototype.registerLoggingBackends.call(
+ logger, [ "fatal", "error", "warning", "info" ], ParsoidConfig
+);
- // setup logger for master
- var logger = new Logger();
- ParsoidLogger.prototype.registerLoggingBackends.call(
- logger,
- [ "fatal", "error", "warning", "info" ],
- ParsoidConfig
- );
+if ( cluster.isMaster && argv.n > 0 ) {
+ // Master
var timeoutHandler, timeouts = new Map();
var spawn = function() {
@@ -119,9 +128,9 @@
}
};
- // Fork workers.
+ // Fork workers
var worker;
- logger.log( "info", util.format( "master(%s) initializing %s workers",
process.pid, argv.n ) );
+ logger.log( "info", util.format( "initializing %s workers", argv.n ) );
for (var i = 0; i < argv.n; i++) {
spawn();
}
@@ -135,9 +144,9 @@
});
var shutdown_master = function() {
- logger.log( "info", "master shutting down, killing workers" );
+ logger.log( "info", "shutting down, killing workers" );
cluster.disconnect(function() {
- logger.log( "info", "Exiting master" );
+ logger.log( "info", "exiting" );
process.exit(0);
});
};
@@ -146,9 +155,10 @@
process.on('SIGTERM', shutdown_master);
} else {
- // Worker.
+ // Worker
+
process.on('SIGTERM', function() {
- console.log('Worker ' + process.pid + ' shutting down');
+ logger.log( "warning", "shutting down" );
process.exit(0);
});
@@ -158,10 +168,11 @@
// For 0.10: npm install heapdump
process.on('SIGUSR2', function() {
var heapdump = require('heapdump');
- console.error('SIGUSR2 received! Writing snapshot.');
+ logger.log( "warning", "SIGUSR2 received! Writing snapshot." );
process.chdir('/tmp');
heapdump.writeSnapshot();
});
- var app = new ParsoidService( parsoidConfig );
+ var app = new ParsoidService( parsoidConfig, logger );
+
}
diff --git a/lib/ParsoidLogger.js b/lib/ParsoidLogger.js
index a649385..75dafac 100644
--- a/lib/ParsoidLogger.js
+++ b/lib/ParsoidLogger.js
@@ -187,4 +187,5 @@
if (typeof module === "object") {
module.exports.ParsoidLogger = ParsoidLogger;
+ module.exports.ParsoidLogData = ParsoidLogData;
}
--
To view, visit https://gerrit.wikimedia.org/r/169273
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie2dff208a4fbad0b00216882c1fcbc015a4101c2
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Arlolra <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: Marcoil <[email protected]>
Gerrit-Reviewer: Subramanya Sastry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits