Skip to content

Instantly share code, notes, and snippets.

@khacanh
Last active August 29, 2015 14:14
Show Gist options
  • Save khacanh/6ea27ce0fcac0a964dc7 to your computer and use it in GitHub Desktop.
Save khacanh/6ea27ce0fcac0a964dc7 to your computer and use it in GitHub Desktop.
share
var config = require('./config');
var workerNum = config['worker_concurrency']
var instanceCount = 1, instanceIndex = 0;
try {
var dna = require('~/dna.json');
var instances = dna['engineyard']['environment']['instances'];
var instanceCount = instances.length;
var thisInstanceId = dna['engineyard']['this'];
var instanceIndex = 0;
for ( ; instanceIndex < instanceCount; instanceIndex++) {
var instance = instances[instanceIndex];
if (instance.id === thisInstanceId) break;
}
} catch (e) {
instanceCount = 1;
instanceIndex = 0;
} finally {
function workerNumPerInstance() {
return workerNum / instanceCount;
};
function startEnd(index) {
// Expecting to split equally between instances
var instanceSpan = 256 / instanceCount;
var instanceStart = instanceSpan * instanceIndex;
var instanceEnd = instanceStart + instanceSpan - 1;
var workerCount = workerNumPerInstance();
var workerSpan = parseInt(instanceSpan / workerCount);
var startAt = instanceStart + index * workerSpan;
var endAt = (index === workerCount - 1) ? instanceEnd :
(startAt - 1 + workerSpan);
var startAtHexStr = startAt.toString(16).pad(2) + '*';
var endAtHexStr = endAt.toString(16).pad(2) + '~';
return {start: startAtHexStr, end: endAtHexStr};
};
module.exports.workerNumPerInstance = workerNumPerInstance;
module.exports.startEnd = startEnd;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment