From 3c05197d48c1736652766a0aabc641166c8b7dcd Mon Sep 17 00:00:00 2001 From: Andy Clement Date: Sat, 9 Apr 2016 13:37:09 -0700 Subject: [PATCH] Fix Grails-9829: avoid double processing classes for compiled callsites --- .../springsource/loaded/agent/SpringLoadedPreProcessor.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java b/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java index 490e686..818713f 100644 --- a/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java +++ b/springloaded/src/main/java/org/springsource/loaded/agent/SpringLoadedPreProcessor.java @@ -353,7 +353,11 @@ public class SpringLoadedPreProcessor implements Constants { else { try { // TODO what happens across classloader boundaries? (for regular code and reflective calls) - if (needsClientSideRewriting(slashedClassName)) { + // Skipping the CallSiteClassLoader here because types from there will already have been dealt + // with due to GroovyPlugin class that intercepts define in that infrastructure + if (needsClientSideRewriting(slashedClassName) && + (classLoader == null || !classLoader.getClass().getName().equals( + "org.codehaus.groovy.runtime.callsite.CallSiteClassLoader"))) { bytes = typeRegistry.methodCallRewriteUseCacheIfAvailable(slashedClassName, bytes); } }