From d5e3580676e70591f19376fe3db3e2c147789095 Mon Sep 17 00:00:00 2001 From: erickgonzalez Date: Fri, 3 Mar 2023 14:20:58 -0600 Subject: [PATCH] #24247 if ttl is 0 it means no cache, use new StringWriter --- .../rendering/velocity/directive/DotCacheDirective.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotCacheDirective.java b/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotCacheDirective.java index 6162577caffa..3ad65a3310b7 100644 --- a/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotCacheDirective.java +++ b/dotCMS/src/main/java/com/dotcms/rendering/velocity/directive/DotCacheDirective.java @@ -40,14 +40,14 @@ public boolean render(InternalContextAdapter context, Writer writer, Node node) HttpServletRequest request = (HttpServletRequest) context.get("request"); boolean shouldCache = shouldCache(request); boolean refreshCache = refreshCache(request); - if (!shouldCache) { + final int ttl = (Integer) node.jjtGetChild(1).value(context); + if (!shouldCache || ttl <= 0) { node.jjtGetChild(2).render(context, writer); return true; } final String key = String.valueOf(node.jjtGetChild(0).value(context)); - final int ttl = (Integer) node.jjtGetChild(1).value(context); if (refreshCache) { CacheLocator.getBlockDirectiveCache().remove(key); } @@ -59,8 +59,7 @@ public boolean render(InternalContextAdapter context, Writer writer, Node node) return true; } - final StringWriter blockContent = STRINGWRITER.get(); - blockContent.getBuffer().setLength(0); + final StringWriter blockContent = new StringWriter(); node.jjtGetChild(2).render(context, blockContent); writer.write(blockContent.toString()); CacheLocator.getBlockDirectiveCache().add(key, Map.of(BlockDirectiveCache.PAGE_CONTENT_KEY, blockContent.toString()), @@ -74,8 +73,6 @@ protected boolean allowExecution() { return LicenseManager.getInstance().isEnterprise(); } - private static final ThreadLocal STRINGWRITER = ThreadLocal.withInitial(StringWriter::new); //NOSONAR - boolean shouldCache(HttpServletRequest request) { if (request == null) {