Announcing Lucee (final)

Happy New Year Lucites! (Hey, what’s the over/under bet on how late is too late in the year to say Happy New Year? I think I just won the over!) Here’s hoping 2020 sees much success for you, in particular with regard to your Lucee endeavors.

Regarding that last bit, today we’re announcing a final release of Lucee 5.3.4 ( As I explained in December, we decided to extend this version to a second release candidate phase. And, while there were no regressions in per se, we did struggle, during the combined RC2 and January-December sprint, with a collection of challenging bugs related to low-level problems like classloading. Thus, in order to make 5.3.4 as helpful to as large a user base as possible, we made the decision to include a patch in that eliminates those problems for nearly everyone. This is, of course, in addition to the large batch of tickets addressed in 5.3.4 overall.

Here’s the list of tickets covered by

Ticket - Summary
LDEV-2677 add flexibility how template classes get updated
LDEV-2608 Regression in struct implementation causing stack overflow
LDEV-2601 javasettings fails with invalid OSGi Bundles
LDEV-2593 two problem upgrading from Lucee to Lucee version
LDEV-2565 csrfGenerateToken() and csrfVerifyToken() with no arguments throw a null pointer exception.
LDEV-2536 Regression w/CFML Sessions: Session scope does not support CSRF Tokens
LDEV-2527 Concurrency: reflection metho d lookups using single sychronous map holding locks under concurrent load
LDEV-2517 unsupported third party extensions warning shown for lucee extensions when offline
LDEV-2513 Regression: can no longer add extension provider in admin
LDEV-2508 unable to use ‘services:update’ UI to downgrade from to, at least when was the original installation
LDEV-2503 Missing image file breaks admin-extensions-applications page
LDEV-2488 java.util.ConcurrentModificationException in StructClear()
LDEV-2479 lucee.runtime.exp.NativeException: java.lang.StackOverflowError
LDEV-2474 CFLocation in Filling Up Error Logs
LDEV-2465 change log level of some scheduler log to debug
LDEV-2464 datasource log4j appender “insert” no columnlist
LDEV-2460 Initial Password Setup Not Working
LDEV-2437 log spam “ is used as DocumentBuilderFactory”
LDEV-2433 Admin blows up when an extension has an invalid icon image and makes ALL extensions unusable
LDEV-2429 Schedule task - Valid task becomes invalid
LDEV-2405 Flying Saucer PDF extension leaks debugging lines out to the console
LDEV-2401 LSParseNumber thread unsafe?
LDEV-2385 make all uses of ReferenceMap thread safe
LDEV-2349 FileCopy- Destination file losses the original access mode
LDEV-2328 Regression: Can’t resize image proportionally in ImageResize
LDEV-2320 Zipping empty folder errors (Regression)
LDEV-2317 REGRESSION - java.lang.NoClassDefFoundError - Solr 8
LDEV-2310 Valid base64 string doesn’t convert into image
LDEV-2307 Downgrade version(base) doesn’t exist after upgrade into latest version
LDEV-2304 SerializeJSON not preserving case on query
LDEV-2301 server update crashes when lucee can’t connect to internet or lucee webservices down
LDEV-2290 application log has WARN entries when LOG level set to ERROR
LDEV-2274 undefined tooltips for metrics graphs
LDEV-2273 Replace by struct multiplies when value contains key
LDEV-2270 sameFormFieldsAsArray converts all fields to arrays
LDEV-2212 <cfapplication pdf="#{type:“classic”}#"> throws an error
LDEV-2163 Lucee cacerts file is old
LDEV-2150 cfthread object empty inside of a thread
LDEV-2128 Query of Queries UNION returns incorrect results with cfqueryparam
LDEV-2116 executable bit is lost on files when using directoryCopy() on binaries
LDEV-2113 xmlValidate Cannot find the declaration of element
LDEV-2108 SerializeJSON argument error even when supplied argument is a boolean
LDEV-2097 CFQuery Lazy=“true”, i.e. SimpleQuery is able to consume infinite heap memory during request
LDEV-2096 ArrayNew is not default synchronized=true and missing typed arrays documentation
LDEV-2091 CFThread after join logs implicit error that is not fixable
LDEV-2085 add possibility to define a directory containing OSGi bundles with this.javaSettings
LDEV-2035 Event Gateway - Add a Gateway Type to Handle Asynchronous events through CFCs
LDEV-1939 Nested cftry in cfcatch duplicates error logs
LDEV-1933 CFMAIL can’t connect to TLSv1.2 smtp server
LDEV-1850 PDF: cfpdf - remove password from pdf-file

Ticket 2677 summarizes the classloading/re-loading problem I mentioned, so if you were affected by that, you can review the comments in that ticket regarding the collection of interrelated tickets/problems that are involved.

Next up for the dev team is to close the December-January sprint, which will produce 5.3.5-RC. We’re aiming to do that later this week. Then, we’ll be posting again later in February about the 2020 development schedule, which, as I’ve hinted at in the past, will entail shorter, more targeted sprints, that will allow us to iterate over releases more quickly, and with fewer problems. More on that soon, and thanks as always for listening!


Yes ! You’ve fixed createObject(‘java’,…) !

We can start looking at moving off older releases now !


The new release has been added to ForgeBox for CommandBox servers to use.

server start cfengine=lucee@5.3.4

Thanks a lot for all the hard work! Looking forward to doing the upgrade :star_struck:

1 Like

Keep Lucee going!

1 Like

Any date for the (windows) installer?

Hi @janderegg. They’re being built right now, so they should be up later today, or possibly by tomorrow. Stay tuned.

great, it’s there - thanks!

The current stable release seems to have been updated to, with this log-filler bug being the main target:

It’s work noting that many people are having troubles with and Java 1.8.0 u242

Basically, I’d be avoiding using that java version unless you want to waste time battling bugs and strange problems with Lucee, H/T @bdw429s

some more info here

Hey @Zackster. Yes, this was discussed in our weekly standup yesterday. I think it’s actually fixed in the .80 hotfix release (more on that here in the forum in a bit). Pothys has it marked as tested and awaiting approval, so keep an eye on the ticket.

Re: LDEV-2304, the new key case behavior does not match ACF. I had to revert back to because a bunch of my applications broke with .77. The “Key case” option under Settings - Language/Compiler doesn’t appear to enforce upper case key names when using serializeJSON on results of an SQL query. This is important for consuming the JSON using case-sensitive Javascript.

Hi @hemi345,

according to this default behaviour has changed since CF11. Did you try setting enabling case preservation of struct keys at the application level? To do it modify the application.cfc file by setting:

<cfset this.serialization.preservecaseforstructkey = false />

Yeah… seems to be a bug, at least there is a strange behaviour when setting the following values:

if settings in server-admin/web-admin are:
Key case: Convert to upper case (CFML Default)

and there are no settings at application level (application.cfc), query result structs are lower case, other structs are upper case.

But if application.cfc has the setting:
this.serialization.preservecaseforstructkey = false
query structs and structs are all set as upper case.

however… setting application.cfc:
this.serialization.preservecaseforstructkey = true
has the same behaviour: all structs in upper case

Setting <cfprocessingdirective preserveCase="false"> behaves the exact same way as the admin-server/admin-web settings do (query results lower case, other structs upper case)

I have to correct myself… From there is a different setting for enabling/disabling case preservation of query columns. For case preservation of query columns use the following in your application.cfc:
this.serialization.preserveCaseForQueryColumn = false;

Hi andreas, yeah, I noticed later the this.serialization.preserveCaseForQueryColumn = false; in the comments on LDEV-2304 and added that to my application.cfc and that took care of the issue. I understand now that Lucee’s implementation of Key Case admin setting only specifically converts user-defined structs but doesn’t affect structs created from query results. This conflicts with how ACF handles it:
illustrates how the behavior with Lucee .77 isn’t consistent.

1 Like

Anyone having troubles with this release, please try the which has a number of very important fixes, I’m guessing it’s very likely to become a RC or Release quite soon.

You’re going to be way better off testing against that version than, which has some nasty problems.

The latest SNAPSHOT is also quite stable and includes lots of additional improvements. which has a number of very important fixes, I’m guessing it’s very likely to become a RC or Release quite soon.

@Zackster Actually, I asked internally this week about whether there would be another 5.3.4 release and was told no. It seems all efforts will be put into the soon-to-come 5.3.5 release. So unfortunately, it seems 5.3.4 will be left with some nasty regressions on it. Two of the biggest I’m aware of

  • Super slow compilation - fixed in the latest 5.3.4 snapshot
  • ORM classloading errors - ONLY fixed in 5.3.5 and 5.3.6, not in 5.3.4

This will basically make 5.3.4 unusable for anyone using ORM from what I can see. Personally, I would recommend LAS meges the ORM bug into 5.3.4 and doe one final release just so it’s not left hanging in such a state. (But no one listens to me :slight_smile: )

cc/ @IamSigmund

Have you considered pausing or slowing the release train at all, considering lots of people may be getting or already are ill ?

Which specific bug is this? We’ve been running quite a few ORM apps on in production for several days now and it’s been very stable.

that’s just not good enough, constantly shipping broken releases as stable is bullshit


why? nobody is forcing anyone to update?