New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

ringpop-admin

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ringpop-admin - npm Package Compare versions

Comparing version 0.9.3 to 0.9.5

commands.js

5

checksums.js

@@ -25,4 +25,3 @@ #!/usr/bin/env node

var createTable = require('./lib/table.js');
var ClusterManager = require('./lib/cluster-manager.js');
var AdminClient = require('./lib/admin-client.js');
var ClusterManager = require('./lib/cluster.js');
var program = require('commander');

@@ -45,3 +44,3 @@

var clusterManager = new ClusterManager({
program: program,
useTChannelV1: program.useTChannelV1,
coordAddr: address

@@ -48,0 +47,0 @@ });

@@ -24,4 +24,3 @@ #!/usr/bin/env node

var ClusterManager = require('./lib/cluster-manager.js');
var AdminClient = require('./lib/admin-client.js');
var ClusterManager = require('./lib/cluster.js');
var program = require('commander');

@@ -52,3 +51,3 @@

var clusterManager = new ClusterManager({
program: program,
useTChannelV1: program.tchannelV1,
coordAddr: coord

@@ -55,0 +54,0 @@ });

7

dist.js

@@ -29,3 +29,2 @@ #!/usr/bin/env node

var program = require('commander');
var safeParse = require('./lib/util.js').safeParse;

@@ -51,4 +50,6 @@ function main() {

var node = new AdminClient(hostPort);
node.stats(program.tchannelV1 ? 'v1' : 'v2', function onSend(err, stats) {
var node = new AdminClient({
useTChannelV1: program.tchannelV1
});
node.stats(hostPort, function onSend(err, stats) {
var members = stats.membership.members;

@@ -55,0 +56,0 @@

@@ -25,4 +25,3 @@ #!/usr/bin/env node

var fs = require('fs');
var ClusterManager = require('./lib/cluster-manager.js');
var AdminClient = require('./lib/admin-client.js');
var ClusterManager = require('./lib/cluster.js');
var program = require('commander');

@@ -51,3 +50,3 @@

var clusterManager = new ClusterManager({
program: program,
useTChannelV1: program.tchannelV1,
coordAddr: coord

@@ -54,0 +53,0 @@ });

@@ -26,3 +26,2 @@ #!/usr/bin/env node

var assertNoError = require('./lib/util.js').assertNoError;
var ClusterManager = require('./lib/cluster-manager.js');
var program = require('commander');

@@ -44,5 +43,6 @@

var tchannelVersion = program.tchannelV1 ? 'v1' : 'v2';
var client = new AdminClient(address);
client.join(tchannelVersion, function onLeave(err) {
var client = new AdminClient({
useTChannelV1: program.tchannelV1
});
client.join(address, function onLeave(err) {
assertNoError(err);

@@ -49,0 +49,0 @@ process.exit();

@@ -26,3 +26,2 @@ #!/usr/bin/env node

var assertNoError = require('./lib/util.js').assertNoError;
var ClusterManager = require('./lib/cluster-manager.js');
var program = require('commander');

@@ -44,5 +43,6 @@

var tchannelVersion = program.tchannelV1 ? 'v1' : 'v2';
var client = new AdminClient(address);
client.leave(tchannelVersion, function onLeave(err) {
var client = new AdminClient({
useTChannelV1: program.tchannelV1
});
client.leave(address, function onLeave(err) {
assertNoError(err);

@@ -49,0 +49,0 @@ process.exit();

@@ -29,4 +29,4 @@ // Copyright (c) 2015 Uber Technologies, Inc.

function AdminClient(address) {
this.address = address;
function AdminClient(opts) {
this.useTChannelV1 = opts.useTChannelV1;
}

@@ -44,12 +44,12 @@

AdminClient.prototype.join = function join(version, callback) {
this.request(version, '/admin/join', null, null, callback);
AdminClient.prototype.join = function join(host, callback) {
this.request(host, '/admin/join', null, null, callback);
};
AdminClient.prototype.leave = function leave(version, callback) {
this.request(version, '/admin/leave', null, null, callback);
AdminClient.prototype.leave = function leave(host, callback) {
this.request(host, '/admin/leave', null, null, callback);
};
AdminClient.prototype.lookup = function lookup(version, key, callback) {
this.request(version, '/admin/lookup', null, JSON.stringify({
AdminClient.prototype.lookup = function lookup(host, key, callback) {
this.request(host, '/admin/lookup', null, JSON.stringify({
key: key

@@ -59,8 +59,14 @@ }), callback);

AdminClient.prototype.stats = function stats(version, callback) {
this.request(version, '/admin/stats', null, null, callback);
AdminClient.prototype.reuse = function stats(host, body, callback) {
this.request(host, '/admin/member/reuse', null, JSON.stringify(body),
callback);
};
AdminClient.prototype.request = function request(version, endpoint, head, body, callback) {
if (version === 'v1') {
AdminClient.prototype.stats = function stats(host, callback) {
this.request(host, '/admin/stats', null, null, callback);
};
/* jshint maxparams: 5 */
AdminClient.prototype.request = function request(host, endpoint, head, body, callback) {
if (this.useTChannelV1) {
try {

@@ -75,8 +81,9 @@ TChannelV1 = require('tchannelv1');

this.requestV1(this.address, endpoint, null, body, callback);
this.requestV1(host, endpoint, null, body, callback);
} else {
this.requestV2(this.address, endpoint, null, body, callback);
this.requestV2(host, endpoint, null, body, callback);
}
};
/* jshint maxparams: 5 */
AdminClient.prototype.requestV1 = function requestV1(host, endpoint, head, body, callback) {

@@ -102,9 +109,6 @@ if (!tchannelV1) {

/* jshint maxparams: 5 */
AdminClient.prototype.requestV2 = function requestV2(host, endpoint, head, body, callback) {
if (!tchannelV2) {
var tchannel = new TChannelV2({
host: '127.0.0.1',
port: 31999
});
var tchannel = new TChannelV2();
tchannelV2 = tchannel.makeSubChannel({

@@ -111,0 +115,0 @@ serviceName: 'ringpop'

@@ -22,45 +22,197 @@ // Copyright (c) 2015 Uber Technologies, Inc.

function Cluster() {
this.membershipChecksum = null;
this.membership = null;
this.nodes = [];
this.nodeCount = 0;
var fs = require('fs');
var async = require('async');
var AdminClient = require('./admin-client.js');
var Partition = require('./partition.js');
var Stats = require('./stats.js');
function Cluster(opts) {
opts = opts || {
dumpTo: 'ringpop-admin-stats.dump'
};
this.useTChannelV1 = opts.useTChannelV1;
this.coordAddr = opts.coordAddr;
this.adminClient = new AdminClient({
useTChannelV1: this.useTChannelV1
});
this.fetchLimit = opts.fetchLimit || 50;
this.partitions = {};
this.lastDownloadTime = null;
this.lastFetchTime = null;
this.dumpTo = opts.dumpTo;
}
Cluster.prototype.addNode = function addNode(node) {
this.nodes.push(node);
Cluster.prototype.getPartitionAt = function getPartitionAt(index) {
return this.getPartitions()[index];
};
Cluster.prototype.getHostAddrs = function getHostAddrs() {
var hosts = this.getMemberAddrs().reduce(function reduce(acc, addr) {
var parts = addr.split(':');
acc[parts[0]] = true;
return acc;
}, {});
Cluster.prototype.getPartitions = function getPartitions() {
var self = this;
return Object.keys(hosts);
return Object.keys(this.partitions).map(function mapCluster(membershipChecksum) {
return self.partitions[membershipChecksum];
});
};
Cluster.prototype.getHostCount = function getHostCount() {
return this.getHostAddrs().length;
Cluster.prototype.getClusterAt = function getClusterAt() {
var partitions = this.getPartitions();
partitions.sort(function sortBy(a, b) {
if (a.membershipChecksum < b.membershipChecksum) {
return -1;
} else if (a.membershipChecksum > b.membershipChecksum) {
return 1;
} else {
return 0;
}
});
return partitions[0];
};
Cluster.prototype.getMemberAddrs = function getMemberAddrs() {
return this.membership.map(function map(member) {
return member.address;
Cluster.prototype.getClusterChecksums = function getClusterChecksums() {
return Object.keys(this.partitions);
};
Cluster.prototype.getPartitionCount = function getPartitionCount() {
return Object.keys(this.partitions).length;
};
Cluster.prototype.fetchStats = function fetchStats(callback) {
var self = this;
// Reset with every fetch
this.partitions = {};
this.lastFetchTime = new Date().toISOString();
var downloadTime = Date.now();
this.adminClient.stats(this.coordAddr, function onSend(err, stats) {
if (err) {
callback(err);
return;
}
if (!stats) {
callback(new Error('stats could not be gathered'));
return;
}
if (!stats.membership) {
callback(new Error('stats did not contain membership'));
return;
}
if (!stats.membership.members) {
callback(new Error('membership did not contain members'));
return;
}
async.mapLimit(stats.membership.members, self.fetchLimit, mapMember, onComplete);
function mapMember(member, next) {
self.adminClient.stats(member.address, function(err, stats) {
var statsObj = new Stats();
statsObj.address = member.address;
if (err) {
next(null, statsObj);
return;
}
statsObj.membershipChecksum = stats.membership.checksum;
statsObj.members = stats.membership.members;
next(null, statsObj);
});
}
function onComplete(err, allStats) {
self.lastDownloadTime = Date.now() - downloadTime;
self.allStats = allStats;
self.allStats.forEach(function eachStats(stats) {
self.parseStats(stats);
});
callback();
}
});
};
Cluster.prototype.getNodeCount = function getNodeCount() {
return this.nodes.length;
Cluster.prototype.lookup = function lookup(key, callback) {
var self = this;
this.fetchStats(function onStats(err) {
if (err) {
callback(err);
return;
}
self.adminClient.lookup(self.coordAddr, key, callback);
});
};
Cluster.prototype.getSortedMembers = function getSortedMembers() {
var membersCopy = this.membership.slice(0);
Cluster.prototype.parseStats = function parseStats(stats) {
if (!stats.membershipChecksum) {
return;
}
membersCopy.sort();
var cluster = this.partitions[stats.membershipChecksum];
return membersCopy;
if (!cluster) {
cluster = new Partition();
cluster.membershipChecksum = stats.membershipChecksum;
cluster.membership = stats.members;
this.partitions[cluster.membershipChecksum] = cluster;
}
cluster.nodeCount++;
cluster.addNode(stats.node);
};
Cluster.prototype.reuse = function reuse(opts, callback) {
var self = this;
var results = [];
this.adminClient.stats(opts.coordinator, function onStats(err, stats) {
if (err) {
callback(err);
return;
}
var members = stats.membership.members;
async.eachLimit(members, opts.limit, iterator, onDone);
});
function iterator(member, callback) {
self.adminClient.reuse(member.address, {
memberAddr: opts.member
}, function onReuse(err) {
results.push({
member: member.address,
err: err
});
callback();
});
}
function onDone() {
callback(null, results);
}
};
Cluster.prototype.dumpStats = function dumpStats() {
fs.appendFile(
this.dumpTo,
JSON.stringify({
timestamp: Date.now(),
clusters: this.partitions
}) + '\n',
function() {} // NOOP, no way to display it right now.
);
};
module.exports = Cluster;

@@ -24,4 +24,3 @@ #!/usr/bin/env node

var ClusterManager = require('./lib/cluster-manager.js');
var AdminClient = require('./lib/admin-client.js');
var ClusterManager = require('./lib/cluster.js');
var program = require('commander');

@@ -51,3 +50,3 @@

var clusterManager = new ClusterManager({
program: program,
useTChannelV1: program.tchannelV1,
coordAddr: coord

@@ -54,0 +53,0 @@ });

@@ -24,4 +24,3 @@ #!/usr/bin/env node

var ClusterManager = require('./lib/cluster-manager.js');
var AdminClient = require('./lib/admin-client.js');
var ClusterManager = require('./lib/cluster.js');
var program = require('commander');

@@ -50,3 +49,3 @@

var clusterManager = new ClusterManager({
program: program,
useTChannelV1: program.tchannelV1,
coordAddr: coord

@@ -73,3 +72,1 @@ });

}

@@ -8,3 +8,3 @@ {

"repository": "git://github.com/uber/ringpop-admin.git",
"version": "0.9.3",
"version": "0.9.5",
"bin": {

@@ -11,0 +11,0 @@ "ringpop-admin": "./ringpop-admin.js",

@@ -25,23 +25,10 @@ #!/usr/bin/env node

var createTable = require('./lib/table.js');
var ClusterManager = require('./lib/cluster-manager.js');
var AdminClient = require('./lib/admin-client.js');
var program = require('commander');
var ClusterManager = require('./lib/cluster.js');
var parseStatusCommand = require('./parser.js').parseStatusCommand;
function main() {
program
.description('Status of members in ring')
.option('--tchannel-v1')
.usage('[options] <hostport>');
program.parse(process.argv);
var coord = program.args[0];
if (!coord) {
console.error('Error: hostport is required');
process.exit(1);
}
var command = parseStatusCommand();
var clusterManager = new ClusterManager({
program: program,
coordAddr: coord
useTChannelV1: command.useTChannelV1,
coordAddr: command.coordinator
});

@@ -54,3 +41,2 @@ clusterManager.fetchStats(function onStats(err) {

var partitionCount = clusterManager.getPartitionCount();
if (clusterManager.getPartitionCount() > 1) {

@@ -57,0 +43,0 @@ console.error('Error: cluster is partitioned. An accurate status cannot be provided.');

@@ -25,9 +25,6 @@ #!/usr/bin/env node

var CliColor = require('cli-color');
var CliTable = require('cli-table');
var program = require('commander');
var createTable = require('./lib/table.js');
var ClusterManager = require('./lib/cluster-manager.js');
var AdminClient = require('./lib/admin-client.js');
var PartitionBar = require('./lib/partition-bar.js');
var ClusterManager = require('./lib/cluster.js');

@@ -41,3 +38,2 @@ var currentRows;

var selectedRow = 0;
var tchannelVersion;
var viewportTop;

@@ -52,2 +48,6 @@ var viewportBottom;

function PartitionBar() {
this.selectedPartition = 0;
}
function main() {

@@ -91,3 +91,3 @@ program

dumpTo: program.dumpFile,
program: program
useTChannelV1: program.tchannelV1
});

@@ -137,7 +137,2 @@ var partitionBar = new PartitionBar();

function printAndExit(msg) {
console.log(msg);
process.exit(1);
}
function printPartitionBar(clusterManager, partitionBar) {

@@ -168,4 +163,2 @@ var bar = '';

var partitionTable = createTable(columns);
var partition = clusterManager.getPartitionAt(partitionBar.selectedPartition - 1);

@@ -240,3 +233,3 @@

function printPreamble(clusterManager, partitionBar) {
function printPreamble(clusterManager) {
var cluster = clusterManager.getClusterAt(0);

@@ -335,3 +328,3 @@

function toggleRefresh(callback) {
function toggleRefresh() {
if (isPaused) {

@@ -338,0 +331,0 @@ resumeRefresh();

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc