From f8f60eabade8624ead3773795856d4168a1af53b Mon Sep 17 00:00:00 2001 From: Simon Detheridge Date: Thu, 1 Jul 2021 11:45:16 +0100 Subject: [PATCH 1/2] Revert "Merge pull request #125 from overleaf/spd-revert-jetty-changes" This reverts commit 9c324c378c46aa8b4b14e529e90ad9cbfca969cd, reversing changes made to 63ccd609405952aa8749299c8a5cf7895f14a1bd. --- .../git-bridge/conf/envsubst_template.json | 2 ++ services/git-bridge/conf/example_config.json | 2 ++ services/git-bridge/conf/local.json | 2 ++ services/git-bridge/pom.xml | 4 ++-- .../wlgitbridge/application/config/Config.java | 18 ++++++++++++++++++ .../ic/wlgitbridge/server/GitBridgeServer.java | 9 ++++++++- .../WLGitBridgeIntegrationTest.java | 2 ++ .../application/config/ConfigTest.java | 8 ++++++++ .../ac/ic/wlgitbridge/bridge/BridgeTest.java | 2 ++ 9 files changed, 46 insertions(+), 3 deletions(-) diff --git a/services/git-bridge/conf/envsubst_template.json b/services/git-bridge/conf/envsubst_template.json index ea0d87adbc..df03c9939a 100644 --- a/services/git-bridge/conf/envsubst_template.json +++ b/services/git-bridge/conf/envsubst_template.json @@ -1,5 +1,7 @@ { "port": ${GIT_BRIDGE_PORT:-8000}, + "bindIp": "${GIT_BRIDGE_BIND_IP:-0.0.0.0}", + "idleTimeout": ${GIT_BRIDGE_IDLE_TIMEOUT:-600000}, "rootGitDirectory": "${GIT_BRIDGE_ROOT_DIR:-/tmp/wlgb}", "apiBaseUrl": "${GIT_BRIDGE_API_BASE_URL:-https://localhost/api/v0}", "postbackBaseUrl": "${GIT_BRIDGE_POSTBACK_BASE_URL:-https://localhost}", diff --git a/services/git-bridge/conf/example_config.json b/services/git-bridge/conf/example_config.json index bcf25e7be9..3972be2cb9 100644 --- a/services/git-bridge/conf/example_config.json +++ b/services/git-bridge/conf/example_config.json @@ -1,5 +1,7 @@ { "port": 8080, + "bindIp": "127.0.0.1", + "idleTimeout": 60000, "rootGitDirectory": "/tmp/wlgb", "apiBaseUrl": "https://localhost/api/v0", "postbackBaseUrl": "https://localhost", diff --git a/services/git-bridge/conf/local.json b/services/git-bridge/conf/local.json index 0b2e3e1241..73121ce6ef 100644 --- a/services/git-bridge/conf/local.json +++ b/services/git-bridge/conf/local.json @@ -1,5 +1,7 @@ { "port": 8000, + "bindIp": "0.0.0.0", + "idleTimeout": 600000, "rootGitDirectory": "/tmp/wlgb", "apiBaseUrl": "http://v2.overleaf.test:4000/api/v0", "postbackBaseUrl": "http://git-bridge:8000", diff --git a/services/git-bridge/pom.xml b/services/git-bridge/pom.xml index 2a11cff9ce..4aea908220 100644 --- a/services/git-bridge/pom.xml +++ b/services/git-bridge/pom.xml @@ -76,13 +76,13 @@ org.eclipse.jetty jetty-servlet - 9.4.8.v20171121 + 9.4.38.v20210224 org.eclipse.jetty jetty-server - 9.4.8.v20171121 + 9.4.38.v20210224 diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java index 527e2ed714..8dbef10b23 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/application/config/Config.java @@ -24,6 +24,8 @@ public class Config implements JSONSource { static Config asSanitised(Config config) { return new Config( config.port, + config.bindIp, + config.idleTimeout, config.rootGitDirectory, config.apiBaseURL, config.postbackURL, @@ -37,6 +39,8 @@ public class Config implements JSONSource { } private int port; + private String bindIp; + private int idleTimeout; private String rootGitDirectory; private String apiBaseURL; private String postbackURL; @@ -64,6 +68,8 @@ public class Config implements JSONSource { public Config( int port, + String bindIp, + int idleTimeout, String rootGitDirectory, String apiBaseURL, String postbackURL, @@ -75,6 +81,8 @@ public class Config implements JSONSource { int sqliteHeapLimitBytes ) { this.port = port; + this.bindIp = bindIp; + this.idleTimeout = idleTimeout; this.rootGitDirectory = rootGitDirectory; this.apiBaseURL = apiBaseURL; this.postbackURL = postbackURL; @@ -90,6 +98,8 @@ public class Config implements JSONSource { public void fromJSON(JsonElement json) { JsonObject configObject = json.getAsJsonObject(); port = getElement(configObject, "port").getAsInt(); + bindIp = getElement(configObject, "bindIp").getAsString(); + idleTimeout = getElement(configObject, "idleTimeout").getAsInt(); rootGitDirectory = getElement( configObject, "rootGitDirectory" @@ -131,6 +141,14 @@ public class Config implements JSONSource { return port; } + public String getBindIp() { + return bindIp; + } + + public int getIdleTimeout() { + return idleTimeout; + } + public String getRootGitDirectory() { return rootGitDirectory; } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java index 254b9a0c59..312e3648b9 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/server/GitBridgeServer.java @@ -2,6 +2,7 @@ package uk.ac.ic.wlgitbridge.server; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.server.handler.*; import org.eclipse.jetty.servlet.FilterHolder; import org.eclipse.jetty.servlet.ServletContextHandler; @@ -72,7 +73,7 @@ public class GitBridgeServer { swapStore, snapshotApi ); - jettyServer = new Server(port); + jettyServer = new Server(); configureJettyServer(config, repoStore, snapshotApi); apiBaseURL = config.getAPIBaseURL(); SnapshotAPIRequest.setBaseURL(apiBaseURL); @@ -114,6 +115,12 @@ public class GitBridgeServer { RepoStore repoStore, SnapshotApi snapshotApi ) throws ServletException { + ServerConnector connector = new ServerConnector(this.jettyServer); + connector.setPort(config.getPort()); + connector.setHost(config.getBindIp()); + connector.setIdleTimeout(config.getIdleTimeout()); + this.jettyServer.addConnector(connector); + HandlerCollection handlers = new HandlerList(); handlers.addHandler(initApiHandler()); handlers.addHandler(initBaseHandler()); diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java index 50e8ef674e..6eaa776562 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/WLGitBridgeIntegrationTest.java @@ -1063,6 +1063,8 @@ public class WLGitBridgeIntegrationTest { String cfgStr = "{\n" + " \"port\": " + port + ",\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"" + wlgb.getAbsolutePath() + "\",\n" + diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java index e6036fbf94..02d70def0e 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/application/config/ConfigTest.java @@ -16,6 +16,8 @@ public class ConfigTest { public void testConstructWithOauth() { Reader reader = new StringReader("{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + @@ -42,6 +44,8 @@ public class ConfigTest { public void testConstructWithoutOauth() { Reader reader = new StringReader("{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + @@ -62,6 +66,8 @@ public class ConfigTest { public void asSanitised() throws Exception { Reader reader = new StringReader("{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseUrl\": \"http://127.0.0.1:60000/api/v0\",\n" + " \"postbackBaseUrl\": \"http://127.0.0.1\",\n" + @@ -75,6 +81,8 @@ public class ConfigTest { Config config = new Config(reader); String expected = "{\n" + " \"port\": 80,\n" + + " \"bindIp\": \"127.0.0.1\",\n" + + " \"idleTimeout\": 30000,\n" + " \"rootGitDirectory\": \"/var/wlgb/git\",\n" + " \"apiBaseURL\": \"http://127.0.0.1:60000/api/v0/\",\n" + " \"postbackURL\": \"http://127.0.0.1/\",\n" + diff --git a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java index 8d51fb862e..9026973d49 100644 --- a/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java +++ b/services/git-bridge/src/test/java/uk/ac/ic/wlgitbridge/bridge/BridgeTest.java @@ -53,6 +53,8 @@ public class BridgeTest { gcJob = mock(GcJob.class); bridge = new Bridge( new Config( + 0, + "", 0, "", "", From 33b6ffd4a24bccf01931d7b950eb09359973ba42 Mon Sep 17 00:00:00 2001 From: Simon Detheridge Date: Thu, 1 Jul 2021 11:46:42 +0100 Subject: [PATCH 2/2] Drop default jetty idle timeout to 30sec --- services/git-bridge/conf/envsubst_template.json | 2 +- services/git-bridge/conf/example_config.json | 2 +- services/git-bridge/conf/local.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/git-bridge/conf/envsubst_template.json b/services/git-bridge/conf/envsubst_template.json index df03c9939a..e9c08ef5c9 100644 --- a/services/git-bridge/conf/envsubst_template.json +++ b/services/git-bridge/conf/envsubst_template.json @@ -1,7 +1,7 @@ { "port": ${GIT_BRIDGE_PORT:-8000}, "bindIp": "${GIT_BRIDGE_BIND_IP:-0.0.0.0}", - "idleTimeout": ${GIT_BRIDGE_IDLE_TIMEOUT:-600000}, + "idleTimeout": ${GIT_BRIDGE_IDLE_TIMEOUT:-30000}, "rootGitDirectory": "${GIT_BRIDGE_ROOT_DIR:-/tmp/wlgb}", "apiBaseUrl": "${GIT_BRIDGE_API_BASE_URL:-https://localhost/api/v0}", "postbackBaseUrl": "${GIT_BRIDGE_POSTBACK_BASE_URL:-https://localhost}", diff --git a/services/git-bridge/conf/example_config.json b/services/git-bridge/conf/example_config.json index 3972be2cb9..bfad73f461 100644 --- a/services/git-bridge/conf/example_config.json +++ b/services/git-bridge/conf/example_config.json @@ -1,7 +1,7 @@ { "port": 8080, "bindIp": "127.0.0.1", - "idleTimeout": 60000, + "idleTimeout": 30000, "rootGitDirectory": "/tmp/wlgb", "apiBaseUrl": "https://localhost/api/v0", "postbackBaseUrl": "https://localhost", diff --git a/services/git-bridge/conf/local.json b/services/git-bridge/conf/local.json index 73121ce6ef..9ced5cb053 100644 --- a/services/git-bridge/conf/local.json +++ b/services/git-bridge/conf/local.json @@ -1,7 +1,7 @@ { "port": 8000, "bindIp": "0.0.0.0", - "idleTimeout": 600000, + "idleTimeout": 30000, "rootGitDirectory": "/tmp/wlgb", "apiBaseUrl": "http://v2.overleaf.test:4000/api/v0", "postbackBaseUrl": "http://git-bridge:8000",