crash on missing externalize txt file under cfclasses

Description

I have set "externalize strings larger than 1000 characters" set for a web context, with inspect templates set to once per request.

today I got a very random error about one of the externalized txt files being missing

"INFO","ajp-nio-8009-exec-10","07/03/2019","11:54:50","","{""ERROR"":{""MESSAGE"":""C:\\lucee\\web-contexts\\test\\cfclasses\\CFC__test1220\\model\\timesheet
timesheetgateway_cfc$cf.txt (The system cannot find the path specified)"",""DETAIL"":"""",""TYPE"":""java.io.FileNotFoundException""

I had a look around the all various log files and couldn't see anything except the error

I had a look into the C:\\lucee\\web-contexts\\test\\cfclasses
CFC__test1220 folder only had a small subset of all the classes which are normally there.. it's as if they got partially purged or something

Environment

Tomcat 8.5.31
Java 1.8.0_181-b13

Activity

Show:
Zac Spitzer
July 3, 2019, 10:55 AM

I guess there needs to be either some extra logic which takes into consideration the dependency between externalised text files and their classes when purging cfclasses, or Lucee could just recover by recompiling the cfc if a externalised text file is missing

Zac Spitzer
July 4, 2019, 1:01 PM

This is also affecting core lucee functionality like cfdump

C:\lucee\web-contexts\test\cfclasses\CFC__lucee_tomcat_lucee_server_context_library_tag13894\dump_cfc$cf.txt (The system cannot find the path specified)

 

Zac Spitzer
July 4, 2019, 5:09 PM

a good way to trigger seems to be to try the “externalize strings larger than 10 characters” which seems to be way to small to be of any practical use, but it demonstrates the problem rather well

I’m guessing one of the key problems is that if you persist a cfc in the application scope, what seems to happen is that some of the text files on which that cfc depends on may be cleared out of the cfclasses directory

 

Zac Spitzer
October 28, 2020, 8:56 PM

just being able to limit this to .cfm files which can’t be persisted would avoid most of the problems, plus somehow making the purge class process consider the source class file and externalized files and as one entity

Assignee

Unassigned

Reporter

Zac Spitzer

Priority

Major

Labels

Fix versions

None

Affects versions

Configure