Skip to content

Commit

Permalink
Merge pull request #115 from uber/ringpop_add_version_to_latest
Browse files Browse the repository at this point in the history
Ringpop add version to latest
  • Loading branch information
jwolski2 committed Jul 8, 2015
2 parents 9a0a0fa + b7408df commit e6a8883
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 2 deletions.
24 changes: 22 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ var fs = require('fs');
var globalSetTimeout = require('timers').setTimeout;
var hammock = require('uber-hammock');
var metrics = require('metrics');
var packageJSON = require('./package.json');

var Gossip = require('./lib/swim/gossip');
var sendPing = require('./lib/swim/ping-sender.js');
Expand All @@ -37,6 +38,7 @@ var createMembershipUpdateListener = require('./lib/membership-update-listener.j
var createServer = require('./server');
var Dissemination = require('./lib/dissemination.js');
var errors = require('./lib/errors.js');
var getTChannelVersion = require('./lib/util.js').getTChannelVersion;
var HashRing = require('./lib/ring');
var Membership = require('./lib/membership.js');
var MembershipIterator = require('./lib/membership-iterator.js');
Expand Down Expand Up @@ -143,6 +145,11 @@ function RingPop(options) {

this.destroyed = false;
this.joiner = null;

this.startTime = Date.now(); //used for calculating uptime

this.tchannelVersion = getTChannelVersion();
this.ringpopVersion = packageJSON.version;
}

require('util').inherits(RingPop, EventEmitter);
Expand Down Expand Up @@ -356,7 +363,11 @@ RingPop.prototype.getStatsHooksStats = function getStatsHooksStats() {
};

RingPop.prototype.getStats = function getStats() {
return {
var timestamp = Date.now();
var uptime = timestamp - this.startTime;


var stats = {
hooks: this.getStatsHooksStats(),
membership: this.membership.getStats(),
process: {
Expand All @@ -370,8 +381,17 @@ RingPop.prototype.getStats = function getStats() {
serverRate: this.serverRate.printObj().m1,
totalRate: this.totalRate.printObj().m1
},
ring: Object.keys(this.ring.servers)
ring: Object.keys(this.ring.servers),
version: this.ringpopVersion,
timestamp: timestamp,
uptime: uptime
};

if (this.tchannelVersion !== null) {
stats.tchannelVersion = this.tchannelVersion;
}

return stats;
};

RingPop.prototype.handleTick = function handleTick(cb) {
Expand Down
21 changes: 21 additions & 0 deletions lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,33 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
'use strict';

var fs = require('fs');
var path = require('path');

var HOST_CAPTURE = /(\d+\.\d+\.\d+\.\d+):\d+/;

function captureHost(hostPort) {
var match = HOST_CAPTURE.exec(hostPort);
return match && match[1];
}

function getTChannelVersion() {
try {
var modulePath = require.resolve('tchannel');
var dirName = path.dirname(modulePath);
var packageJsonPath = path.join(dirName, 'package.json');

if (fs.existsSync(packageJsonPath)) {
return require(packageJsonPath).version;
}
}
catch (e) {
return null;
}
}

function isEmptyArray(array) {
return !Array.isArray(array) || array.length === 0;
}
Expand Down Expand Up @@ -61,6 +81,7 @@ function safeParse(str) {

module.exports = {
captureHost: captureHost,
getTChannelVersion: getTChannelVersion,
isEmptyArray: isEmptyArray,
mapUniq: mapUniq,
numOrDefault: numOrDefault,
Expand Down

0 comments on commit e6a8883

Please sign in to comment.