Results/retrospective for the April 2017 sprint.
Sprint Retrospective
The April 2017 sprint ended on Wednesday, April 26, producing the Lucee 5.1.4 release (5.1.4.19). And this month we’re including a bit of a surprise–as I hinted at in a tweet earlier this week, we’re also shipping a new minor version this month, Lucee 5.2 (5.2.1.9). You’ll have a choice to upgrade to 5.1.4 if you just want the latest fixes, or to 5.2 if you want the new functionality included in the new minor version.
Here are the summary details for the April sprint (these bullet points only apply to the 5.1.4 release; see below for more info about 5.2):
- Original sprint plan: 13 tickets
- Tickets added after start of sprint: 5
- Tickets not completed: 3 (259 needs more development time, and 783 and 1197 are in need of more ticket detail in order to resolve; all 3 have been moved to the May sprint)
- Tickets completed: 15
- Sprint start: April 7
- Sprint end: April 26
Next, while we haven’t decided upon a final format/process for formal release notes, we’re nonetheless including some basic release notes this month. Here they are for 5.1.4:
Lucee 5.1.4 Release Notes
Request Timeout
Request timeout handling was rewritten pretty significantly in order to address Java 8 changes. Before this fix (LDEV-1270) it was possible that a thread killed by a request timeout could lead to what we call “zombie threads"–a thread no longer functioning but still seen by the servlet engine as valid.
Startup Performance
We improved the startup performance of Lucee, specially performance on a first start. This is an ongoing tuning process that will continue with future versions. We also added the ability for Lucee to log, in detail, precisely where Lucee spends time during startup, because this will often vary in different environments.
Full Completed Ticket List (w/ comments)
LDEV-1270
Request timeout lead to zombie threads in servlet engine.
LDEV-1268
Admin errors when bad update URL saved.
LDEV-1257
Startup of the server is not consistent.
LDEV-1253
Lucee start up to slow.
LDEV-1243
REST exceptions not logged.
LDEV-1231
Calling static function will suppress output after called.
LDEV-1227
Static methods in super components can’t be called within a component.
LDEV-1225
Removing a log entry needs Lucee restart.
LDEV-1219
Orientation attribute using landscape not working in cfdocument pdf.
LDEV-1201
Elvis not working on key returned by function call.
LDEV-1182
DateDiff months returns one month less than it should.
LDEV-1038
tag throwing an error when action is set to “protect.”
LDEV-1010
Having EHCache Defined Slows the Process of stopping the service in Windows.
LDEV-802
Inconsistent responses from CFHTTP.
LDEV-1210
Memcached extension regression in Lucee 5 (throws error).
For reference, here’s the full ticket list from the April sprint.
Lucee 5.2 Release Notes
Whereas releases (noted by a 3-part version number) are intended to deliver only bug fixes or security patches, new minor versions of Lucee (2-part version number) are intended to deliver new (or enhanced) features. These improvements are drawn from the Lucee product roadmap (which we’ll share more about in a later post), based on both internal discussion amongst Lucee developers, the board, and LAS members, and of course ultimately are driven by the worldwide community of Lucee users/developers. Here’s more information about what’s included in Lucee 5.2.
Documentation
These improvements are the first steps in ongoing enhancements to Lucee documentation. Under /lucee/doc.cfm you will now see the reference for all tags, functions and components in Lucee CFML. This also includes tags, functions and components provided by extensions, or added manually to Lucee. You can also show your own components there (we will soon provide detailed information on how you can do that):
Administrator Mail Servers
When you define a mail server in the Lucee Administrator you can now choose from predefined providers instead of always having to provide all the details:
At the moment, we support the following providers:
- GMail (Google)
- GMX
- iCloud Mail (me.com)
- Outlook Mail (Hotmail)
- Yahoo! Mail
In addition, this list can easily be extended by adding a template for your provider (via a component).
CFDump Tag
The <cfdump>
tag now produces far less output than before. Instead of generating a lot of HTML for all the data in a dump, the tag now outputs the data itself as JSON (string), and generates the output with Javascript. Note: Output type “simple” still generates full HTML, as before.
Query Tags
The <cfquery>
tag, the function “QueryExecute,” and the component org.lucee.cfml.Query all now support a new argument/attribute “tags” that allows you to define an array of tags, and this array can be used to tag query objects cached with help of the attribute/argument “cachedWithin." Queries can then easily can be flushed using the new argument “tags” in the function “CacheClear.”
(More general support for tags with caches will follow in the future.)
Example:
<cfquery tags=”#[‘person’]#” cachedwithin=”request”>
select * from person
</cfquery>
<cfdump eval=”person”>
...
<cfquery tags=”#[‘person’]#” cachedwithin=”request”>
insert into person(last,first)
values(‘Sorglos’,’Susi’)
</cfquery>
<cfset cacheClear([‘person’],’myQueryCache’)>
Administrator.cfc
The component org.lucee.cfml.Administrator now provides all actions (167) formerly only supported by the <cfadmin>
tag. This includes documentation for all possible actions, which can now be referenced in the new documentation area (see above). Here’s a detailed post from Pothy on the dev team about this new capability.
FileTouch Function
The new function FileTouch adds the same functionality you already have with <cffile action=”touch”>
, but implemented as a function. This means that if a file path provided to the function does not exist, it is created (empty); if it already exists, then the “lastModified” property is updated.
XML Member Functions
Lucee 5.2 adds support for XML member functions.
Example:
xml=xmlNew(strXML);
// Before you could only do this
dump(XmlGetNodeType(xml));
// Now you can do
dump(xml.getNodeType());
Session/Client Storage
The session/client storage definition In the Lucee Administrator is no longer a text field, where you have to know the possible valid values. Now you can choose the possible values from a drop down:
Catch
The catch scope provided inside a catch block (<cfcatch>
or catch{}
) now provides information about the cause of an exception, if there is any. Exceptions thrown by Java often have a root cause, and typically only the cause stated in the exception delivers the info necessary to address the problem that caused the exception.
Query Cache
Lucee 5.2 features performance improvements when using query caching.
Both 5.1.4 and 5.2 are available on the main Lucee downloads page and on Docker Hub. The May sprint plan will be out later this week. Thanks for listening. Holler with questions/comments!