Mwalker has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/151224

Change subject: Unify logging through the service wrapper
......................................................................

Unify logging through the service wrapper

Basically, log everything through winston

Updates to bundler / latexer:
- https://gerrit.wikimedia.org/r/#/c/151215
- https://gerrit.wikimedia.org/r/#/c/151222

Change-Id: I2dcb3d8d45d010915c0e636acaa4ea2c9c017af6
---
M lib/threads/backend.js
1 file changed, 60 insertions(+), 28 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Collection/OfflineContentGenerator
 refs/changes/24/151224/1

diff --git a/lib/threads/backend.js b/lib/threads/backend.js
index b5b39d8..e2e4ab8 100644
--- a/lib/threads/backend.js
+++ b/lib/threads/backend.js
@@ -311,6 +311,64 @@
 }
 
 /**
+ * Process a received child process message
+ *
+ * @param message The message object
+ * @param jobDetails The current job details context
+ * @param part What child process ( bundler / renderer )
+ */
+function processReceivedMessage( message, jobDetails, part ) {
+       var logPrefix, jdUpdateFn;
+       if ( part === 'bundler' ) {
+               logPrefix = 'backend.bundler.bin';
+               jdUpdateFn = jobDetails.updateBundling;
+       } else if ( part === 'renderer' ) {
+               logPrefix = 'backend.renderer.bin';
+               jdUpdateFn = jobDetails.updateRendering;
+       }
+       if ( message.type === 'status' ) {
+               jdUpdateFn.call(
+                       jobDetails,
+                       message.message.file, message.message.status, 
message.message.percent
+               );
+               redisClient
+                       .hset( config.redis.status_set_name,
+                       jobDetails.collectionId,
+                       JSON.stringify( jobDetails )
+               ).catch( function ( err ) {
+                       console.warn( "Could not report status to client: " + 
err, {
+                               channel: logPrefix + '.error',
+                               error:   eh.jsonify( err ),
+                               job:     { id: jobDetails.collectionId, writer: 
jobDetails.writer }
+                       } );
+               } );
+       } else if ( message.type === 'log' ) {
+               var msglevel = message.level || 'info';
+               // Add some metadata, have to see if the received message
+               // already has it though
+               if ( typeof( message.message[ message.message.length - 1 ] ) 
=== "object" ) {
+                       message.message[ message.message.length - 1 ].channel = 
logPrefix;
+                       message.message[ message.message.length - 1 ].job = {
+                               id: jobDetails.collectionId, writer: 
jobDetails.writer
+                       };
+               } else {
+                       message.message.push( {
+                               channel: logPrefix,
+                               job:     { id: jobDetails.collectionId, writer: 
jobDetails.writer }
+                       } );
+               }
+               console[msglevel].apply( console, message.message );
+       } else {
+               console.error( '%s emitted message with unknown type', part, {
+                       channel: logPrefix + '.error',
+                       error:   eh.jsonify( err ),
+                       job:     { id: jobDetails.collectionId, writer: 
jobDetails.writer },
+                       rxmsg:   message
+               } );
+       }
+}
+
+/**
  * Fork the bundler process and resolve the promise when done
  *
  * @param jobDetails
@@ -336,7 +394,6 @@
        child = child_process.fork(
                config.backend.bundler.bin, [
                        '--no-compat',
-                       '--syslog',
                        '-p', config.backend.bundler.parsoid_prefix,
                        '-a', config.backend.bundler.parsoid_api,
                        '-m', metabookPath,
@@ -353,19 +410,7 @@
                );
        } );
        child.on( 'message', function ( message, handle ) {
-               jobDetails.updateBundling( message.file, message.status, 
message.percent );
-                       redisClient
-                               .hset( config.redis.status_set_name,
-                                       jobDetails.collectionId,
-                                       JSON.stringify( jobDetails )
-                               )
-                               .catch(function( err ) {
-                                       console.warn( "Could not report status 
to client: " + err, {
-                                               channel: 
'backend.bundler.error',
-                                               error: eh.jsonify( err ),
-                                               job: { id: 
jobDetails.collectionId, writer: jobDetails.writer }
-                                       } );
-                               } );
+               processReceivedMessage( message, jobDetails, 'bundler' );
        } );
        child.on( 'exit', function ( code, signal ) {
                if ( killTimer ) {
@@ -450,7 +495,6 @@
        } );
        child = child_process.fork(
                config.backend.writers[writer].bin, [
-                       '--syslog',
                        '-T', renderTempDir,
                        '-o', renderFile
                ].concat(
@@ -468,19 +512,7 @@
                );
        } );
        child.on( 'message', function ( message, handle ) {
-               jobDetails.updateRendering( message.file, message.status, 
message.percent );
-               redisClient
-                       .hset( config.redis.status_set_name,
-                               jobDetails.collectionId,
-                               JSON.stringify( jobDetails )
-                       )
-                       .catch( function( err ) {
-                               console.warn( "Could not report status to 
client: " + err, {
-                                       channel: 'backend.renderer.error',
-                                       error: eh.jsonify( err ),
-                                       job: { id: jobDetails.collectionId, 
writer: jobDetails.writer }
-                               } );
-                       } );
+               processReceivedMessage( message, jobDetails, 'renderer' );
        } );
        child.on( 'exit', function ( code, signal ) {
                if ( killTimer ) {

-- 
To view, visit https://gerrit.wikimedia.org/r/151224
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2dcb3d8d45d010915c0e636acaa4ea2c9c017af6
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Collection/OfflineContentGenerator
Gerrit-Branch: master
Gerrit-Owner: Mwalker <mwal...@khaosdev.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to