grails-cache icon indicating copy to clipboard operation
grails-cache copied to clipboard

Fix: Ignore @Cacheable Annotation on Controller Methods

Open jsolas opened this issue 1 year ago • 1 comments

Related Issue: This PR addresses the issue described in https://github.com/grails/grails-cache/issues/168

Summary This PR addresses an issue where the @Cacheable annotation on controller methods does not behave as expected in plugin version 4.0.0. Instead of ignoring the annotation, the method is executed only the first time as if it were being cached, causing inconsistencies when the controller action receives parameters.

Solution To solve this issue, I have modified the buildDelegatingMethodCall method to check if the class is a controller and not a service. If it is a controller, the original method call is returned, effectively ignoring the @Cacheable annotation.

Here is the relevant code snippet:

@Override
protected Expression buildDelegatingMethodCall(SourceUnit sourceUnit, AnnotationNode annotationNode, ClassNode classNode, MethodNode methodNode, MethodCallExpression originalMethodCallExpr, BlockStatement newMethodBody) {
    boolean isControllerClass = classNode.name.endsWith("Controller")
    boolean isServiceClass = classNode.name.endsWith("Service")

    if (isControllerClass && !isServiceClass) {
        return originalMethodCallExpr
    }

    // Existing logic for handling caching
}

Reason for Targeting the 4.x Branch I am submitting this change to the 4.x branch because I encountered this issue when migrating from Grails 2.5.6 to Grails 3.3.11, where I started using version 4 of the cache plugin.

jsolas avatar Jun 22 '24 03:06 jsolas

CLA assistant check
All committers have signed the CLA.

CLAassistant avatar Jun 22 '24 03:06 CLAassistant

At this time, we're not back porting changes unless there's a strong need. Given that people could just remove the annotation, I'm going to close this out since it's been pulled forward via https://github.com/grails/grails-cache/pull/230

jdaugherty avatar Feb 11 '25 18:02 jdaugherty