Changes since 7.0.5.41.
# Lucee 7.1.0.204 changelog Changes since 7.0.5.41. Source: Lucee issue tracker (LDEV) — https://luceeserver.atlassian.net/projects/LDEV - LDEV-6430 (Bug, fixed in 7.1.0.200): LogUtil.doesDebug returns true at log level INFO — https://luceeserver.atlassian.net/browse/LDEV-6430 - LDEV-6424 (Enhancement, fixed in 7.1.0.199): querySetCell: skip type re-detection when value matches column type — https://luceeserver.atlassian.net/browse/LDEV-6424 - LDEV-6423 (Bug, fixed in 7.1.0.198): QueryColumnImpl.getType() acquires per-column monitor on every call — contention on shared queries — https://luceeserver.atlassian.net/browse/LDEV-6423 - LDEV-6422 (Enhancement, fixed in 7.1.0.197): Suppress fillInStackTrace() on lucee.runtime.exp.Abort — (content/location/abort) — https://luceeserver.atlassian.net/browse/LDEV-6422 - LDEV-6421 (Enhancement, fixed in 7.1.0.195): CharBuffer.clear() unnecessary realloc — reuse existing buffer, when bufferOutput enabled — https://luceeserver.atlassian.net/browse/LDEV-6421 - LDEV-6420 (Enhancement, fixed in 7.1.0.194): Reduce request throttling overhead, better visibility and full bypass — https://luceeserver.atlassian.net/browse/LDEV-6420 - LDEV-6419 (Enhancement, fixed in 7.1.0.193): ConfigImpl.getApplicationPageSource: drop per-request toLowerCase from cache key — https://luceeserver.atlassian.net/browse/LDEV-6419 - LDEV-6418 (Enhancement, fixed in 7.1.0.191): TagHandlerPool: cache Class.getName() per Class via ClassValue to avoid per-request String allocation — https://luceeserver.atlassian.net/browse/LDEV-6418 - LDEV-6382 (Enhancement, fixed in 7.1.0.190): PageSourcePool: default to strong-ref, allow disable via sysprop / env var — https://luceeserver.atlassian.net/browse/LDEV-6382 - LDEV-6417 (Enhancement, fixed in 7.1.0.188): Avoid allocating an unused Thread per request in CFMLEngineImpl._service — https://luceeserver.atlassian.net/browse/LDEV-6417 - LDEV-6416 (Enhancement, fixed in 7.1.0.186): Avoid per-request File.exists() on Application.cfc cache hit in MixedAppListener — https://luceeserver.atlassian.net/browse/LDEV-6416 - LDEV-6415 (Enhancement, fixed in 7.1.0.185): Tune Felix resolver parallelism — use single thread for faster startup and less contention — https://luceeserver.atlassian.net/browse/LDEV-6415 - LDEV-6413 (Task, fixed in 7.1.0.184): Prefer Maven over OSGi when extension class definitions specify both endpoints — https://luceeserver.atlassian.net/browse/LDEV-6413 - LDEV-6412 (Bug, fixed in 7.1.0.183): sessionRotate() loses CSRF tokens when sessionStorage is a cache or datasource — https://luceeserver.atlassian.net/browse/LDEV-6412 - LDEV-6410 (Enhancement, fixed in 7.1.0.182): IOUtil ThreadLocal buffer pools cause allocation explosion under virtual threads — https://luceeserver.atlassian.net/browse/LDEV-6410 - LDEV-6409 (Enhancement, fixed in 7.1.0.181): Avoid closed servlet input stream exceptions when snapshotting request body for orphan threads — https://luceeserver.atlassian.net/browse/LDEV-6409 - LDEV-6349 (Enhancement, fixed in 7.1.0.180): MethodInstance constructor allocates discarded NoSuchMethodException on every missing-method probe — https://luceeserver.atlassian.net/browse/LDEV-6349 - LDEV-6406 (Enhancement, fixed in 7.1.0.179): Downgrade CFNE log level to debug — https://luceeserver.atlassian.net/browse/LDEV-6406 - LDEV-6317 (Enhancement, fixed in 7.1.0.178): Replace deprecated REPOSITORY_SONATYPE default with Google Cloud Maven Central mirror — https://luceeserver.atlassian.net/browse/LDEV-6317 - LDEV-6395 (Bug, fixed in 7.1.0.177): Parallel arrayMap/each/filter/some/every doesn't drain futures on exception, causing CME race under virtual threads — https://luceeserver.atlassian.net/browse/LDEV-6395 - LDEV-3367 (Bug, fixed in 7.1.0.176): java.util.ConcurrentModificationException - JSONConverter — https://luceeserver.atlassian.net/browse/LDEV-3367 - LDEV-6397 (Enhancement, fixed in 7.1.0.175): Always purge cfclasses on core upgrade — https://luceeserver.atlassian.net/browse/LDEV-6397 - LDEV-6396 (Bug, fixed in 7.1.0.173): Parallel BIFs ignore maxThreads cap under virtual threads on Java 25+ — https://luceeserver.atlassian.net/browse/LDEV-6396 - LDEV-4745 (Bug, fixed in 7.1.0.172): PageSourceImpl: reloads source when source not changed and exists in class loader — https://luceeserver.atlassian.net/browse/LDEV-4745 - LDEV-6392 (Enhancement, fixed in 7.1.0.171): Preserve parent include path stack on cloned PageContext — https://luceeserver.atlassian.net/browse/LDEV-6392 - LDEV-6394 (Enhancement, fixed in 7.1.0.170): cfthread spawned inside parallel arrayMap/each/filter closures intermittently lost from thread registry — https://luceeserver.atlassian.net/browse/LDEV-6394 - LDEV-6391 (Enhancement, fixed in 7.1.0.169): Lazy-resolve cfclocation in ORMConfigurationImpl to avoid per-request File.isDirectory cost — https://luceeserver.atlassian.net/browse/LDEV-6391 - LDEV-6115 (Enhancement, fixed in 7.1.0.168): Allow virtual threads on Java 25+ (synchronized pinning resolved) - Lucee 7.1 — https://luceeserver.atlassian.net/browse/LDEV-6115 - LDEV-5967 (Bug, fixed in 7.1.0.167): Improve Datasource Pool Lifecycle Management — https://luceeserver.atlassian.net/browse/LDEV-5967 - LDEV-6141 (Enhancement, fixed in 7.1.0.165): implement cfldap clientcert / clientcertpassword attributes — https://luceeserver.atlassian.net/browse/LDEV-6141 - LDEV-6290 (Bug, fixed in 7.1.0.164): Diagnostic logging for JEE session lifecycle problems — https://luceeserver.atlassian.net/browse/LDEV-6290 - LDEV-970 (Bug, fixed in 7.1.0.163): Cookies aren't cased when sent to browser — https://luceeserver.atlassian.net/browse/LDEV-970 - LDEV-6384 (Enhancement, fixed in 7.1.0.160): Reduce per-cfquery overhead on pool borrow path — gate debug logging + tighten ConfigImpl DCL fields — https://luceeserver.atlassian.net/browse/LDEV-6384 - LDEV-6383 (Bug, fixed in 7.1.0.158): JDBC driver first-touch race in DataSourceSupport.initialize can fire bogus "OSGi Bundle not available locally" — https://luceeserver.atlassian.net/browse/LDEV-6383 - LDEV-6341 (Enhancement, fixed in 7.1.0.157): Restore thread CCL on ThreadLocalConfig / ThreadLocalPageContext release — https://luceeserver.atlassian.net/browse/LDEV-6341 - LDEV-6381 (Enhancement, fixed in 7.1.0.155): Reduce IOUtil allocation in shared paths — https://luceeserver.atlassian.net/browse/LDEV-6381 - LDEV-6380 (Enhancement, fixed in 7.1.0.154): Avoid IO buffer allocation for empty cfthread results — https://luceeserver.atlassian.net/browse/LDEV-6380 - LDEV-6376 (Enhancement, fixed in 7.1.0.153): Cache Application.cfc `this.mappings` resolution to eliminate per-request filesystem checks — https://luceeserver.atlassian.net/browse/LDEV-6376 - LDEV-6371 (Bug, fixed in 7.1.0.150): AI verify/ping fails: Lucee config keys leaked into provider API JSON body — https://luceeserver.atlassian.net/browse/LDEV-6371 - LDEV-6367 (Enhancement, fixed in 7.1.0.149): Reduce byte[] allocation in IOUtil.toBytes via size-known callers — https://luceeserver.atlassian.net/browse/LDEV-6367 - LDEV-6366 (Enhancement, fixed in 7.1.0.147): Reuse a single static Tika instance in IOUtil.getMimeType — https://luceeserver.atlassian.net/browse/LDEV-6366 - LDEV-6363 (Bug, fixed in 7.1.0.146): XMLUtil.getProperty(defaultValue) allocates discarded SAXException on every missing-child probe — https://luceeserver.atlassian.net/browse/LDEV-6363 - LDEV-6347 (Enhancement, fixed in 7.1.0.144): Defer ParentException creation in ChildThreadImpl (cfthread spawn path) — https://luceeserver.atlassian.net/browse/LDEV-6347 - LDEV-6348 (Bug, fixed in 7.1.0.143): admin.restart() doesn't stop PageSourcePoolWatcher threads, leaking old-engine classloaders per .lco update Type: Bug — https://luceeserver.atlassian.net/browse/LDEV-6348 - LDEV-6358 (Enhancement, fixed in 7.1.0.142): Replace per-mapping inspect AUTO polling with inspectTemplates() ticker — https://luceeserver.atlassian.net/browse/LDEV-6358 - LDEV-6352 (Bug, fixed in 7.1.0.141): flushIfNecessary() processes RPC PhysicalClassLoaders that have no rename pressure — https://luceeserver.atlassian.net/browse/LDEV-6352 - LDEV-5407 (Bug, fixed in 7.1.0.140): LUCEE_INSPECT_TEMPLATE setting is ignored — https://luceeserver.atlassian.net/browse/LDEV-5407 - LDEV-5866 (Enhancement, fixed in 7.1.0.139): Improve ScopeFactory + PC pool pooling efficiency — https://luceeserver.atlassian.net/browse/LDEV-5866 - LDEV-6344 (Enhancement, fixed in 7.1.0.136): Add DebuggerListener.getApiVersion() + DebuggerRegistry.register() returning rejection reason — https://luceeserver.atlassian.net/browse/LDEV-6344 - LDEV-6338 (Enhancement, fixed in 7.1.0.135): Debugger: Delay Priority downgrade during debugger breakpoint pauses — https://luceeserver.atlassian.net/browse/LDEV-6338 - LDEV-6337 (Bug, fixed in 7.1.0.134): Debugger: variables scope wrong for top-level pages and custom-tag bodies — https://luceeserver.atlassian.net/browse/LDEV-6337 - LDEV-6336 (Enhancement, fixed in 7.1.0.132): Add onRequestEnd(PageContext) hook to DebuggerListener — https://luceeserver.atlassian.net/browse/LDEV-6336 - LDEV-6332 (Enhancement, fixed in 7.1.0.131): purgeExpiredSessions: force flag should also handle cache-backed sessions — https://luceeserver.atlassian.net/browse/LDEV-6332 - LDEV-6328 (Task, fixed in 7.1.0.128): Add LUCEE_EXTENSIONS_CONFIG_ONLY Mode for Extension Management — https://luceeserver.atlassian.net/browse/LDEV-6328 - LDEV-6321 (Bug, fixed in 7.1.0.127): POM resolver fails on dangling property references in `<dependencyManagement>` — https://luceeserver.atlassian.net/browse/LDEV-6321 - LDEV-6322 (Enhancement, fixed in 7.1.0.126): Maven resolver should route snapshots to snapshot-capable repositories only — https://luceeserver.atlassian.net/browse/LDEV-6322 - LDEV-6320 (Bug, fixed in 7.1.0.125): Parallel Maven dependency resolution triggers rate limiting — https://luceeserver.atlassian.net/browse/LDEV-6320 - LDEV-6323 (Bug, fixed in 7.1.0.124): Cannot open Memcached settings in Lucee Admin — https://luceeserver.atlassian.net/browse/LDEV-6323 - LDEV-6324 (Enhancement, fixed in 7.1.0.123): cacheCount() should return -1 when enumeration is unsupported (i.e. memcached) — https://luceeserver.atlassian.net/browse/LDEV-6324 - LDEV-6316 (Bug, fixed in 7.1.0.122): Maven resolver discards HTTP status code on download failure, masking 429 rate-limits and transient errors — https://luceeserver.atlassian.net/browse/LDEV-6316 - LDEV-6302 (Bug, fixed in 7.1.0.121): toSorted() required a sort direction — https://luceeserver.atlassian.net/browse/LDEV-6302 - LDEV-5893 (Enhancement, fixed in 7.1.0.120): STARTTLS re-enables deprecated TLS protocols that the JDK has disabled — https://luceeserver.atlassian.net/browse/LDEV-5893 - LDEV-6308 (Enhancement, fixed in 7.1.0.119): streamline native qoq — https://luceeserver.atlassian.net/browse/LDEV-6308 - LDEV-6311 (Bug, fixed in 7.1.0.118): QoQ HSQLDB engine ignores ORDER BY direction for null cells, diverging from native engine and ACF — https://luceeserver.atlassian.net/browse/LDEV-6311 - LDEV-6310 (Bug, fixed in 7.1.0.117): QoQ regression: stored-null column cells lose null in expressions under FNS=off — https://luceeserver.atlassian.net/browse/LDEV-6310 - LDEV-6306 (Bug, fixed in 7.1.0.116): REST: overlapping restpath on multiple CFCs — first-match wins instead of best/literal match — https://luceeserver.atlassian.net/browse/LDEV-6306 - LDEV-6298 (Enhancement, fixed in 7.1.0.115): Component.duplicate() should share static infrastructure with duplicates, not clone it — https://luceeserver.atlassian.net/browse/LDEV-6298 - LDEV-6301 (Bug, fixed in 7.1.0.113): Concurrent component loading can fail with "invalid component definition, can't find component" due to non-thread-safe HashMap in ComponentPathCache — https://luceeserver.atlassian.net/browse/LDEV-6301 - LDEV-6296 (Bug, fixed in 7.1.0.111): cfquery with matching credentials creates duplicate datasource pool — visible as jmxRegister storms in FusionReactor — https://luceeserver.atlassian.net/browse/LDEV-6296 - LDEV-6294 (Bug, fixed in 7.1.0.110): Datasource pool destroys connections silently; `isValid` timeout passed in wrong unit — https://luceeserver.atlassian.net/browse/LDEV-6294 - LDEV-6293 (Bug, fixed in 7.1.0.109): getSystemMetrics() collapses multiple datasource pools into a single entry — https://luceeserver.atlassian.net/browse/LDEV-6293 - LDEV-6291 (Bug, fixed in 7.1.0.108): DatasourceConnectionImpl.prepareStatement(sql, type, concur) passes resultSetConcurrency as the holdability argument — https://luceeserver.atlassian.net/browse/LDEV-6291 - LDEV-6271 (Bug, fixed in 7.1.0.106): Regression: Property default value lost when method shares same name as property (accessors=true) — https://luceeserver.atlassian.net/browse/LDEV-6271 - LDEV-6288 (Enhancement, fixed in 7.1.0.105): Restore pre-7.1 struct iteration order and session-deserialisation compatibility via lucee.concurrent.map.impl=legacy — https://luceeserver.atlassian.net/browse/LDEV-6288 - LDEV-6286 (Bug, fixed in 7.1.0.104): POM.getInstance unsafe under concurrent transitive-deps resolution — https://luceeserver.atlassian.net/browse/LDEV-6286 - LDEV-6283 (Enhancement, fixed in 7.1.0.102): Admin cache form should persist maven coordinates for maven-based cache extensions — https://luceeserver.atlassian.net/browse/LDEV-6283 - LDEV-5956 (Bug, fixed in 7.1.0.102): RHExtension instance cache causes "extension file does not exist" error on repeated installs from same source path Description — https://luceeserver.atlassian.net/browse/LDEV-5956 - LDEV-6282 (Bug, fixed in 7.1.0.100): Native debugger: uncaught-exception breakpoint stops after frames unwind, scopes uninspectable — https://luceeserver.atlassian.net/browse/LDEV-6282 - LDEV-6281 (Bug, fixed in 7.1.0.99): Non-daemon background threads block JVM exit after warmup / embedded use — https://luceeserver.atlassian.net/browse/LDEV-6281 - LDEV-6280 (Enhancement, fixed in 7.1.0.98): Add mavenExists, mavenExport, mavenImport — https://luceeserver.atlassian.net/browse/LDEV-6280 - LDEV-6232 (Enhancement, fixed in 7.1.0.97): QueryImpl: local query fast path for currentRow — single int field, no ConcurrentHashMap — https://luceeserver.atlassian.net/browse/LDEV-6232 - LDEV-6272 (Bug, fixed in 7.1.0.96): Regression: Components without accessors="true" get spurious accessor UDFs generated — https://luceeserver.atlassian.net/browse/LDEV-6272 - LDEV-6274 (Bug, fixed in 7.1.0.95): Debugger: breakpoints inside cfinclude from a UDF never fire on 7.1 native — https://luceeserver.atlassian.net/browse/LDEV-6274 - LDEV-6270 (Enhancement, fixed in 7.1.0.93): Add support for Maven-based cache provider extensions — https://luceeserver.atlassian.net/browse/LDEV-6270 - LDEV-6269 (Enhancement, fixed in 7.1.0.92): Update Admin ORM to recommend Lucee Hibernate Ext again — https://luceeserver.atlassian.net/browse/LDEV-6269 - LDEV-5953 (Enhancement, fixed in 7.1.0.90): Use ThreadLocal buffer pools for IOUtil — https://luceeserver.atlassian.net/browse/LDEV-5953 - LDEV-6256 (Bug, fixed in 7.1.0.89): Function-level aliases broken for multi-value and missing aliasOf metadata — https://luceeserver.atlassian.net/browse/LDEV-6256 - LDEV-6254 (Enhancement, fixed in 7.1.0.87): Cache DocumentBuilderFactory for non-validating XML parsing — https://luceeserver.atlassian.net/browse/LDEV-6254 - LDEV-6252 (Enhancement, fixed in 7.1.0.86): Optimise CFC property access hot path — ComponentScopeShadow and ConcurrentHashMapNullSupport — https://luceeserver.atlassian.net/browse/LDEV-6252 - LDEV-6249 (Bug, fixed in 7.1.0.85): XML struct classes use reflection that breaks on JDK 17+ — https://luceeserver.atlassian.net/browse/LDEV-6249 - LDEV-6237 (Enhancement, fixed in 7.1.0.84): Improve error message when member function call resolves to a scope instead of a variable — https://luceeserver.atlassian.net/browse/LDEV-6237 - LDEV-6244 (Bug, fixed in 7.1.0.83): GetApplicationSettings uses exception flow control for missing extensions — https://luceeserver.atlassian.net/browse/LDEV-6244 - LDEV-6236 (Bug, fixed in 7.1.0.80): Optimise generated accessor UDFs — skip duplication and bypass UDF dispatch — https://luceeserver.atlassian.net/browse/LDEV-6236 - LDEV-6235 (Bug, fixed in 7.1.0.79): ConfigImpl.getORMEngine() race condition — https://luceeserver.atlassian.net/browse/LDEV-6235 - LDEV-6203 (Bug, fixed in 7.1.0.78): ORM transaction connections force SERIALIZABLE isolation instead of inheriting database default — https://luceeserver.atlassian.net/browse/LDEV-6203 - LDEV-6231 (Enhancement, fixed in 7.1.0.76): QueryImpl/QoQ: eliminate redundant column lookups in clone, union, and ResultSet paths — https://luceeserver.atlassian.net/browse/LDEV-6231 - LDEV-6230 (Enhancement, fixed in 7.1.0.75): Faster query column access: use hash map lookup using existing Key h64 hash — https://luceeserver.atlassian.net/browse/LDEV-6230 - LDEV-6229 (Bug, fixed in 7.1.0.74): runAsync() leaks a thread per executor per chained call — https://luceeserver.atlassian.net/browse/LDEV-6229 - LDEV-6228 (Enhancement, fixed in 7.1.0.73): Remove dead slotForMap/sfm from KeyImpl — https://luceeserver.atlassian.net/browse/LDEV-6228 - LDEV-6204 (Enhancement, fixed in 7.1.0.70): add getTransactionIsolation() BIF — https://luceeserver.atlassian.net/browse/LDEV-6204 - LDEV-6086 (Bug, fixed in 7.1.0.63): InternalRequest swallows RequestTimeoutException exceptions — https://luceeserver.atlassian.net/browse/LDEV-6086 - LDEV-6154 (Bug, fixed in 7.1.0.60): QoQ string concatenation with || operator excludes NULL and empty string rows — https://luceeserver.atlassian.net/browse/LDEV-6154 - LDEV-4183 (Enhancement, fixed in 7.1.0.60): Add Oracle's || operator for string concat in QoQ — https://luceeserver.atlassian.net/browse/LDEV-4183 - LDEV-4182 (Enhancement, fixed in 7.1.0.60): Allow QoQ concat() to accept unlimited parameters — https://luceeserver.atlassian.net/browse/LDEV-4182 - LDEV-6153 (Bug, fixed in 7.1.0.59): QoQ native engine sqrt() function broken — https://luceeserver.atlassian.net/browse/LDEV-6153 - LDEV-6151 (Incompatibility, fixed in 7.1.0.58): QoQ case sensitivity & dbtype struct options — https://luceeserver.atlassian.net/browse/LDEV-6151 - LDEV-6152 (Enhancement, fixed in 7.1.0.57): HSQLDB QoQ column optimization broken — == instead of .equals() causes silent fallback to loading all columns — https://luceeserver.atlassian.net/browse/LDEV-6152 - LDEV-6140 (Enhancement, fixed in 7.1.0.56): MethodTooLargeException should include CFC source path, function name and bytecode size — https://luceeserver.atlassian.net/browse/LDEV-6140 - LDEV-1402 (Enhancement, fixed in 7.1.0.45): Enable Line Debuggers for Lucee — https://luceeserver.atlassian.net/browse/LDEV-1402 - LDEV-3335 (Bug, fixed in 7.1.0.44): Store component properties and accessor UDFs statically per class — https://luceeserver.atlassian.net/browse/LDEV-3335 - LDEV-6092 (Enhancement, fixed in 7.1.0.35): Update to ASM 9.9.1 - Java 26 support — https://luceeserver.atlassian.net/browse/LDEV-6092 - LDEV-6077 (Enhancement, fixed in 7.1.0.33): Defer ParentException Creation Overhead for Every Each/Map/Filter Closure Function Call — https://luceeserver.atlassian.net/browse/LDEV-6077 - LDEV-6076 (Enhancement, fixed in 7.1.0.32): Eliminate Integer autoboxing in SourceCode constructor — https://luceeserver.atlassian.net/browse/LDEV-6076 - LDEV-5992 (Enhancement, fixed in 7.1.0.29): use a pool for qoq hsqldb queries — https://luceeserver.atlassian.net/browse/LDEV-5992 - LDEV-6062 (Enhancement, fixed in 7.1.0.28): Avoid exception-as-flow-control in QoQ — https://luceeserver.atlassian.net/browse/LDEV-6062 - LDEV-6059 (Bug, fixed in 7.1.0.27): avoid using NoSuchElementException exception-as-flow-control — https://luceeserver.atlassian.net/browse/LDEV-6059 - LDEV-6060 (Bug, fixed in 7.1.0.26): CFMLExpressionInterpreter.identifier() unnecessarily looks up PageSource for dot notation setting — https://luceeserver.atlassian.net/browse/LDEV-6060 - LDEV-5832 (Enhancement, fixed in 7.1.0.24): improve parser compiler performance — https://luceeserver.atlassian.net/browse/LDEV-5832 - LDEV-5920 (Enhancement, fixed in 7.1.0.23): improve performance loading resultsets from jdbc — https://luceeserver.atlassian.net/browse/LDEV-5920 - LDEV-6054 (Bug, fixed in 7.1.0.22): Extension Startup-hook with maven coordinates not recognized as valid class definition — https://luceeserver.atlassian.net/browse/LDEV-6054 - LDEV-6044 (Enhancement, fixed in 7.1.0.21): Refactor OSGi system packages configuration to use Felix JPMS auto-detection — https://luceeserver.atlassian.net/browse/LDEV-6044 - LDEV-5923 (Enhancement, fixed in 7.1.0.19): ThreadLocal PageContext registration optimization — https://luceeserver.atlassian.net/browse/LDEV-5923 - LDEV-5908 (Enhancement, fixed in 7.1.0.17): Switch to java ConcurrentHashMap — https://luceeserver.atlassian.net/browse/LDEV-5908 - LDEV-6010 (Task, fixed in 7.1.0.11): Add Ability to Flush Cache for Specific Query and/or Function — https://luceeserver.atlassian.net/browse/LDEV-6010 - LDEV-6002 (Enhancement, fixed in 7.1.0.10): Remove old JTDS extension from FAT JAR — https://luceeserver.atlassian.net/browse/LDEV-6002 - LDEV-5959 (Enhancement, fixed in 7.1.0.9): restore basic extract/compress BIFs for zip/gzip — https://luceeserver.atlassian.net/browse/LDEV-5959 - LDEV-5914 (Bug, fixed in 7.1.0.8): move compress/extract functions and tgz and tar resource provider to the compress extension — https://luceeserver.atlassian.net/browse/LDEV-5914 - LDEV-5825 (Task, fixed in 7.1.0.4): Move SMTP functionality to extension — https://luceeserver.atlassian.net/browse/LDEV-5825 - LDEV-6045 (Enhancement, fixed in 7.1.0.2): add maven support for extension tags and functions — https://luceeserver.atlassian.net/browse/LDEV-6045 - LDEV-5352 (Bug, fixed in 7.0.6.5): compiler error: Type lucee/runtime/type/Closure not present — https://luceeserver.atlassian.net/browse/LDEV-5352 - LDEV-6453 (Bug, fixed in 7.0.6.4): Request-timeout enforcement interrupts healthy short requests on AWS Lambda — https://luceeserver.atlassian.net/browse/LDEV-6453 - LDEV-4867 (Bug, fixed in 7.0.6.2): Query param parsing removes comments from SQL, making them not visible in SQL monitoring tools — https://luceeserver.atlassian.net/browse/LDEV-4867
| Ticket | Type | Summary | Fixed in |
|---|---|---|---|
| LDEV-6430 | Bug | LogUtil.doesDebug returns true at log level INFO | 7.1.0.200 |
| LDEV-6424 | Enhancement | querySetCell: skip type re-detection when value matches column type | 7.1.0.199 |
| LDEV-6423 | Bug | QueryColumnImpl.getType() acquires per-column monitor on every call — contention on shared queries | 7.1.0.198 |
| LDEV-6422 | Enhancement | Suppress fillInStackTrace() on lucee.runtime.exp.Abort — (content/location/abort) | 7.1.0.197 |
| LDEV-6421 | Enhancement | CharBuffer.clear() unnecessary realloc — reuse existing buffer, when bufferOutput enabled | 7.1.0.195 |
| LDEV-6420 | Enhancement | Reduce request throttling overhead, better visibility and full bypass | 7.1.0.194 |
| LDEV-6419 | Enhancement | ConfigImpl.getApplicationPageSource: drop per-request toLowerCase from cache key | 7.1.0.193 |
| LDEV-6418 | Enhancement | TagHandlerPool: cache Class.getName() per Class via ClassValue to avoid per-request String allocation | 7.1.0.191 |
| LDEV-6382 | Enhancement | PageSourcePool: default to strong-ref, allow disable via sysprop / env var | 7.1.0.190 |
| LDEV-6417 | Enhancement | Avoid allocating an unused Thread per request in CFMLEngineImpl._service | 7.1.0.188 |
| LDEV-6416 | Enhancement | Avoid per-request File.exists() on Application.cfc cache hit in MixedAppListener | 7.1.0.186 |
| LDEV-6415 | Enhancement | Tune Felix resolver parallelism — use single thread for faster startup and less contention | 7.1.0.185 |
| LDEV-6413 | Task | Prefer Maven over OSGi when extension class definitions specify both endpoints | 7.1.0.184 |
| LDEV-6412 | Bug | sessionRotate() loses CSRF tokens when sessionStorage is a cache or datasource | 7.1.0.183 |
| LDEV-6410 | Enhancement | IOUtil ThreadLocal buffer pools cause allocation explosion under virtual threads | 7.1.0.182 |
| LDEV-6409 | Enhancement | Avoid closed servlet input stream exceptions when snapshotting request body for orphan threads | 7.1.0.181 |
| LDEV-6349 | Enhancement | MethodInstance constructor allocates discarded NoSuchMethodException on every missing-method probe | 7.1.0.180 |
| LDEV-6406 | Enhancement | Downgrade CFNE log level to debug | 7.1.0.179 |
| LDEV-6317 | Enhancement | Replace deprecated REPOSITORY_SONATYPE default with Google Cloud Maven Central mirror | 7.1.0.178 |
| LDEV-6395 | Bug | Parallel arrayMap/each/filter/some/every doesn't drain futures on exception, causing CME race under virtual threads | 7.1.0.177 |
| LDEV-3367 | Bug | java.util.ConcurrentModificationException - JSONConverter | 7.1.0.176 |
| LDEV-6397 | Enhancement | Always purge cfclasses on core upgrade | 7.1.0.175 |
| LDEV-6396 | Bug | Parallel BIFs ignore maxThreads cap under virtual threads on Java 25+ | 7.1.0.173 |
| LDEV-4745 | Bug | PageSourceImpl: reloads source when source not changed and exists in class loader | 7.1.0.172 |
| LDEV-6392 | Enhancement | Preserve parent include path stack on cloned PageContext | 7.1.0.171 |
| LDEV-6394 | Enhancement | cfthread spawned inside parallel arrayMap/each/filter closures intermittently lost from thread registry | 7.1.0.170 |
| LDEV-6391 | Enhancement | Lazy-resolve cfclocation in ORMConfigurationImpl to avoid per-request File.isDirectory cost | 7.1.0.169 |
| LDEV-6115 | Enhancement | Allow virtual threads on Java 25+ (synchronized pinning resolved) - Lucee 7.1 | 7.1.0.168 |
| LDEV-5967 | Bug | Improve Datasource Pool Lifecycle Management | 7.1.0.167 |
| LDEV-6141 | Enhancement | implement cfldap clientcert / clientcertpassword attributes | 7.1.0.165 |
| LDEV-6290 | Bug | Diagnostic logging for JEE session lifecycle problems | 7.1.0.164 |
| LDEV-970 | Bug | Cookies aren't cased when sent to browser | 7.1.0.163 |
| LDEV-6384 | Enhancement | Reduce per-cfquery overhead on pool borrow path — gate debug logging + tighten ConfigImpl DCL fields | 7.1.0.160 |
| LDEV-6383 | Bug | JDBC driver first-touch race in DataSourceSupport.initialize can fire bogus "OSGi Bundle not available locally" | 7.1.0.158 |
| LDEV-6341 | Enhancement | Restore thread CCL on ThreadLocalConfig / ThreadLocalPageContext release | 7.1.0.157 |
| LDEV-6381 | Enhancement | Reduce IOUtil allocation in shared paths | 7.1.0.155 |
| LDEV-6380 | Enhancement | Avoid IO buffer allocation for empty cfthread results | 7.1.0.154 |
| LDEV-6376 | Enhancement | Cache Application.cfc `this.mappings` resolution to eliminate per-request filesystem checks | 7.1.0.153 |
| LDEV-6371 | Bug | AI verify/ping fails: Lucee config keys leaked into provider API JSON body | 7.1.0.150 |
| LDEV-6367 | Enhancement | Reduce byte[] allocation in IOUtil.toBytes via size-known callers | 7.1.0.149 |
| LDEV-6366 | Enhancement | Reuse a single static Tika instance in IOUtil.getMimeType | 7.1.0.147 |
| LDEV-6363 | Bug | XMLUtil.getProperty(defaultValue) allocates discarded SAXException on every missing-child probe | 7.1.0.146 |
| LDEV-6347 | Enhancement | Defer ParentException creation in ChildThreadImpl (cfthread spawn path) | 7.1.0.144 |
| LDEV-6348 | Bug | admin.restart() doesn't stop PageSourcePoolWatcher threads, leaking old-engine classloaders per .lco update Type: Bug | 7.1.0.143 |
| LDEV-6358 | Enhancement | Replace per-mapping inspect AUTO polling with inspectTemplates() ticker | 7.1.0.142 |
| LDEV-6352 | Bug | flushIfNecessary() processes RPC PhysicalClassLoaders that have no rename pressure | 7.1.0.141 |
| LDEV-5407 | Bug | LUCEE_INSPECT_TEMPLATE setting is ignored | 7.1.0.140 |
| LDEV-5866 | Enhancement | Improve ScopeFactory + PC pool pooling efficiency | 7.1.0.139 |
| LDEV-6344 | Enhancement | Add DebuggerListener.getApiVersion() + DebuggerRegistry.register() returning rejection reason | 7.1.0.136 |
| LDEV-6338 | Enhancement | Debugger: Delay Priority downgrade during debugger breakpoint pauses | 7.1.0.135 |
| LDEV-6337 | Bug | Debugger: variables scope wrong for top-level pages and custom-tag bodies | 7.1.0.134 |
| LDEV-6336 | Enhancement | Add onRequestEnd(PageContext) hook to DebuggerListener | 7.1.0.132 |
| LDEV-6332 | Enhancement | purgeExpiredSessions: force flag should also handle cache-backed sessions | 7.1.0.131 |
| LDEV-6328 | Task | Add LUCEE_EXTENSIONS_CONFIG_ONLY Mode for Extension Management | 7.1.0.128 |
| LDEV-6321 | Bug | POM resolver fails on dangling property references in `<dependencyManagement>` | 7.1.0.127 |
| LDEV-6322 | Enhancement | Maven resolver should route snapshots to snapshot-capable repositories only | 7.1.0.126 |
| LDEV-6320 | Bug | Parallel Maven dependency resolution triggers rate limiting | 7.1.0.125 |
| LDEV-6323 | Bug | Cannot open Memcached settings in Lucee Admin | 7.1.0.124 |
| LDEV-6324 | Enhancement | cacheCount() should return -1 when enumeration is unsupported (i.e. memcached) | 7.1.0.123 |
| LDEV-6316 | Bug | Maven resolver discards HTTP status code on download failure, masking 429 rate-limits and transient errors | 7.1.0.122 |
| LDEV-6302 | Bug | toSorted() required a sort direction | 7.1.0.121 |
| LDEV-5893 | Enhancement | STARTTLS re-enables deprecated TLS protocols that the JDK has disabled | 7.1.0.120 |
| LDEV-6308 | Enhancement | streamline native qoq | 7.1.0.119 |
| LDEV-6311 | Bug | QoQ HSQLDB engine ignores ORDER BY direction for null cells, diverging from native engine and ACF | 7.1.0.118 |
| LDEV-6310 | Bug | QoQ regression: stored-null column cells lose null in expressions under FNS=off | 7.1.0.117 |
| LDEV-6306 | Bug | REST: overlapping restpath on multiple CFCs — first-match wins instead of best/literal match | 7.1.0.116 |
| LDEV-6298 | Enhancement | Component.duplicate() should share static infrastructure with duplicates, not clone it | 7.1.0.115 |
| LDEV-6301 | Bug | Concurrent component loading can fail with "invalid component definition, can't find component" due to non-thread-safe HashMap in ComponentPathCache | 7.1.0.113 |
| LDEV-6296 | Bug | cfquery with matching credentials creates duplicate datasource pool — visible as jmxRegister storms in FusionReactor | 7.1.0.111 |
| LDEV-6294 | Bug | Datasource pool destroys connections silently; `isValid` timeout passed in wrong unit | 7.1.0.110 |
| LDEV-6293 | Bug | getSystemMetrics() collapses multiple datasource pools into a single entry | 7.1.0.109 |
| LDEV-6291 | Bug | DatasourceConnectionImpl.prepareStatement(sql, type, concur) passes resultSetConcurrency as the holdability argument | 7.1.0.108 |
| LDEV-6271 | Bug | Regression: Property default value lost when method shares same name as property (accessors=true) | 7.1.0.106 |
| LDEV-6288 | Enhancement | Restore pre-7.1 struct iteration order and session-deserialisation compatibility via lucee.concurrent.map.impl=legacy | 7.1.0.105 |
| LDEV-6286 | Bug | POM.getInstance unsafe under concurrent transitive-deps resolution | 7.1.0.104 |
| LDEV-6283 | Enhancement | Admin cache form should persist maven coordinates for maven-based cache extensions | 7.1.0.102 |
| LDEV-5956 | Bug | RHExtension instance cache causes "extension file does not exist" error on repeated installs from same source path Description | 7.1.0.102 |
| LDEV-6282 | Bug | Native debugger: uncaught-exception breakpoint stops after frames unwind, scopes uninspectable | 7.1.0.100 |
| LDEV-6281 | Bug | Non-daemon background threads block JVM exit after warmup / embedded use | 7.1.0.99 |
| LDEV-6280 | Enhancement | Add mavenExists, mavenExport, mavenImport | 7.1.0.98 |
| LDEV-6232 | Enhancement | QueryImpl: local query fast path for currentRow — single int field, no ConcurrentHashMap | 7.1.0.97 |
| LDEV-6272 | Bug | Regression: Components without accessors="true" get spurious accessor UDFs generated | 7.1.0.96 |
| LDEV-6274 | Bug | Debugger: breakpoints inside cfinclude from a UDF never fire on 7.1 native | 7.1.0.95 |
| LDEV-6270 | Enhancement | Add support for Maven-based cache provider extensions | 7.1.0.93 |
| LDEV-6269 | Enhancement | Update Admin ORM to recommend Lucee Hibernate Ext again | 7.1.0.92 |
| LDEV-5953 | Enhancement | Use ThreadLocal buffer pools for IOUtil | 7.1.0.90 |
| LDEV-6256 | Bug | Function-level aliases broken for multi-value and missing aliasOf metadata | 7.1.0.89 |
| LDEV-6254 | Enhancement | Cache DocumentBuilderFactory for non-validating XML parsing | 7.1.0.87 |
| LDEV-6252 | Enhancement | Optimise CFC property access hot path — ComponentScopeShadow and ConcurrentHashMapNullSupport | 7.1.0.86 |
| LDEV-6249 | Bug | XML struct classes use reflection that breaks on JDK 17+ | 7.1.0.85 |
| LDEV-6237 | Enhancement | Improve error message when member function call resolves to a scope instead of a variable | 7.1.0.84 |
| LDEV-6244 | Bug | GetApplicationSettings uses exception flow control for missing extensions | 7.1.0.83 |
| LDEV-6236 | Bug | Optimise generated accessor UDFs — skip duplication and bypass UDF dispatch | 7.1.0.80 |
| LDEV-6235 | Bug | ConfigImpl.getORMEngine() race condition | 7.1.0.79 |
| LDEV-6203 | Bug | ORM transaction connections force SERIALIZABLE isolation instead of inheriting database default | 7.1.0.78 |
| LDEV-6231 | Enhancement | QueryImpl/QoQ: eliminate redundant column lookups in clone, union, and ResultSet paths | 7.1.0.76 |
| LDEV-6230 | Enhancement | Faster query column access: use hash map lookup using existing Key h64 hash | 7.1.0.75 |
| LDEV-6229 | Bug | runAsync() leaks a thread per executor per chained call | 7.1.0.74 |
| LDEV-6228 | Enhancement | Remove dead slotForMap/sfm from KeyImpl | 7.1.0.73 |
| LDEV-6204 | Enhancement | add getTransactionIsolation() BIF | 7.1.0.70 |
| LDEV-6086 | Bug | InternalRequest swallows RequestTimeoutException exceptions | 7.1.0.63 |
| LDEV-6154 | Bug | QoQ string concatenation with || operator excludes NULL and empty string rows | 7.1.0.60 |
| LDEV-4183 | Enhancement | Add Oracle's || operator for string concat in QoQ | 7.1.0.60 |
| LDEV-4182 | Enhancement | Allow QoQ concat() to accept unlimited parameters | 7.1.0.60 |
| LDEV-6153 | Bug | QoQ native engine sqrt() function broken | 7.1.0.59 |
| LDEV-6151 | Incompatibility | QoQ case sensitivity & dbtype struct options | 7.1.0.58 |
| LDEV-6152 | Enhancement | HSQLDB QoQ column optimization broken — == instead of .equals() causes silent fallback to loading all columns | 7.1.0.57 |
| LDEV-6140 | Enhancement | MethodTooLargeException should include CFC source path, function name and bytecode size | 7.1.0.56 |
| LDEV-1402 | Enhancement | Enable Line Debuggers for Lucee | 7.1.0.45 |
| LDEV-3335 | Bug | Store component properties and accessor UDFs statically per class | 7.1.0.44 |
| LDEV-6092 | Enhancement | Update to ASM 9.9.1 - Java 26 support | 7.1.0.35 |
| LDEV-6077 | Enhancement | Defer ParentException Creation Overhead for Every Each/Map/Filter Closure Function Call | 7.1.0.33 |
| LDEV-6076 | Enhancement | Eliminate Integer autoboxing in SourceCode constructor | 7.1.0.32 |
| LDEV-5992 | Enhancement | use a pool for qoq hsqldb queries | 7.1.0.29 |
| LDEV-6062 | Enhancement | Avoid exception-as-flow-control in QoQ | 7.1.0.28 |
| LDEV-6059 | Bug | avoid using NoSuchElementException exception-as-flow-control | 7.1.0.27 |
| LDEV-6060 | Bug | CFMLExpressionInterpreter.identifier() unnecessarily looks up PageSource for dot notation setting | 7.1.0.26 |
| LDEV-5832 | Enhancement | improve parser compiler performance | 7.1.0.24 |
| LDEV-5920 | Enhancement | improve performance loading resultsets from jdbc | 7.1.0.23 |
| LDEV-6054 | Bug | Extension Startup-hook with maven coordinates not recognized as valid class definition | 7.1.0.22 |
| LDEV-6044 | Enhancement | Refactor OSGi system packages configuration to use Felix JPMS auto-detection | 7.1.0.21 |
| LDEV-5923 | Enhancement | ThreadLocal PageContext registration optimization | 7.1.0.19 |
| LDEV-5908 | Enhancement | Switch to java ConcurrentHashMap | 7.1.0.17 |
| LDEV-6010 | Task | Add Ability to Flush Cache for Specific Query and/or Function | 7.1.0.11 |
| LDEV-6002 | Enhancement | Remove old JTDS extension from FAT JAR | 7.1.0.10 |
| LDEV-5959 | Enhancement | restore basic extract/compress BIFs for zip/gzip | 7.1.0.9 |
| LDEV-5914 | Bug | move compress/extract functions and tgz and tar resource provider to the compress extension | 7.1.0.8 |
| LDEV-5825 | Task | Move SMTP functionality to extension | 7.1.0.4 |
| LDEV-6045 | Enhancement | add maven support for extension tags and functions | 7.1.0.2 |
| LDEV-5352 | Bug | compiler error: Type lucee/runtime/type/Closure not present | 7.0.6.5 |
| LDEV-6453 | Bug | Request-timeout enforcement interrupts healthy short requests on AWS Lambda | 7.0.6.4 |
| LDEV-4867 | Bug | Query param parsing removes comments from SQL, making them not visible in SQL monitoring tools | 7.0.6.2 |
Sourced from the Lucee issue tracker (LDEV).