diff --git a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/GroovyTemplateUtils.java b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/GroovyTemplateUtils.java index 52f00b0ca6f0..26b5da90cb9b 100644 --- a/pinot-spi/src/main/java/org/apache/pinot/spi/utils/GroovyTemplateUtils.java +++ b/pinot-spi/src/main/java/org/apache/pinot/spi/utils/GroovyTemplateUtils.java @@ -18,6 +18,7 @@ */ package org.apache.pinot.spi.utils; +import groovy.lang.GroovyShell; import groovy.text.SimpleTemplateEngine; import java.io.IOException; import java.time.Instant; @@ -33,7 +34,8 @@ public class GroovyTemplateUtils { private GroovyTemplateUtils() { } - private static final SimpleTemplateEngine GROOVY_TEMPLATE_ENGINE = new SimpleTemplateEngine(); + private static final GroovyShell GROOVY_SHELL = new GroovyShell(); + private static final SimpleTemplateEngine GROOVY_TEMPLATE_ENGINE = new SimpleTemplateEngine(GROOVY_SHELL); private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneOffset.UTC); @@ -41,7 +43,9 @@ public static String renderTemplate(String template, Map newCont throws IOException, ClassNotFoundException { Map contextMap = getDefaultContextMap(); contextMap.putAll(newContext); - return GROOVY_TEMPLATE_ENGINE.createTemplate(template).make(contextMap).toString(); + String templateRendered = GROOVY_TEMPLATE_ENGINE.createTemplate(template).make(contextMap).toString(); + GROOVY_SHELL.resetLoadedClasses(); + return templateRendered; } /**