From a5834a0f8cbff41ee0795f93a223d845ab9ca959 Mon Sep 17 00:00:00 2001 From: Eric Mc Sween <5454374+emcsween@users.noreply.github.com> Date: Wed, 17 May 2023 07:17:58 -0400 Subject: [PATCH] Merge pull request #13107 from overleaf/em-reenable-swap-job-test Reenable swap job test in git bridge GitOrigin-RevId: 4fcef9d1b9a6ef169b14ec490b785daeb80ab418 --- .../uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJob.java | 2 +- .../ac/ic/wlgitbridge/bridge/swap/job/SwapJobConfig.java | 9 ++++++++- .../application/WLGitBridgeIntegrationTest.java | 8 ++------ 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJob.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJob.java index 9896a0bb90..d671e50fc2 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJob.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJob.java @@ -64,7 +64,7 @@ public interface SwapJob { if (!cfg.isPresent()) { return new NoopSwapJob(); } - if (!swapStore.isSafe()) { + if (!swapStore.isSafe() && !cfg.get().getAllowUnsafeStores()) { Log.warn("Swap store '{}' is not safe; disabling swap job", swapStore.getClass().getSimpleName()); return new NoopSwapJob(); } diff --git a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobConfig.java b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobConfig.java index 312696473d..c517a23761 100644 --- a/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobConfig.java +++ b/services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/swap/job/SwapJobConfig.java @@ -13,19 +13,22 @@ public class SwapJobConfig { private final int highGiB; private final long intervalMillis; private final String compressionMethod; + private final boolean allowUnsafeStores; public SwapJobConfig( int minProjects, int lowGiB, int highGiB, long intervalMillis, - String compressionMethod + String compressionMethod, + boolean allowUnsafeStores ) { this.minProjects = minProjects; this.lowGiB = lowGiB; this.highGiB = highGiB; this.intervalMillis = intervalMillis; this.compressionMethod = compressionMethod; + this.allowUnsafeStores = allowUnsafeStores; } public int getMinProjects() { @@ -44,6 +47,10 @@ public class SwapJobConfig { return intervalMillis; } + public boolean getAllowUnsafeStores() { + return allowUnsafeStores; + } + public SwapJob.CompressionMethod getCompressionMethod() { CompressionMethod result = SwapJob.stringToCompressionMethod(compressionMethod); if (result == null) { 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 376abc76a7..580572c99e 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 @@ -662,11 +662,6 @@ public class WLGitBridgeIntegrationTest { } - // We skip this test because it now hangs. It relies on the in-memory swap - // job, but we disable the swap job when the noop or in-memory swap store - // are configured. We do that for safety. Such a configuration in a - // production environment would lead to data loss. - @Ignore @Test public void wlgbCanSwapProjects( ) throws IOException, GitAPIException, InterruptedException { @@ -677,7 +672,7 @@ public class WLGitBridgeIntegrationTest { server.start(); server.setState(states.get("wlgbCanSwapProjects").get("state")); wlgb = new GitBridgeApp(new String[] { - makeConfigFile(33874, 3874, new SwapJobConfig(1, 0, 0, 250, null)) + makeConfigFile(33874, 3874, new SwapJobConfig(1, 0, 0, 250, null, true)) }); wlgb.run(); File rootGitDir = new File(wlgb.config.getRootGitDirectory()); @@ -1099,6 +1094,7 @@ public class WLGitBridgeIntegrationTest { " \"s3BucketName\": \"com.overleaf.testbucket\"\n" + " },\n" + " \"swapJob\": {\n" + + " \"allowUnsafeStores\": true," + " \"minProjects\": " + swapCfg.getMinProjects() + ",\n" +