Skip to content

Commit 44ec3bc

Browse files
author
Rohan Jain
committed
Various fixues: Handle worker/tunnel errors
1 parent 0ef5e3f commit 44ec3bc

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

bin/runner.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,13 @@ var cleanUp = function cleanUp () {
3131
for (var key in workers) {
3232
if (workers.hasOwnProperty(key)) {
3333
client.terminateWorker(workers[key].id, function () {
34+
if (!workers[key]) {
35+
return;
36+
}
37+
3438
console.log('[%s] Terminated', workers[key].string);
39+
clearTimeout(workers[key].activityTimeout);
40+
delete workers[key]
3541
});
3642
}
3743
}
@@ -82,27 +88,34 @@ function launchBrowser(browser) {
8288
}
8389

8490
client.createWorker(browser, function (err, worker) {
85-
var runningChecked = false;
91+
if (err || typeof worker !== 'object') {
92+
utils.alertBrowserStack("Failed to launch worker",
93+
"Arguments: " + JSON.stringify({
94+
err: err,
95+
worker: worker
96+
}, null, 4));
97+
return;
98+
}
8699

87100
worker.config = browser;
88101
worker.string = browserString;
89102
workers[key] = worker;
90103

91104
var statusPoller = setInterval(function () {
92105
client.getWorker(worker.id, function (err, _worker) {
93-
if (runningChecked) {
106+
if (worker.launched) {
94107
return;
95108
}
96109

97110
if (_worker.status === 'running') {
98-
runningChecked = true;
99111
clearInterval(statusPoller);
100112
console.log('[%s] Launched', worker.string);
113+
worker.launched = true;
101114

102-
setTimeout(function () {
115+
worker.activityTimeout = setTimeout(function () {
103116
if (!worker.acknowledged) {
104117
var subject = "Worker inactive for too long: " + worker.string;
105-
var content = "Worker details:\n" + JSON.stringify(worker);
118+
var content = "Worker details:\n" + JSON.stringify(worker, null, 4);
106119

107120
utils.alertBrowserStack(subject, content);
108121
}

lib/server.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ exports.Server = function Server(bsClient, workers) {
2424
var url_parts = url.parse(request.url, true);
2525
var query = url_parts.query;
2626

27-
if (query._worker_key) {
27+
if (query._worker_key && workers[query._worker_key]) {
2828
workers[query._worker_key].acknowledged = true;
29+
console.log("[%s] Acknowledged", query._browser_string);
2930
}
3031

3132
fs.exists(filename, function(exists) {
@@ -109,8 +110,13 @@ exports.Server = function Server(bsClient, workers) {
109110

110111
if (worker) {
111112
bsClient.terminateWorker(worker.id, function () {
113+
if (!workers[uuid]) {
114+
return;
115+
}
116+
112117
console.log('[%s] Terminated', worker.string);
113118

119+
clearTimeout(workers[uuid].activityTimeout);
114120
delete workers[uuid];
115121

116122
if (utils.objectSize(workers) === 0) {

lib/tunnel.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ var Tunnel = function Tunnel (key, port, callback, err) {
2323
if (stdout.indexOf('Error') >= 0) {
2424
console.log("..Failed");
2525
console.log(stdout);
26+
process.exit(-2);
2627
}
2728
});
2829

0 commit comments

Comments
 (0)