This release candidate includes 25 fixes and improvements since 7.0.3.0, with a strong focus on classloader/memory stability, OSGi/Felix reliability, ORM connection handling, archive mapping fixes, and admin improvements.
Download: https://download.lucee.org/
Docker and Installers Bundle
Java 21.0.10+7-LTS
Tomcat 11.0.20
Highlights
Classloader & Memory
LDEV-6133 - PhysicalClassLoaders accumulate in memory and are never released when no longer needed
LDEV-6190 - PhysicalClassLoaderFactory returns closed classloader after flush
LDEV-6168 - Remove static NativeException LRUMap cache
OSGi & Felix
LDEV-5696 - Felix cache is listing previous core versions as bundles
LDEV-6144 - CFMLEngineFactory.getFelix() returns unstarted Felix after clearing corrupted cache, causing NPE
LDEV-6147 - ExtensionProvider.last() prefers SNAPSHOT over release when resolving latest extension
LDEV-6136 - Regression: Extension bundle name change breaks ehcache (and potentially mongodb) cache configs
LDEV-6165 - Regression BundleException: archive-sample1.lar is not a valid bundle
Threading & Request Handling
LDEV-6135 - Regression: Threading via CFTHREAD stability issues in Lucee 7
LDEV-6155 - Request timeout race condition in StopThread causes spurious timeout exceptions
LDEV-6086 - InternalRequest swallows RequestTimeoutException exceptions
ORM
LDEV-6138 - ORM DatasourceManagerImpl.releaseConnection() leaks unmanaged connections when autoCommit=false
LDEV-6139 - releaseORM() skips closeAll() when flushAll() throws, leaking ORM session connections
Archive & Mapping
LDEV-6172 - MappingImpl.initPhysical() overrides physicalFirst before archive initialises
LDEV-6176 - Admin “Create Archive” produces nested zip path instead of filesystem path
LDEV-6171 - NoSuchMethodError: pushBody() when executing .lar compiled for javax in Jakarta environment (Lucee 7)
Method Resolution
LDEV-6121 - ClazzDynamic.getMethod skips argument count check (self-comparison bug)
LDEV-6201 - Clazz.getMethod cache key missing class identity causes cross-class method pollution
Bug Fixes
LDEV-6123 - int() function silently truncates large numbers outside 32-bit range
LDEV-6177 - Security > Access: temp directory repeatedly appended to custom directories
LDEV-6196 - cfsearch contextHighlightBegin/contextHighlightEnd markers not applied to search results
LDEV-6200 - MavenUtil.createLastUpdated() fails when parent directory doesn’t exist
Enhancements
LDEV-6150 - Add HTTP connection pool stats to getSystemMetrics()
LDEV-6143 - Admin Extension download error message now includes connection failure detail
LDEV-5345 - getPropertyString() getPropertyfile() & setPropertyString()
Full changelog: https://download.lucee.org/changelog/?version=7.0
New 7.0.3+ Extensions
Lucee Extension for Cryptography
Lucee Extension for JSONata
Testing
Please give this RC a spin and report any issues on the Lucee Dev Forum . Your feedback helps us ship a solid stable release!
2 Likes
The last couple of times I’ve tried upgrading Lucee 7.0.2.x, on the run of some code I end up getting a very strange stacktrace that indicates issues with framing (I think that’s the word it uses, but the exceptions do not appear in any log that I can find).
The issue appears to be related to a template caching. If you refresh the page request the error goes away.
This happens has happened when updating via Lucee Admin or updating manually by updating the lucee.jar.
My feeling is there’s a cache folder somewhere that needs purged. I currently purge the following folders:
/server/lucee-server/context/cache/
/server/lucee-server/context/cfclasses/
/server/lucee-server/context/dynclasses/
/server/lucee-server/context/mvn/cache/
/server/lucee-server/context/temp/
/server/lucee-server/patches/
/server/lucee-server/felix-cache/
Is there a folder I’m missing that should be purged as well to ensure that everything is re-compiled with the new version of Lucee?
hmmm, any stacktraces would really shed some light
there are some nice lar / osgi related fixes in 7.0.3
I realize the lack of a stacktrace is problematic. That’s why I was searching the log files.
The problem is my load tests triggered them this round and they do not appear captured anywhere.
I will say my in 7.0.3.43-RC, my out.log is filling up with:
2026-03-31 14:02:56.5 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:02:56.5 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:02:56.5 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:02.4 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:02.4 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:02.4 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:07.7 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:07.8 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:07.8 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:13.2 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:13.2 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:13.2 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:18.6 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:18.6 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:18.6 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:23.9 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:23.9 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:23.9 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:29.5 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:29.5 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:29.5 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
2026-03-31 14:03:34.9 lucee.runtime.config.ConfigFactoryImpl read the config file [/opt/lucee/config/server/lucee-server/context/.CFConfig.json]
Zackster
Split this topic
March 31, 2026, 4:44pm
5