mirror of https://gitee.com/bigwinds/arangodb
Cleanup results of launch and friends in kickstarter.
Add allowAgents option for dispatchers.
This commit is contained in:
parent
6f26e4fc23
commit
b61dfa3c12
|
@ -128,7 +128,7 @@ launchActions.startAgent = function (dispatchers, cmd, isRelaunch) {
|
|||
console.info("Starting agent...");
|
||||
|
||||
// First find out our own data directory:
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(), ".."));
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(),"cluster"));
|
||||
var dataPath = fs.makeAbsolute(cmd.dataPath);
|
||||
if (dataPath !== cmd.dataPath) { // path was relative
|
||||
dataPath = fs.normalize(fs.join(myDataDir,cmd.dataPath));
|
||||
|
@ -216,7 +216,7 @@ launchActions.sendConfiguration = function (dispatchers, cmd, isRelaunch) {
|
|||
|
||||
launchActions.startServers = function (dispatchers, cmd, isRelaunch) {
|
||||
// First find out our own data directory to setup base for relative paths:
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(),".."));
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(),"cluster"));
|
||||
var dataPath = fs.makeAbsolute(cmd.dataPath);
|
||||
if (dataPath !== cmd.dataPath) { // path was relative
|
||||
dataPath = fs.normalize(fs.join(myDataDir, cmd.dataPath));
|
||||
|
@ -335,6 +335,13 @@ launchActions.createSystemColls = function (dispatchers, cmd) {
|
|||
'return load("js/server/version-check.js");\n';
|
||||
var o = { method: "POST", timeout: 90, headers: hdrs };
|
||||
r = download(url, body, o);
|
||||
if (r.code === 200) {
|
||||
r = JSON.parse(r.body);
|
||||
r.isCreateSystemColls = true;
|
||||
return r;
|
||||
}
|
||||
r.error = true;
|
||||
r.isCreateSystemColls = true;
|
||||
return r;
|
||||
};
|
||||
|
||||
|
@ -371,7 +378,7 @@ cleanupActions.startAgent = function (dispatchers, cmd) {
|
|||
console.info("Cleaning up agent...");
|
||||
|
||||
// First find out our own data directory:
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(),".."));
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(),"cluster"));
|
||||
var dataPath = fs.makeAbsolute(cmd.dataPath);
|
||||
if (dataPath !== cmd.dataPath) { // path was relative
|
||||
dataPath = fs.normalize(fs.join(myDataDir,cmd.dataPath));
|
||||
|
@ -388,7 +395,7 @@ cleanupActions.startServers = function (dispatchers, cmd, isRelaunch) {
|
|||
console.info("Cleaning up DBservers...");
|
||||
|
||||
// First find out our own data directory to setup base for relative paths:
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(),".."));
|
||||
var myDataDir = fs.normalize(fs.join(ArangoServerState.basePath(),"cluster"));
|
||||
var dataPath = fs.makeAbsolute(cmd.dataPath);
|
||||
if (dataPath !== cmd.dataPath) { // path was relative
|
||||
dataPath = fs.normalize(fs.join(myDataDir, cmd.dataPath));
|
||||
|
@ -511,7 +518,7 @@ Kickstarter.prototype.launch = function () {
|
|||
}
|
||||
}
|
||||
else {
|
||||
results.push({ error: false });
|
||||
results.push({ error: false, action: cmd.action });
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -605,7 +612,7 @@ Kickstarter.prototype.relaunch = function () {
|
|||
}
|
||||
}
|
||||
else {
|
||||
results.push({ error: false });
|
||||
results.push({ error: false, action: cmd.action });
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -687,7 +694,7 @@ Kickstarter.prototype.shutdown = function() {
|
|||
results.push(res);
|
||||
}
|
||||
else {
|
||||
results.push({ error: false });
|
||||
results.push({ error: false, action: cmd.action });
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -766,7 +773,7 @@ Kickstarter.prototype.cleanup = function() {
|
|||
}
|
||||
}
|
||||
else {
|
||||
results.push({ error: false });
|
||||
results.push({ error: false, action: cmd.action });
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -844,7 +851,7 @@ Kickstarter.prototype.isHealthy = function() {
|
|||
results.push(res);
|
||||
}
|
||||
else {
|
||||
results.push({ error: false });
|
||||
results.push({ error: false, action: cmd.action });
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -226,6 +226,9 @@ function fillConfigWithDefaults (config, defaultConfig) {
|
|||
/// - `allowDBservers`, which is a boolean value indicating
|
||||
/// whether or not DBservers should be started on this dispatcher,
|
||||
/// the default is `true`
|
||||
/// - `allowAgents`, which is a boolean value indicating whether or
|
||||
/// not agents should be started on this dispatcher, the default is
|
||||
/// `true`
|
||||
/// - `username`, which is a string that contains the user name
|
||||
/// for authentication with this dispatcher
|
||||
/// - `passwd`, which is a string that contains the password
|
||||
|
@ -264,12 +267,14 @@ function fillConfigWithDefaults (config, defaultConfig) {
|
|||
/// data directories. This can either be an absolute path (in which
|
||||
/// case all machines in the clusters must use the same path), or
|
||||
/// it can be a relative path. In the latter case it describes the
|
||||
/// data path relative to the path under which the dispatcher stores
|
||||
/// its own data directory. For example, if the data directory
|
||||
/// data path relative to a directory "cluster" in the directory in
|
||||
/// which the dispatcher stores
|
||||
/// its data. For example, if the data directory
|
||||
/// given on the command line of the dispatcher is
|
||||
/// `/etc/arangod/data` and the value of the `dataPath` property is an
|
||||
/// `/var/lib/arangod` and the value of the `dataPath` property is an
|
||||
/// empty string , then the DBservers started by this dispatcher
|
||||
/// will have their data directories under `/etc/arangod` as well.
|
||||
/// will have their data directories in the directory
|
||||
/// `/var/lib/arangod/cluster`.
|
||||
/// These directories will be called `data-PREFIX-ID` where `PREFIX`
|
||||
/// is replaced with the agency prefix (see above) and `ID` is the
|
||||
/// ID of the DBserver or coordinator.
|
||||
|
@ -290,7 +295,7 @@ function fillConfigWithDefaults (config, defaultConfig) {
|
|||
/// actual executable that will be started for the agents in the
|
||||
/// agency. If this is an absolute path, it obviously has to be
|
||||
/// the same on all machines in the cluster, as described for
|
||||
/// `dataPath`. If it is an empty string, the dispatcher uses `etcd`
|
||||
/// `dataPath`. If it is an empty string, the dispatcher uses `etcd-arango`
|
||||
/// in the same directory as the executable that was used to start
|
||||
/// itself. If it is a non-empty relative path, then this path is
|
||||
/// meant relative to the directory in which the executable of the
|
||||
|
@ -374,13 +379,16 @@ Planner.prototype.makePlan = function() {
|
|||
if (!dispatchers[id].hasOwnProperty("allowDBservers")) {
|
||||
dispatchers[id].allowDBservers = true;
|
||||
}
|
||||
if (!dispatchers[id].hasOwnProperty("allowAgents")) {
|
||||
dispatchers[id].allowAgents = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
// If no dispatcher is there, configure a local one (ourselves):
|
||||
if (Object.keys(dispatchers).length === 0) {
|
||||
dispatchers.me = { "id": "me", "endpoint": "tcp://localhost:",
|
||||
"avoidPorts": {}, "allowCoordinators": true,
|
||||
"allowDBservers": true };
|
||||
"allowDBservers": true, "allowAgents": true };
|
||||
config.onlyLocalhost = true;
|
||||
}
|
||||
else {
|
||||
|
@ -398,21 +406,30 @@ Planner.prototype.makePlan = function() {
|
|||
|
||||
// Distribute agents to dispatchers (round robin, choosing ports)
|
||||
var d = 0;
|
||||
var wrap = d;
|
||||
var agents = [];
|
||||
pf = []; // will be filled lazily
|
||||
pf2 = []; // will be filled lazily
|
||||
for (i = 0; i < config.numberOfAgents; i++) {
|
||||
// Find two ports:
|
||||
if (!pf.hasOwnProperty(d)) {
|
||||
pf[d] = new PortFinder(config.agentExtPorts, dispatchers[dispList[d]]);
|
||||
pf2[d] = new PortFinder(config.agentIntPorts, dispatchers[dispList[d]]);
|
||||
i = 0;
|
||||
var oldi = i;
|
||||
while (i < config.numberOfAgents) {
|
||||
if (dispatchers[dispList[d]].allowAgents) {
|
||||
// Find two ports:
|
||||
if (!pf.hasOwnProperty(d)) {
|
||||
pf[d] = new PortFinder(config.agentExtPorts, dispatchers[dispList[d]]);
|
||||
pf2[d] = new PortFinder(config.agentIntPorts, dispatchers[dispList[d]]);
|
||||
}
|
||||
agents.push({"dispatcher":dispList[d],
|
||||
"extPort":pf[d].next(),
|
||||
"intPort":pf2[d].next()});
|
||||
i++;
|
||||
}
|
||||
agents.push({"dispatcher":dispList[d],
|
||||
"extPort":pf[d].next(),
|
||||
"intPort":pf2[d].next()});
|
||||
if (++d >= dispList.length) {
|
||||
d = 0;
|
||||
}
|
||||
if (d === wrap && oldi === i) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Distribute coordinators to dispatchers
|
||||
|
@ -420,8 +437,8 @@ Planner.prototype.makePlan = function() {
|
|||
pf = [];
|
||||
d = 0;
|
||||
i = 0;
|
||||
var wrap = d;
|
||||
var oldi = i;
|
||||
wrap = d;
|
||||
oldi = i;
|
||||
while (i < config.numberOfCoordinators) {
|
||||
if (dispatchers[dispList[d]].allowCoordinators) {
|
||||
if (!pf.hasOwnProperty(d)) {
|
||||
|
|
Loading…
Reference in New Issue