Code of CFCs in componentPaths isn't flushed by PagePoolClear() or SystemCacheClear()

Description

Code of CFCs in componentPaths isn't flushed by PagePoolClear() or SystemCacheClear(). This makes using the highly-performant "Inspect Templates: Never" setting impractical for many applications. Instead, we must use "Inspect Templates: Once".

To reproduce:
1. Set Inspect Templates to "Never" in Lucee Web Admin.
2. Create the following files:

Application.cfc:

1 2 3 component { this.componentPaths = [ExpandPath('.') & '/objects']; }

objects/number.cfc:

1 2 3 4 5 component { public string function get() { return 4; } }

index.cfm

1 2 3 4 5 6 7 8 9 <cfscript> PagePoolClear(); SystemCacheClear(); WriteOutput(new number().get()); PagePoolClear(); SystemCacheClear(); </cfscript>

3. Visit index.cfm. See that it outputs "4".
4. Change the number returned by the get() method in number.cfc to 5.
5. Reload index.cfm. See that it still outputs "4". It should output 5.
6. Reload as many times as you want. Lucee will not pick up the change to number.cfc, even though PagePoolClear() and SystemCacheClear() are being called.

This problem only seems to affect CFCs in the application's componentPath array. A CFC in the same folder as index.cfm will not exhibit the problem.

Environment

Ubuntu 16.04
Apache 2.4

Status

Assignee

Michael Offner

Reporter

Leon Miller-Out

Labels

Sprint

None

Fix versions

Affects versions

5.2.4.37

Priority

Critical