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,-zeroand-nginxvariants (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, andcfmailno 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 likeo'reilly@example.comagain and rejects invalid ones likeuser.@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
functionsagain 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.JSONObjectgets 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
cfmailwas 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”. Theorg.lucee.cfml.Mailcomponent 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, everycfmailfailed 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 (
.lcofile 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 likeo'reilly@example.comand accepted invalid ones likeuser.@gmail.com,.foo@gmail.comora..b@gmail.com. This also affectedcfparamand arguments withtype="email". The check now follows the 7.0 rules again: quoted local parts and IPv4 literals likeuser@[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 ).functionsno longer included inherited methods when the child and parent CFC have the same file name (for example twoDefault.cfcin 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).