From 76c4788adb14438ec97ae364f693c432a089b6eb Mon Sep 17 00:00:00 2001 From: "Johannes J. Schmidt" Date: Tue, 7 Jan 2014 13:48:36 +0100 Subject: [PATCH] Correctly handle concurrency --- README.md | 6 ++++-- index.js | 28 ++++++++++++++++------------ package.json | 4 ++-- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 4fc76c9..22848fd 100644 --- a/README.md +++ b/README.md @@ -26,12 +26,14 @@ Now CouchDB takes care of the couchmagick process. ; Optional username and password username = mein-user password = secure -; Number of simultanous streams. Default is 1 +; Number of simultanous streams. Default is 1. streams = 8 +; Concurrency level (number of simultanous convert processes). Default is 1 +concurrency = 8 ; Timeout in ms. Default is 10000 timeout = 1000 ; Batch size. Default is 100 -limit = 1000 +limit = 10 ``` Imagemagick Configuration diff --git a/index.js b/index.js index 325b84b..ae385c7 100755 --- a/index.js +++ b/index.js @@ -28,18 +28,20 @@ couchmagick.get({ }, // Batching - streams: pkg.name + '.streams', - limit: pkg.name + '.limit', - timeout: pkg.name + '.timeout' + concurrency: pkg.name + '.concurrency', + streams: pkg.name + '.streams', + limit: pkg.name + '.limit', + timeout: pkg.name + '.timeout' }, function(err, config) { if (err) { return process.exit(0); } // defaults - config.streams = config.streams || 4; - config.timeout = config.timeout || 10000; - config.limit = config.limit || 100; + config.concurrency = config.concurrency || 1; + config.streams = config.streams || 1; + config.timeout = config.timeout || 10000; + config.limit = config.limit || 100; couchmagick.info('using config ' + JSON.stringify(config).replace(/"password":".*?"/, '"password":"***"')); @@ -50,14 +52,15 @@ couchmagick.get({ var couch = url.format({ protocol: 'http', hostname: config.address, - port: config.port, - auth: config.auth && config.auth.username && config.auth.password ? [ config.auth.username, config.auth.password ].join(':') : null + port: config.port, + auth: config.auth && config.auth.username && config.auth.password ? [ config.auth.username, config.auth.password ].join(':') : null }); var options = { - limit: config.limit, - feed: 'continuous', - timeout: config.timeout + limit: config.limit, + feed: 'continuous', + timeout: config.timeout, + concurrency: config.concurrency }; @@ -73,6 +76,7 @@ couchmagick.get({ stream.on('end', next); } + // main loop ;) function run(err) { if (err) { @@ -89,7 +93,7 @@ couchmagick.get({ return process.exit(0); } - async.eachLimit(dbs, config.processes, listen, run); + async.eachLimit(dbs, config.streams, listen, run); }); } run(); diff --git a/package.json b/package.json index 9c11205..3b7b4f2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "couchmagick", - "version": "1.5.2", + "version": "1.6.0", "description": "Run ImageMagicks `convert` on CouchDB documents.", "main": "index.js", "preferGlobal": true, @@ -29,7 +29,7 @@ "dependencies": { "async": "~0.2.9", "event-stream": "~3.0.20", - "couchmagick-listen": "~1.4.3", + "couchmagick-listen": "~1.5.0", "couch-daemon": "~1.2.1", "nano": "~4.2.1" },