Merge remote-tracking branch 'origin/master' into fix/vfs-multi-attempt

Conflicts:
	plugins/c9.vfs.client/endpoint.js
pull/43/merge
Tim Robinson 2015-05-11 13:03:57 +00:00
rodzic 2957589336
commit 747ab7f543
2 zmienionych plików z 34 dodań i 11 usunięć

Wyświetl plik

@ -60,15 +60,15 @@
"c9.ide.language.css": "#ef8a28943e", "c9.ide.language.css": "#ef8a28943e",
"c9.ide.language.generic": "#32986699ac", "c9.ide.language.generic": "#32986699ac",
"c9.ide.language.html": "#bbe81afed1", "c9.ide.language.html": "#bbe81afed1",
"c9.ide.language.html.diff": "#24f3608d26", "c9.ide.language.html.diff": "#a7311cfc9f",
"c9.ide.language.javascript": "#8479d0a9c1", "c9.ide.language.javascript": "#8479d0a9c1",
"c9.ide.language.javascript.immediate": "#0535804ada", "c9.ide.language.javascript.immediate": "#9a2cce9121",
"c9.ide.language.javascript.eslint": "#2db744b1a3", "c9.ide.language.javascript.eslint": "#2db744b1a3",
"c9.ide.language.javascript.tern": "#7aab8b0b6a", "c9.ide.language.javascript.tern": "#7aab8b0b6a",
"c9.ide.language.javascript.infer": "#cfec494a3c", "c9.ide.language.javascript.infer": "#cfec494a3c",
"c9.ide.language.jsonalyzer": "#dab3edfca5", "c9.ide.language.jsonalyzer": "#dab3edfca5",
"c9.ide.collab": "#e9dd74e31e", "c9.ide.collab": "#e9dd74e31e",
"c9.ide.local": "#a9703b630c", "c9.ide.local": "#2bfd7ff051",
"c9.ide.find": "#6cc6d3379d", "c9.ide.find": "#6cc6d3379d",
"c9.ide.find.infiles": "#72582de3cd", "c9.ide.find.infiles": "#72582de3cd",
"c9.ide.find.replace": "#e4daf722b8", "c9.ide.find.replace": "#e4daf722b8",
@ -77,7 +77,7 @@
"c9.ide.ace.emmet": "#e5f1a92ac3", "c9.ide.ace.emmet": "#e5f1a92ac3",
"c9.ide.ace.gotoline": "#4d1a93172c", "c9.ide.ace.gotoline": "#4d1a93172c",
"c9.ide.ace.keymaps": "#43445d6306", "c9.ide.ace.keymaps": "#43445d6306",
"c9.ide.ace.repl": "#f3a62c1f2a", "c9.ide.ace.repl": "#ada99852fa",
"c9.ide.ace.split": "#0ae0151c78", "c9.ide.ace.split": "#0ae0151c78",
"c9.ide.ace.statusbar": "#d95be89d53", "c9.ide.ace.statusbar": "#d95be89d53",
"c9.ide.ace.stripws": "#cf0f42ac59", "c9.ide.ace.stripws": "#cf0f42ac59",
@ -91,14 +91,14 @@
"c9.ide.imgeditor": "#ed89162aa7", "c9.ide.imgeditor": "#ed89162aa7",
"c9.ide.immediate": "#6845a93705", "c9.ide.immediate": "#6845a93705",
"c9.ide.installer": "#70bb0e85f4", "c9.ide.installer": "#70bb0e85f4",
"c9.ide.mount": "#896ebf836e", "c9.ide.mount": "#32e79866ee",
"c9.ide.navigate": "#7c58c7f3d7", "c9.ide.navigate": "#7c58c7f3d7",
"c9.ide.newresource": "#f1f0624768", "c9.ide.newresource": "#f1f0624768",
"c9.ide.openfiles": "#28a4f5af16", "c9.ide.openfiles": "#28a4f5af16",
"c9.ide.preview": "#0bd8dd6e8c", "c9.ide.preview": "#0bd8dd6e8c",
"c9.ide.preview.browser": "#ac18aaf31d", "c9.ide.preview.browser": "#ac18aaf31d",
"c9.ide.preview.markdown": "#ab8d30ad9f", "c9.ide.preview.markdown": "#ab8d30ad9f",
"c9.ide.pubsub": "#a85fb27eca", "c9.ide.pubsub": "#92ec19ed3a",
"c9.ide.readonly": "#f6f07bbe42", "c9.ide.readonly": "#f6f07bbe42",
"c9.ide.recentfiles": "#7c099abf40", "c9.ide.recentfiles": "#7c099abf40",
"c9.ide.remote": "#cd45e81d2f", "c9.ide.remote": "#cd45e81d2f",

Wyświetl plik

@ -3,6 +3,9 @@ define(function(require, exports, module) {
main.consumes = ["Plugin", "auth", "http", "api", "error_handler", "metrics"]; main.consumes = ["Plugin", "auth", "http", "api", "error_handler", "metrics"];
main.provides = ["vfs.endpoint"]; main.provides = ["vfs.endpoint"];
var PARALLEL_SEARCHES=3;
return main; return main;
function main(options, imports, register) { function main(options, imports, register) {
@ -168,10 +171,24 @@ define(function(require, exports, module) {
// check for version // check for version
if (servers.length && !servers.filter(function(s) { return s.version !== version; }).length) if (servers.length && !servers.filter(function(s) { return s.version !== version; }).length)
return onProtocolChange(callback); return onProtocolChange(callback);
var nextServer = 0;
var foundServer = false;
/* Create a callback that is only ever called once */
var mainCallback = callback;
callback = function() {
if (!foundServer) {
foundServer = true;
var args = Array.prototype.slice.call(arguments);
return mainCallback.apply(this, args);
}
};
// just take the first server that doesn't return an error // just take the first server that doesn't return an error
(function tryNext(i) { function tryNext(i) {
if (i >= servers.length) { if (foundServer) return false;
if (i >= servers.length)
metrics.increment("vfs.failed.connect_all", 1, true); metrics.increment("vfs.failed.connect_all", 1, true);
return callback(new Error("Disconnected: Could not reach your workspace. Please try again later.")); return callback(new Error("Disconnected: Could not reach your workspace. Please try again later."));
} }
@ -233,7 +250,7 @@ define(function(require, exports, module) {
if (err) { if (err) {
setTimeout(function() { setTimeout(function() {
tryNext(i+1); tryNext(++nextServer);
}, 2000); }, 2000);
return; return;
} }
@ -241,7 +258,13 @@ define(function(require, exports, module) {
var vfs = rememberVfs(server, res.vfsid); var vfs = rememberVfs(server, res.vfsid);
callback(null, vfs.vfsid, server.url, server.region); callback(null, vfs.vfsid, server.url, server.region);
}); });
})(0); };
// Kick off some parallel runners to find a vfs server.
for (var s = 0; s < servers.length && s < PARALLEL_SEARCHES; s++) {
tryNext(nextServer++);
}
} }
function onProtocolChange(callback) { function onProtocolChange(callback) {