diff --git a/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java b/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java index 9a3168524..4ac98d61d 100644 --- a/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java +++ b/src/main/java/io/ebeaninternal/api/SpiEbeanServer.java @@ -33,6 +33,11 @@ import java.util.function.Predicate; */ public interface SpiEbeanServer extends ExtendedServer, EbeanServer, BeanCollectionLoader { + /** + * Return true if the L2 cache has been disabled. + */ + boolean isDisableL2Cache(); + /** * Return the log manager. */ diff --git a/src/main/java/io/ebeaninternal/server/core/DefaultServer.java b/src/main/java/io/ebeaninternal/server/core/DefaultServer.java index ae4f19328..03cd023a9 100644 --- a/src/main/java/io/ebeaninternal/server/core/DefaultServer.java +++ b/src/main/java/io/ebeaninternal/server/core/DefaultServer.java @@ -249,6 +249,8 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { private final SlowQueryListener slowQueryListener; + private final boolean disableL2Cache; + /** * Create the DefaultServer. */ @@ -256,6 +258,7 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { this.logManager = config.getLogManager(); this.dtoBeanManager = config.getDtoBeanManager(); this.serverConfig = config.getServerConfig(); + this.disableL2Cache = serverConfig.isDisableL2Cache(); this.serverCacheManager = cache; this.databasePlatform = config.getDatabasePlatform(); this.backgroundExecutor = config.getBackgroundExecutor(); @@ -330,6 +333,11 @@ public final class DefaultServer implements SpiServer, SpiEbeanServer { } } + @Override + public boolean isDisableL2Cache() { + return disableL2Cache; + } + @Override public SpiLogManager log() { return logManager; diff --git a/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java b/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java index b553bb653..5ea1052c1 100644 --- a/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java +++ b/src/main/java/io/ebeaninternal/server/core/OrmQueryRequest.java @@ -698,8 +698,9 @@ public final class OrmQueryRequest extends BeanRequest implements SpiOrmQuery @Override @SuppressWarnings("unchecked") public Object getFromQueryCache() { - - if (query.getUseQueryCache() == CacheMode.OFF || (transaction != null && transaction.isSkipCache())) { + if (query.getUseQueryCache() == CacheMode.OFF + || (transaction != null && transaction.isSkipCache()) + || ebeanServer.isDisableL2Cache()) { return null; } else { cacheKey = query.queryHash(); diff --git a/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java b/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java index 0c6cfeeb3..2d30bb15b 100644 --- a/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java +++ b/src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java @@ -96,6 +96,11 @@ public class TDSpiEbeanServer implements SpiEbeanServer { public void setClock(Clock clock) { } + @Override + public boolean isDisableL2Cache() { + return false; + } + @Override public SpiLogManager log() { return null;