Lucee 7.1.1.15-RC available for testing

Lucee 7.1.1.15-RC is available for testing. It is a fix release on top of 7.1.0.204 with 12 fixes, including 10 regressions. Six of them are mail problems that came from moving mail into an extension in 7.1. The bundled Mail extension is now 1.1.0.10-RC.

Download: https://download.lucee.org/

  • Docker: lucee/lucee:7.1.1.15-RC, plus the -light, -zero and -nginx variants (Docker Hub)
  • Maven: org.lucee:lucee:7.1.1.15-RC

Overview

  • Mail works again: new mail().send() works again, spooled mail is no longer silently dropped, and cfmail no longer fails with “IMAPProvider not a subtype”. In the admin, the Mail page is back and “Verify” and “Send test mail” really work. An update from 7.0 now installs the Mail extension. The bundled Mail extension is now 1.1.0.10-RC (7.1.0.204 bundled 1.1.0.6).
  • isValid( "email" ) is fixed: it accepts valid addresses like o'reilly@example.com again and rejects invalid ones like user.@gmail.com.
  • No more leaked datasource connections: when resetting a connection at the end of a transaction failed, the connection leaked. It is now invalidated and removed from the pool instead.
  • Component metadata fix: a child component lists its inherited methods in functions again when parent and child have the same file name.
  • Java method and constructor resolution: an exact parameter type match takes priority again, so for example org.json.JSONObject gets the right constructor.
  • SQL comments are kept: comments in your SQL are now sent to the database, so SQL monitoring tools and sqlcommenter see them. A ? or : inside a comment is no longer treated as a query parameter.
  • No more false request timeouts: Lucee could interrupt a healthy, short request as if it had timed out.

Changelog

Regressions fixed

  • ⭐ LDEV-6455: spooled cfmail was silently dropped. Writing the spooler task failed with “NotSerializableException: sun.nio.cs.UTF_8”, and reading it back failed with a ClassNotFoundException. The Mail extension now writes the task correctly, and core loads spool task classes that come from an extension. If a task still can’t be written to disk, it is sent right away and the error is logged, so it is no longer lost.
  • ⭐ LDEV-6484: new mail(...).send() threw “not supported in 7.1 OOTB”. The org.lucee.cfml.Mail component now ships with the Mail extension and works again. (PRs #2829, extension-mail#1)
  • ⭐ LDEV-6485: once anything in the JVM had used javax.mail, every cfmail failed with “jakarta.mail.Provider: com.sun.mail.imap.IMAPProvider not a subtype” until a restart. The Mail extension now uses its own classloader to create the mail session and transport. (PRs #2844, extension-mail#2)
  • ⭐ LDEV-6486: a minor update from 7.0 to 7.1 (.lco file or Admin update) did not install the Mail extension, so every <cfmail> failed with “undefined tag [cfmail]”. On that update Lucee now installs the Mail and FTP extensions, which both moved out of core in 7.1. (PR #2846)
  • ⭐ LDEV-6458: the Mail page was missing from the admin menu, and on that page “Verify” and “Send test mail” did nothing but still reported success. The link is back when the Mail extension is installed. “Verify” now really connects to the mail server and shows the error, and the test mail is actually sent. (PR #2845)
  • ⭐ LDEV-6487: isValid( "email" ) used a temporary pattern on 7.1. It rejected valid addresses like o'reilly@example.com and accepted invalid ones like user.@gmail.com, .foo@gmail.com or a..b@gmail.com. This also affected cfparam and arguments with type="email". The check now follows the 7.0 rules again: quoted local parts and IPv4 literals like user@[192.168.0.1] are accepted, and the length limits are checked on the punycode form of an internationalized domain. (PR #2843, based on #2830 by MitrahSoft)
  • ⭐ LDEV-6129: managed datasource connections could leak when resetting them at the end of a transaction failed. Such a connection is now invalidated and removed from the pool, and an error while releasing connections at the end of a request is logged instead of breaking the cleanup.
  • ⭐ LDEV-6469: GetMetadata( childCfc ).functions no longer included inherited methods when the child and parent CFC have the same file name (for example two Default.cfc in different packages). This broke after LDEV-6056 and now works as before again. (PR #2808)
  • LDEV-5519: Lucee called the wrong constructor on org.json.JSONObject. Exact type matches take priority again when resolving Java constructors, and now also Java methods. (PR #2734)
  • LDEV-5352: fixed the compiler error “Type lucee/runtime/type/Closure not present”, for example with a ternary that returns a closure in one branch and a string in the other.

Bug fixes

  • ⭐ LDEV-6453: request timeout checks could interrupt healthy, short requests (reported on AWS Lambda at about 1 in 1,000 requests). A request is now only checked for a timeout once it is fully set up, and no longer while it is being released.
  • ⭐ LDEV-4867: query param parsing removed comments from the SQL, so they were not visible in SQL monitoring tools. Comments are now kept in the SQL sent to the datasource, ? and : inside comments are not treated as parameters, and comments are only stripped for Query of Queries. This also fixes LDEV-4866, where a / or - at the end of the SQL broke the parsing.

Improvements

  • The bundled Mail extension is now 1.1.0.10-RC (7.1.0.204 bundled 1.1.0.6). It has the mail fixes above.
  • The bundled Image extension is now 3.0.1.1 (7.1.0.204 bundled 3.0.0.9), the same version 7.0 bundles. (PR #2850)
  • The bundled Compress extension is now 2.1.0.3-RC (7.1.0.204 bundled 2.1.0.2-SNAPSHOT), the same version 8.0 bundles. (PR #2850)
  • The bundled FTP extension is now 1.0.0.8-RC (7.1.0.204 bundled 1.0.0.5-RC), the same version 8.0 bundles. (PR #2850)
  • When a required OSGi bundle is not available, the error message now includes the full download URL, so you can fetch the bundle by hand.

Testing

Please give this RC a spin, especially if you send mail (cfmail, spooled mail, new mail(), the mail settings in the admin), update from 7.0 to 7.1, validate email addresses with isValid(), use transactions or ORM, read inherited methods with getMetadata(), create Java objects or call Java methods with arguments, or have comments in your SQL. Report any problems here on the forum or in Jira (LDEV).

3 Likes

This seems to be working - 7.1.1.15 + 1.1.0.11 Mail
We rolled this out to our development servers this week and have started testing and initial feedback has been positive!

The text above mentions 1.1.0.10 being bundled - will that be updated to 11?

1 Like

Thanks for testing, Jim, great to hear it’s working! Yes, the 7.1 branch now bundles Mail 1.1.0.11-RC, so the next 7.1 snapshot and RC ship with it out of the box.

There’s a new candidate: 7.1.1.16-RC. It has one change on top of 7.1.1.15-RC: the bundled Mail extension is now 1.1.0.11-RC, which fixes mail timing out with the spool off (LDEV-6500).

If you send mail with the spool disabled, please give it a try.

2 Likes

for clarification in the Lucee 7.1.1 release all extension within that version will also be releases and no release candidates, but still the exact same code as the candidates.

2 Likes