diff --git a/conf/core/server.conf b/conf/core/server.conf index c3cf62bafe6951f1b1412e648ea2eb10f469a2a4..a2be9e0dc7c216ded4c4b61de23818c8f91e2258 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 e68016894d65a3b77e38aa2f84f48ece7db05683..292d99e7ff6eedf39d0aee71b5f2df0f879b6a64 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 55efaa191bcb777bd63881dfbd72cd292808064c..1ce455a949bcfb76a36815b3b14bcea89e676a4a 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 0000000000000000000000000000000000000000..dfab9de67b8c79871b6d2fd70fc6e25a1c231230 --- /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()); + } +}