From b2ce9db8a80ef2804c9add794c587dc6a7bcd205 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Wed, 26 Aug 2020 11:33:23 +1200 Subject: [PATCH] #2048 - IllegalStateException: No query cache enabled on __. Need explicit @Cache(enableQueryCache=true) ... when ebean.disableL2Cache=true l2 --- src/main/java/io/ebeaninternal/api/SpiEbeanServer.java | 5 +++++ .../java/io/ebeaninternal/server/core/DefaultServer.java | 8 ++++++++ .../io/ebeaninternal/server/core/OrmQueryRequest.java | 5 +++-- src/test/java/io/ebeaninternal/api/TDSpiEbeanServer.java | 5 +++++ 4 files changed, 21 insertions(+), 2 deletions(-) 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;