From aee50cfda93988c7a547ce80a6b38b60e6bf1810 Mon Sep 17 00:00:00 2001 From: Fabian Jakobs Date: Wed, 16 Dec 2015 15:13:44 +0000 Subject: [PATCH] only consider VFS servers from the same region --- plugins/c9.preview/preview.js | 58 +++-------------------------------- 1 file changed, 5 insertions(+), 53 deletions(-) diff --git a/plugins/c9.preview/preview.js b/plugins/c9.preview/preview.js index 95f6e72c..853a33e7 100644 --- a/plugins/c9.preview/preview.js +++ b/plugins/c9.preview/preview.js @@ -6,6 +6,7 @@ define(function(require, exports, module) { "db", "c9.login", "preview.handler", + "vfs.serverlist", "user-content.redirect", "connect.remote-address" ]; @@ -13,21 +14,18 @@ define(function(require, exports, module) { return main; function main(options, imports, register) { - var maxVfsAge = options.maxVfsAge || 20 * 1000; - var region = options.region; - var session = imports.session; var db = imports.db; var ensureLoggedIn = imports["c9.login"].ensureLoggedIn(); var handler = imports["preview.handler"]; var userContent = imports["user-content.redirect"]; + var getVfsServers = imports["vfs.serverlist"].getServers; var frontdoor = require("frontdoor"); var error = require("http-error"); var requestTimeout = require("c9/request_timeout"); var api = frontdoor(); - var vfsServers; api.registerType("username", /^[0-9a-z_\-]*$/i); api.registerType("projectname", /^[0-9a-z\-_]*$/i); @@ -55,7 +53,7 @@ define(function(require, exports, module) { handler.getProjectSession(), handler.getRole(db), handler.getProxyUrl(function() { - return vfsServers ? vfsServers[0] : null; + return getVfsServers()[0] || null; }), handler.proxyCall() ]); @@ -81,53 +79,7 @@ define(function(require, exports, module) { }, function(req, res, next) { res.redirect(req.url + "/"); }); - - function updateVfsServerList(callback) { - db.Vfs.findAllAndPurge(maxVfsAge, function(err, servers) { - if (err) - return callback(err); - if (!servers.length) - return callback(new Error("No VFS server available")); - - vfsServers = shuffleServers(servers); - callback(); - }); - } - - function shuffleServers(servers) { - servers = servers.slice(); - var isBeta = region == "beta"; - servers = servers.filter(function(s) { - return isBeta ? s.region == "beta" : s.region !== "beta"; - }); - return servers.sort(function(a, b) { - if (a.region == b.region) { - if (a.load < b.load) - return -1; - else - return 1; - } - else if (a.region == region) - return -1; - else if (b.region == region) - return 1; - else - return 0; - }); - } - - load(); - function load() { - updateVfsServerList(function(err) { - if (err) - return setTimeout(load, 20000); - - setInterval(updateVfsServerList.bind(null, function(err) { - if (err) console.error("Retrieving VFS server list failed", err); - }), 20 * 1000); - - register(); - }); - } + + register(); } }); \ No newline at end of file