Fix retry code launch classes
This commit is contained in:
parent
cbbeef5c46
commit
2e2f34f241
@ -3,6 +3,7 @@
|
|||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var spawn = require('child_process').spawn;
|
var spawn = require('child_process').spawn;
|
||||||
var util = require('util');
|
var util = require('util');
|
||||||
|
var net = require('net');
|
||||||
var Timeout = require('node-timeout');
|
var Timeout = require('node-timeout');
|
||||||
|
|
||||||
var OSRMBaseLoader = class {
|
var OSRMBaseLoader = class {
|
||||||
@ -14,7 +15,7 @@ var OSRMBaseLoader = class {
|
|||||||
var limit = Timeout(this.scope.TIMEOUT, { err: this.scope.RoutedError('Launching osrm-routed timed out.') });
|
var limit = Timeout(this.scope.TIMEOUT, { err: this.scope.RoutedError('Launching osrm-routed timed out.') });
|
||||||
|
|
||||||
var runLaunch = (cb) => {
|
var runLaunch = (cb) => {
|
||||||
this.osrmUp(cb);
|
this.osrmUp(() => { this.waitForConnection(cb); });
|
||||||
};
|
};
|
||||||
|
|
||||||
runLaunch(limit((e) => { if (e) callback(e); else callback(); }));
|
runLaunch(limit((e) => { if (e) callback(e); else callback(); }));
|
||||||
@ -42,6 +43,24 @@ var OSRMBaseLoader = class {
|
|||||||
} else callback(true);
|
} else callback(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
waitForConnection (callback) {
|
||||||
|
var retryCount = 0;
|
||||||
|
var connectWithRetry = () => {
|
||||||
|
net.connect({ port: this.scope.OSRM_PORT, host: '127.0.0.1' })
|
||||||
|
.on('connect', () => { callback(); })
|
||||||
|
.on('error', () => {
|
||||||
|
if (retryCount < 2) {
|
||||||
|
retryCount++;
|
||||||
|
setTimeout(connectWithRetry, 100);
|
||||||
|
} else {
|
||||||
|
callback(new Error('Could not connect to osrm-routed after three retires'));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
connectWithRetry();
|
||||||
|
}
|
||||||
|
|
||||||
waitForShutdown (callback) {
|
waitForShutdown (callback) {
|
||||||
var check = () => {
|
var check = () => {
|
||||||
if (!this.osrmIsRunning()) return callback();
|
if (!this.osrmIsRunning()) return callback();
|
||||||
@ -130,7 +149,7 @@ module.exports = {
|
|||||||
this.loader = new OSRMDirectLoader(this.scope);
|
this.loader = new OSRMDirectLoader(this.scope);
|
||||||
this.loader.load(inputFile, callback);
|
this.loader.load(inputFile, callback);
|
||||||
} else {
|
} else {
|
||||||
throw new Error('*** Unknown load method ' + method);
|
callback(new Error('*** Unknown load method ' + method));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user