Adobe

Just tried to install multiple Cold Fusion 2023 instances programmatically by a coldfusion script and the setup failed after a few seconds with the following error message:

The rootdir method was not found.Either there are no methods with the specified method name and argument types or the rootdir method is overloaded with argument types that ColdFusion cannot decipher reliably. ColdFusion found 0 methods that match the provided arguments. If this is a Java object and you verified that the method exists, use the javacast function to reduce ambiguity. The specific sequence of files included or processed is: C:\ColdFusion2023\cfusion\wwwroot\CreateInstances.cfm, line: 95"

I received a hotfix for "serverinstance.cfc" from Adobe Support.

  • 21.07.2023: Hotfix is available via support. Should be fixed in Updater 5+
  • 11.07.2023: Opened case with support "CF2023: "The rootdir method was not found" when creating multiple instances".

Not much has changed since ColdFusion 10: How to configure data sources with Microsoft JDBC Driver 4.0 for SQL Server, but a small detail is now required to connect to your existing MsSQL Servers.

This article explains how you are able to use the Microsoft JDBC Driver for SQL Server under ColdFusion. The background why you should do this is the bug Macromedia database drivers leaking memory. This is a very serious bug as you can see in the linked article. Your servers will be very unstable if you run with the Adobe build in drivers for Microsoft SQL. Until today we have not found any single issue at all with the replaced drivers. It is really a drop in replacement without any side effect.

Your CFHTTP requests may fail with an error I/O Exception: Received fatal alert: handshake_failure.  the reason could be a try to connect to a web server that has very high SSL security levels enabled and is no longer compatible with older Java 8 versions.

If you are running ColdFusion on Java < 8.0.161 and you add -Djavax.net.debug=ssl,handshake,verbose to C:\ColdFusion2016\[cfusion]\bin\jvm.config you will see the below info message in coldfusion-out.log:

In November 2016 we became aware that Adobe ColdFusion 2016 and earlier versions have issues with sending emails to IDN domains. Something that is possible for a very long time and becomes more and more common - at least in countries like Germany that have special chars. The CFMAIL errors with

The value of the attribute to, which is currently foo@bäüöß.com, is invalid.

coldfusion.tagext.InvalidTagAttributeException: Attribute validation error for tag CFMAIL. at coldfusion.tagext.net.MailTag.validate(MailTag.java:743) at coldfusion.tagext.net.MailTag.processAttributes(MailTag.java:846)
and compared to this failure the validation with isValid('email', local.email) says the email address is valid.

You may be in the situation that ColdFusion services are not starting up and a manual startup yields no useful information, too. It simply failed after it tries to startup the services for a very long time. If services are starting up it may takes an extreme long time to start.

Start-Service : Failed to start service 'ColdFusion 10 Application Server cfusion (ColdFusion 10 Application Server cfusion)'.
At line:1 char:1
+ Start-Service Cold*
+ ~~~~~~~~~~~~~~~~~~~
   + CategoryInfo  : OpenError: (System.ServiceProcess.ServiceController:ServiceController) [Start-Service],
  ServiceCommandException
   + FullyQualifiedErrorId : StartServiceFailed,Microsoft.PowerShell.Commands.StartServiceCommand

Background:

There are for sure more possible situation that may cause a ColdFusion startup failure, but if you have not changed anything and only rebooted/restarted your server/coldfusion after some OS updates and ColdFusion is now failing to start without having anything changed in ColdFusion you should check this issue very first. From my point of view this issue here is the most common issue that everyone will experience sooner or later.

Over the course of several months we identified some date/time issues that also exist in CF10 and CF11. In CF10 and CF11 there are still more inconsistency issues like in CF2016. Some of the date/time formatter and parser issues have been fixed in CF2016 RTM, but it was still a mess and the functions are not behaving as expected in many cases. We are still in discussion about incorrect IsNumericDate() results not listed below. Please also see ColdFusion 2016: Upcoming new IsDateObject() function that was a result of the issues we faced with below bugs.

Notable changes are:

The functions IsDate() / LSIsDate()ParseDateTime()LSIsDate() require that you provide a string to these functions. However these functions do not throw an exception if you provide a date/time object. Not only this - they return inconsistent results if you use an object - often it works, but not always. So you may feel like the function allows an object as param and you learn later the hard way that your code is not always behaving properly. The bad about this issue is that there exists no function that allows you to check if you have a valid ColdFusion date/time object or just a date/time string.

If you run a CFOUTPUT with attributecollection you will get an error cannot find encodefor key in structure error.

Fails:

<cfset result = queryNew("id,name","Integer,Varchar",[{id=1,name="One"},{id=2,name="Two"},{id=3,name="Three"}]) />
<cfset params={query:'result'} />
 
<!--- this works --->
<cfoutput query="#params.query#">
#id# - #name#
</cfoutput>
 
<!--- this don't work --->
<cfoutput attributecollection="#params#">
#id# - #name#
</cfoutput>

If you have some older code and you run ColdFusion 2016 and you use CFLOOP with a list and you have CFOUTPUT placed outside the loop than the code fails. I think this is very common.

Fails:

<cfoutput>
<cfloop list="test1,test2,test3,test4,test5" index="index" item="item">
	#invoke('mycomp', 'myFunction', {index=index,item=item})#<br />
</cfloop>
</cfoutput>

Workaround:

<cfloop list="test1,test2,test3,test4,test5" index="index" item="item">
	<cfoutput>#invoke('mycomp', 'myFunction', {index=index,item=item})#</cfoutput><br />
</cfloop>

Adobe has released ColdFusion 2016 Final some time ago. Well we took some time to give it a try and since 3 days we do not have so much fun.

The most heavy bug I can share is that CF 2016 is failing to execute SQL statements that has comments inside. This happens only with -- comments. I'm not sure if this is limited to Microsoft SQL. It has for sure nothing to do with the Microsoft JDBC driver you are using. See Adobe bugtracker ColdFusion 2016 - Bug 4126398: SQL comments inside CFQuery are not ignored.

Broken:

-- Using a comment after the code on a line.
USE Northwind
GO
UPDATE Products
SET UnitPrice = UnitPrice * .9 -- Try to build market share.
GO

Workaround:

USE Northwind
GO
SELECT * FROM Employees
/* The
GO in this comment causes it to be broken in half */
SELECT * FROM Products
GO

Solution: You can change all your code... (just kidding) or ask support. They have a hotfix with file name chf20160001.jar that works and will be integrated in Updater 1.