From 0b0eb1946ebca862156b2970e990ab3a5c4f6b7f Mon Sep 17 00:00:00 2001 From: Daniel <daniel@harvey> Date: Wed, 8 Jan 2020 12:35:46 +0100 Subject: [PATCH] ENH: Option to disable caching added. --- conf/core/server.conf | 1 + .../java/caosdb/server/ServerProperties.java | 1 + .../caosdb/server/caching/JCSCacheHelper.java | 35 +++++++++++-------- .../caosdb/server/caching/TestNoCaching.java | 29 +++++++++++++++ 4 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 src/test/java/caosdb/server/caching/TestNoCaching.java diff --git a/conf/core/server.conf b/conf/core/server.conf index c3cf62ba..a2be9e0d 100644 --- a/conf/core/server.conf +++ b/conf/core/server.conf @@ -49,6 +49,7 @@ BUGTRACKER_URI= TRANSACTION_BENCHMARK_ENABLED=true CACHE_CONF_LOC=./conf/core/cache.ccf +CACHE_DISABLE=false INSERT_FILES_IN_DIR_ALLOWED_DIRS= diff --git a/src/main/java/caosdb/server/ServerProperties.java b/src/main/java/caosdb/server/ServerProperties.java index e6801689..292d99e7 100644 --- a/src/main/java/caosdb/server/ServerProperties.java +++ b/src/main/java/caosdb/server/ServerProperties.java @@ -91,6 +91,7 @@ public class ServerProperties extends Properties { public static final String KEY_ACTIVATION_TIMEOUT_MS = "ACTIVATION_TIMEOUT_MS"; public static final String KEY_CACHE_CONF_LOC = "CACHE_CONF_LOC"; + public static final String KEY_CACHE_DISABLE = "CACHE_DISABLE"; public static final String KEY_TRANSACTION_BENCHMARK_ENABLED = "TRANSACTION_BENCHMARK_ENABLED"; diff --git a/src/main/java/caosdb/server/caching/JCSCacheHelper.java b/src/main/java/caosdb/server/caching/JCSCacheHelper.java index 55efaa19..1ce455a9 100644 --- a/src/main/java/caosdb/server/caching/JCSCacheHelper.java +++ b/src/main/java/caosdb/server/caching/JCSCacheHelper.java @@ -62,25 +62,32 @@ public class JCSCacheHelper implements CacheHelper { } public static void init() { - init(CaosDBServer.getServerProperty(ServerProperties.KEY_CACHE_CONF_LOC)); + final boolean disabled = + Boolean.parseBoolean(CaosDBServer.getServerProperty(ServerProperties.KEY_CACHE_DISABLE)); + init(CaosDBServer.getServerProperty(ServerProperties.KEY_CACHE_CONF_LOC), disabled); } - public static void init(String configFileLocation) { + public static void init(String configFileLocation, boolean disabled) { Properties config = null; - try { - Properties p = new Properties(); - final InputStream is = new FileInputStream(configFileLocation); - p.load(is); - is.close(); - config = p; - } catch (final FileNotFoundException e) { - logger.error(e); - config = getNOPCachingProperties(); - } catch (final IOException e) { - logger.error(e); + if (disabled) { config = getNOPCachingProperties(); + logger.info("Configuring JCS Caching: disabled"); + } else { + try { + Properties p = new Properties(); + final InputStream is = new FileInputStream(configFileLocation); + p.load(is); + is.close(); + config = p; + } catch (final FileNotFoundException e) { + logger.error(e); + config = getNOPCachingProperties(); + } catch (final IOException e) { + logger.error(e); + config = getNOPCachingProperties(); + } + logger.info("Configuring JCS Caching with {}", config); } - logger.info("Configuring JCS Caching with {}", config); JCS.setConfigProperties(config); } diff --git a/src/test/java/caosdb/server/caching/TestNoCaching.java b/src/test/java/caosdb/server/caching/TestNoCaching.java new file mode 100644 index 00000000..dfab9de6 --- /dev/null +++ b/src/test/java/caosdb/server/caching/TestNoCaching.java @@ -0,0 +1,29 @@ +package caosdb.server.caching; + +import static org.junit.Assert.assertEquals; + +import caosdb.server.CaosDBServer; +import caosdb.server.ServerProperties; +import caosdb.server.database.backend.transaction.RetrieveProperties; +import java.io.IOException; +import org.apache.commons.jcs.JCS; +import org.apache.commons.jcs.access.CacheAccess; +import org.junit.BeforeClass; +import org.junit.Test; + +public class TestNoCaching { + + @BeforeClass + public static void init() throws IOException { + CaosDBServer.initServerProperties(); + CaosDBServer.setProperty(ServerProperties.KEY_CACHE_DISABLE, "TRUE"); + JCSCacheHelper.init(); + } + + @Test + public void testCacheConfig() { + CacheAccess<String, String> retrieve_properties_cache = + JCS.getInstance(RetrieveProperties.CACHE_REGION); + assertEquals(0, retrieve_properties_cache.getCacheAttributes().getMaxObjects()); + } +} -- GitLab