From 169de1feade4428d2d2f9ad9d535bd9ff3d63056 Mon Sep 17 00:00:00 2001 From: Shane Kilkelly Date: Thu, 14 Jan 2021 13:51:41 +0000 Subject: [PATCH] Configure swap compression method: bzip2 or gzip --- services/git-bridge/conf/example_config.json | 3 +- services/git-bridge/conf/local.json | 3 +- .../wlgitbridge/bridge/swap/job/SwapJob.java | 40 +++++++++++++++++++ .../bridge/swap/job/SwapJobConfig.java | 16 +++++++- 4 files changed, 59 insertions(+), 3 deletions(-) diff --git a/services/git-bridge/conf/example_config.json b/services/git-bridge/conf/example_config.json index 38b14b9787..c716e998b4 100644 --- a/services/git-bridge/conf/example_config.json +++ b/services/git-bridge/conf/example_config.json @@ -26,6 +26,7 @@ "minProjects": 50, "lowGiB": 128, "highGiB": 256, - "intervalMillis": 3600000 + "intervalMillis": 3600000, + "compressionMethod": "bzip2" } } diff --git a/services/git-bridge/conf/local.json b/services/git-bridge/conf/local.json index 0acb24ac0a..17cc37796f 100644 --- a/services/git-bridge/conf/local.json +++ b/services/git-bridge/conf/local.json @@ -22,6 +22,7 @@ "minProjects": 50, "lowGiB": 128, "highGiB": 256, - "intervalMillis": 3600000 + "intervalMillis": 3600000, + "compressionMethod": "bzip2" } } 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 05d6fbebb2..8ea19f7d0e 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 @@ -13,6 +13,46 @@ import java.util.Optional; */ public interface SwapJob { + enum CompressionMethod { Bzip2, Gzip } + + static CompressionMethod stringToCompressionMethod(String compressionString) { + if (compressionString == null) { + return null; + } + CompressionMethod result; + switch (compressionString) { + case "gzip": + result = CompressionMethod.Gzip; + break; + case "bzip2": + result = CompressionMethod.Bzip2; + break; + default: + result = null; + break; + } + return result; + } + + static String compressionMethodAsString(CompressionMethod compressionMethod) { + if (compressionMethod == null) { + return null; + } + String result; + switch (compressionMethod) { + case Gzip: + result = "gzip"; + break; + case Bzip2: + result = "bzip2"; + break; + default: + result = null; + break; + } + return result; + } + static SwapJob fromConfig( Optional cfg, ProjectLock lock, 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 057cb8148e..312696473d 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 @@ -1,5 +1,8 @@ package uk.ac.ic.wlgitbridge.bridge.swap.job; +import uk.ac.ic.wlgitbridge.util.Log; +import uk.ac.ic.wlgitbridge.bridge.swap.job.SwapJob.CompressionMethod; + /** * Created by winston on 23/08/2016. */ @@ -9,17 +12,20 @@ public class SwapJobConfig { private final int lowGiB; private final int highGiB; private final long intervalMillis; + private final String compressionMethod; public SwapJobConfig( int minProjects, int lowGiB, int highGiB, - long intervalMillis + long intervalMillis, + String compressionMethod ) { this.minProjects = minProjects; this.lowGiB = lowGiB; this.highGiB = highGiB; this.intervalMillis = intervalMillis; + this.compressionMethod = compressionMethod; } public int getMinProjects() { @@ -38,4 +44,12 @@ public class SwapJobConfig { return intervalMillis; } + public SwapJob.CompressionMethod getCompressionMethod() { + CompressionMethod result = SwapJob.stringToCompressionMethod(compressionMethod); + if (result == null) { + Log.info("SwapJobConfig: un-supported compressionMethod '{}', default to 'bzip2'", compressionMethod); + result = CompressionMethod.Bzip2; + } + return result; + } }