ColdFusion 9

[FRS-433] Enabling User agent with ColdFusion 9 can result in a Memory Leak


Due to a known issue with the Jrun connector shipped with ColdFusion 8 and 9, you can experience Memory leaks if the User Agent tracking is enabled in FusionReactor.

You can enable the User Agent tracking in both the Request Settings > Request Logging > Log User-Agent and Crash Protection Settings > Email Settings > Show 'User Agent' in Email Notifications

We strongly recommend that you leave this option set to disabled for ColdFusion 8 and ColdFusion 9 servers.

Issue Details

Type: Technote
Issue Number: FRS-433
Components: Request Managment
Environment:
Resolution: Fixed
Last Updated: 06/Jul/17 3:58 PM
Affects Version: 5.0.0
Fixed Version: Pending
Server: ColdFusion 8, ColdFusion 9
Platform:
Related Issues:

[frs-386] Network IO Graph can show negative values if a server enters sleep mode


When a sever falls into sleep mode the Network IO Graph may show negative values. The Network IO Graph is located in FusionReactor under:

  • System Resource > Network Usage

Network IO Graph displaying negative spikes in FusionReactor

Negative values will cause the 1 Hour, 1 Day, and 1 Week graphs to display incorrectly where the negative values occurred.

FusionReactor will be fixed by preventing the negative values in a later release.

Issue Details

Type: Technote
Issue Number: FRS-386
Components: Metrics
Environment:
Resolution: Fixed
Last Updated: 23/Feb/16 3:40 PM
Affects Version: 6.0.0, 6.0.1, 6.0.2, 6.0.5
Fixed Version: 6.x
Server: BlazeDS, ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9, ColdFusion 10, Flex Data Services, GlassFish, JBoss, JBoss 7, Jetty, JRun 4, Open BlueDragon, LiveCycle Data Services, Railo, Resin, ServletExec, Tomcat, Tomcat 7, WebSphere, WebLogic
Platform: Windows XP, Windows 2000, Windows 2003, Linux, MacOS, Solaris, Windows Vista, Windows x64, AIX, Windows 7, Windows 2008
Related Issues:

[frs-325] Tracking CFLock wait time and frequency with FusionReactor


Background

Several CFML applications – especially legacy code-bases – make extensive use of the <cflock /> tag but it's very difficult to get metrics on 1) the frequency of <cflock /> usage and 2) the wait times incurred by <cflock />.

FusionReactor v5.0.8 and above can easily track these times.

Enabling

  • Create a file fusionreactoragent.properties in your FusionReactor instance folder ( eg FusionReactor/instance/<instance name>/fusionreactoragent.properties )
  • Insert the following text into the file:
    com.intergral.fusionreactor.agent.pointcuts.ColdFusionScopedLockPointCut=true
    com.intergral.fusionreactor.agent.pointcuts.ColdFusionNamedLockPointCut=true
    
  • Restart your ColdFusion instance

Viewing data

Charts

  • Login to FusionReactor and click the Transactions icon from the left-menu
  • Choose either Activity Graph or Time Graph
  • At the top-right of the graph is a drop-down (typically reading JDBCRequest). Select CFLockWait::Named or CFLockWait::Scope from the drop-down for named or scoped locks respectively.
    • The Activity Graph shows the number of <cflock /> tags encountered.
    • The Time Graph shows the time waiting to acquire a lock.

Tables

  • Login to FusionReactor and click the Transactions icon from the left-menu
  • Choose either Active or History
  • At the top-right of the graph is a drop-down (typically reading JDBCRequest). Select CFLockWait::Named or CFLockWait::Scope from the drop-down for named or scoped locks respectively.
    • The Active list shows currently active locks
    • The History list shows recently encountered locks

Request Details

After enabling, when you drill-down into a request's details, you will also be able to see the wait time, name/scope and other properties of the lock.

Issue Details

Type: Technote
Issue Number: FRS-325
Components: Metrics
Environment:
Resolution: Fixed
Last Updated: 05/Nov/13 12:51 PM
Affects Version: 5.0.0
Fixed Version: 5.0.0
Server: ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9, ColdFusion 10
Platform:
Related Issues:

[frs-318] How to create separate jvm.config files per instance on JRun


Background

FusionReactor v5 is installed through a JVM argument change. By default, multi-instance ColdFusion installs (on JRun) use the same jvm.config configuration file.

It is necessary to configure separate configuration files per instance before installing FusionReactor v5.

How to configure separate jvm.config files (Windows)

  • Stop all instances
  • If you already have FRv5 installed, use the Instance Manager in FRAM to remove FR from the instance(s) you currently have FR "installed" to
  • Open a command prompt and cd c:JRun4bin
  • For each instance, run jrunsvc -remove "Adobe Coldfusion 9 AS <instance name>"
    • e.g. jrunsvc -remove "Adobe Coldfusion 9 AS cf9-a"
  • For each instance, run copy jvm.config jvm_<instance name>.config
    • e.g. copy jvm.config jvm_cf9-a.config
  • For each instance, run jrunsvc -install <instance name> "Adobe ColdFusion 9 AS <instance name>" "Adobe ColdFusion 9 AS <instance name>" -config jvm_<instance name>.config
    • e.g. jrunsvc -install cf9-a "Adobe ColdFusion 9 AS cf9-a" "Adobe ColdFusion 9 AS cf9-a" -config jvm_cf9-a.config
  • When starting CF from the services panel, it should now use separate configuration files for each instance
  • Use the Instance Manager in FRAM to add FR into each of the instances you want to monitor. As part of the process, make sure you specify the correct service name & configuration file path on each instance
  • Start all instances

Issue Details

Type: Technote
Issue Number: FRS-318
Components: Installer
Environment:
Resolution: Fixed
Last Updated: 24/Jul/13 1:13 PM
Affects Version: 5.0.0
Fixed Version: 5.0.0
Server: ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9, JRun 4
Platform:
Related Issues:

[frs-289] Using the JDBC Wrapper with Apache Derby Database on ColdFusion


This technote is about using the JDBC Driver Wrapper with the Apache Derby database (either in client-server mode, or embedded mode) on Adobe ColdFusion.

Wrapping the datasource

The simplest way to wrap an existing Apache Derby datasource is to use the FusionReactor wrapper tool. This can be downloaded from here.

Use this tool to create a wrapped version of the embedded datasource.

N.b. because the wrapper doesn't initially know about the driver itself, the wrapper tool may raise a Verification Exception:

java.sql.SQLException: FusionReactor JDBC: [6] Wrapper – Driver class org.apache.derby.jdbc.EmbeddedDriver could not be found and loaded.
The root cause was that: java.sql.SQLException: FusionReactor JDBC: [6] Wrapper – Driver class org.apache.derby.jdbc.EmbeddedDriver could not be found and loaded.

Even if this does not occur, you will need to edit the datasource. Go to the ColdFusion Administrator -> Data Sources and edit the new _WRAPPED driver.

Add the following two options to the JDBC URL:

  • cp=C:ColdFusion9libderby.jar – this tells the wrapper where the Derby driver is located.
  • autocommit=false – this tells the wrapper not to enable autocommit for the driver. This option is required by ColdFusion.

You may have to adjust the path to the jar, depending on the install location of your ColdFusion instance. Once you've added these options, you should have a complete JDBC URl which looks something like this:

jdbc:fusionreactor:wrapper:{jdbc:derby:C:ColdFusion9dbbookclub;create=false;MaxPooledStatements=300};driver=org.apache.derby.jdbc.EmbeddedDriver;name=cfbookclub;cp=C:ColdFusion9libderby.jar;autoCommit=false

Save the data source definition in the ColdFusion Administrator.

CF may have problems 'starting' the database (for embedded derby). This is because only one driver at once can start and use an embedded apache database, and if the unwrapped driver is still present, it may have opened the database first. In this case, derby will raise an EmbedSQLException

Connection verification failed for data source: cfbookclub_WRAPPED
org.apache.derby.impl.jdbc.EmbedSQLException: Failed to start database 'C:ColdFusion9dbbookclub'.

To avoid this error:

  • Ensure your application does not use the unwrapped driver prior to it using the wrapped driver. The easiest way to do this is to only use the wrapped driver.

You may wish to simply delete the unwrapped version of the driver, in order to ensure that nothing is using it.

Sharing Connections

If you mix wrapped and unwrapped embedded datasources, FusionReactor 4.5.0 will attempt to mediate connections it opens and wraps with unwrapped datasources, in an attempt to alleviate the problem. This is, however, done on a 'best effort' basis and is not a supported configuration. In production, you should not mix wrapped and unwrapped embedded drivers on the same database.

To reset the status of the drivers, restart ColdFusion. The Wrapped datasource can then be verified and used.

Issue Details

Type: Technote
Issue Number: FRS-289
Components: JDBC
Environment:
Resolution: Fixed
Last Updated: 16/May/12 3:28 PM
Affects Version:
Fixed Version: 4.5.0
Server: ColdFusion 8, ColdFusion 9
Platform:
Related Issues:

[frs-274] CrashProtection: Socket Buffering Protection (socketWrite0)


Symptoms

You may encounter a situation where ColdFusion locks up and appears not to be servicing requests. When you inspect the request queue with FusionReactor, you notice a lot of requests are executing. A thread dump indicates many threads stuck in the method java.net.SocketOutputStream.socketWrite0.

The following is a sample stack trace in which the situation exhibits:

at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at jrun.servlet.jrpp.JrppOutputStream$SpillStream.write(JrppOutputStream.java:182)
at jrun.servlet.io.MetricsOutputStream.write(MetricsOutputStream.java:75)
...

Analysis

This method, which is native C code, handles the actual transmission of page data from the J2EE container onto the network, either for direct transmission to a client, or for subsequent marshalling by an intermediate web server (e.g. IIS). Some clients (in particular, some older versions of Internet Explorer) exhibit a bug whereby they consume the transferred data, but fail to shut down the socket.

The issue stems from the fact that internally, ColdFusion's web server connectors appear to have an internal buffer of 64KB, regardless of how big the ColdFusion page buffer is set. This buffer is filled by ColdFusion on a <cfflush> command (or when the page is complete, or the CF page buffer is full). The flush operation causes the buffer to be written to the network, and for the client to reply that it has received it all correctly. If the client does not properly close the connection, or another network issue occurs, the next flush of page data by ColdFusion down to this buffer will cause the thread to hang.

The connection on the server therefore remains active in the socketWrite0 method, and eventually all worker threads are consumed, ending up locked in this state.

ColdFusion is unable to perform operations on these threads since they are executing a native method. Any operation on these threads is flagged for execution when the native method returns – which it never does. Because TCP/IP handshake data is still being serviced by the client, the server believes the connection is alive, and it is never timed out.

Turning on CP Socket Buffering

The Socket Buffering crash protection attempts to alleviate this problem by:

  • Increasing the size of the Java (ColdFusion) page buffer to a larger value than default, to increase the likelihood that the entire page can be buffered and sent in one operation;
  • Discarding ColdFusion flush commands after the first 64KB of data is buffered, preventing a flush from locking the thread.

How to Turn On CP Socket Buffering

  • Shut down the ColdFusion instance you're monitoring with FusionReactor
  • Locate the reactor.conf file for your instance.
    • This will be in /FusionReactor/instances/INSTANCE_NAME/conf
  • Back up this file somewhere safe.
  • Edit this file, adding the following line to the end:

crashprotection.buffering.active=true

  • Restart the instance.

Caveats

  • Because of the complexity of the buffering mechanism, and the large variety of ways it is employed, we still consider this feature experimental, and it is therefore not exposed in the user interface.
  • If you rely on cfflush for page building, be aware that flushes subsequent to the 64KB mark may not be honoured. The remaining data will be flushed to the network when the page completes.

Availability

This feature is available in FusionReactor 3.0.1 and later.

Issue Details

Type: Technote
Issue Number: FRS-274
Components: Crash Protection
Environment:
Resolution: Fixed
Last Updated: 03/Nov/11 2:20 PM
Affects Version:
Fixed Version: 3.5, 4.0.0
Server: ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9
Platform:
Related Issues:

[frs-230] FusionReactor 3.5.x Release Notes and Resolved Issues



FusionReactor Rev. 3.5.x


RELEASE NOTES

Status: 17-Feburary-2011

Welcome to FusionReactor!

We appreciate your feedback. Please use the web form or send mail to:

support@fusion-reactor.com

These Release Notes describe what is contained in this release, provide
late-breaking news, and list additional documentation for the software.

For additional information on FusionReactor, please visit our website at:

https://www.fusion-reactor.com

For known issues and further support, please see the following web pages:

https://www.fusion-reactor.com/fr/faq.cfm
https://www.fusion-reactor.com/fr/support.cfm

To check for FusionReactor updates use the update page

RESOLVED ISSUES 3.5.5

Key Issue Type Summary
FR2001 Bug License/activation data corrupted due to concurrent access of multiple FR processes

RESOLVED ISSUES 3.5.4

Key Issue Type Summary
FR1836 Bug NullPointerException from JDBC on Railo on getMetaData in some cases
FR1958 Bug In some cases small AMF content is not flushed

RESOLVED ISSUES 3.5.3

Key Issue Type Summary
FR1744 Bug XML content in Railo breaks with a SAX Parser error (org.xml.sax.SAXParseException)
FR1747 Bug FusionReactor runs thousands of samples after it dehibernates (use schedule and not scheduleAtFixedRate)

RESOLVED ISSUES 3.5.2

Key Issue Type Summary
FR1724 Improvement AMF processor should handle a Target in the same way as a serviceName and serviceMethodName

RESOLVED ISSUES 3.5.1

Key Issue Type Summary
FR1704 Bug The Request Details button on the Slow Requests page did not work in FusionReactor 3.5.0. Pressing the Request Details button now correctly calls the Request Details page for requests shown on the Slow Requests page.
FR1706 Bug After a FusionReactor trail period had expired, FusionReactor used too many files handles and did not free them. File handles are now freed correctly. This issue did NOT affect FusionReactor installations that had a valid license, only installations where the trial period had expired and no license was uploaded.

RESOLVED ISSUES 3.5.0

Key Issue Type Summary
FR1648 New Feature Support for ColdFusion 9
FR1693 New Feature Support for Railo 3.1
FR1669 New Feature Support for JBoss 5.1
FR1692 New Feature Support for Windows 2008 Server R2
FR1681 New Feature Support for Windows 7
FR1670 New Feature Support for Mac OS X 10.6 "Snow Leopard"
FR1682 Improvement Support for Flash Player 10c and Flash Player 9 update 5
FR1676 Improvement FusionReactor Setup/Installer and Updater Support for 64 bit Windows machines
FR1667 Improvement FusionReactor's Flash content appears always on top when embedded in HTML in AIR. Use WMODE to correct the problem.
FR1666 Improvement Update Installation Guide
FR1664 Improvement Enhance FRAPI Request Surrogates to include more detail (see JavaDoc)
FR1660 Improvement Update FREM Release Candidate to the 3.5 CORE
FR1658 Improvement New AMF Deserializer implementation / Support for AMF handling Externalizable Objects
FR1650 Improvement FusionReactor Licencing support for AIX on JVM 1.5
FR1691 Bug Installer should select the "coldfusion" J2EE webapp by default when installing FusionReactor into ColdFusion 9
FR1687 Bug Crash Protection Alert Emails are not sent from FusionReactor instances installed in ColdFusion 9
FR1684 Bug Sockets used by FusionReactor's web server can enter CLOSE_WAIT indefinitely when invalid HTTP requests are received
FR1680 Bug Requests sometimes show "null" instead of the server name in CF9
FR1665 Bug Enterprise Dashboard should be able to cope with server names longer than 24 characters
FR1659 Bug Uninstall should only remove FusionReactor files
FR1657 Bug HTTP Post without headers causes a Java NullPointerException; FusionReactors web server can stop working
FR1643 Bug FusionReactor JDBC Wrapper as standalone JAR. It should be possible to place the FR JDBC Wrapper JAR in the same folder as the wrapped JDBC driver to avoid having to move JDBC drivers
FR1638 Bug Deadlock (out-of-order lock acquisition) between FusionReactor's JDBC driver and Metric Probe
FR1630 Bug JDBC Metrics are not tracked when no owning request can be found (eg. in CFTHREAD JDBC request)
FR1622 Bug Illegal State Exception / Response Has Been Closed with upstream Java app on Servet Forward/Includes in JRun. FusionReactor must not wrap a forward/include request if the the source request was already wrapped by FusionReactor.
FR1694 Bug A Race condition in stream data metrics could cause a CrashProtection Request Limit Email Notification to fail under extreme load conditions

Issue Details

Type: Technote
Issue Number: FRS-230
Components: Compression, Content Filters, CPU + Memory, Crash Protection, Enterprise Dashboard, FR Enterprise Dashboard Desktop Application, FusionReactor Settings, Installer, JDBC, License + Activation, Logging, Metrics, Request Managment, Thread Management
Environment:
Resolution: Fixed
Last Updated: 08/Aug/11 11:18 AM
Affects Version:
Fixed Version: 3.5
Server: ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9, Flex Data Services, JBoss, Jetty, JRun 4, LiveCycle Data Services, Railo, Resin, ServletExec, Tomcat, WebSphere, WebLogic
Platform: Windows XP, Windows 2000, Windows 2003, Linux, MacOS, Solaris, Windows Vista, Windows x64
Related Issues:

FRS-214: FusionReactor 3.0.1 Release Notes and Resolved Issues

FRS-251: FusionReactor 4.0.x Release Notes

[frs-198] Problems with installing or activating a license


FusionReactor License and Activation Issues

Version Check

We recommend that you first make sure that you have the most current version of FusionReactor installed as recent updates include license and activation fixes. You can download the most current version from the FusionReactor download page.

Problems and how to fix them

Typical problems

In the following section, we list the most often reported problems with the FusionReactor license and activation process as seen from the user's perspective. The typical causes of these problems are discussed subsequently, along with the steps necessary to solve them.

  1. Restarting the server expires a trial license or activation period immediately
  2. Attempting to activate a license with an expired activation period redirects to the login page (but the license was not activated)
  3. Installing a license shows an error page saying Can not upload license: null
  4. Installing a license silently fails (you get redirected to the login page but the license was not installed)
  5. Loss of license activation after reboot on some multi-server installations of FusionReactor 3.5.1

Typical causes

  1. Insufficient privileges of the server account when trying to write to the Java System Preferences Backing Store.
  2. A Java6 VM on Linux or Solaris that has no fix for SUN JVM bug 6519088
  3. Firefox browsers occasionally corrupting the license during the upload
  4. Trying to activate a license without a connection to the Internet (bug FR1409).

How to fix it

Insufficient privileges

The runtime user of the server on which FusionReactor is installed requires read/write access to the Java System Preferences Backing Store. Depending on the operating system, the location of this data store is different. On Windows the data is stored in the registry hive HKEY_LOCAL_MACHINESOFTWAREJavaSoftPrefs, the data belonging to FusionReactor is in HKEY_LOCAL_MACHINESOFTWAREJavaSoftPrefscomintergralfusionreactor.
Page 14 of the FusionReactor Installation Guide provides you with instructions how to adjust the permissions of this store.
On Linux and Solaris the data is typically stored in the directory /etc/.java/.systemPrefs as a hierarchy of directories containing XML files. The data belonging to FusionReactor is in the directory /etc/.java/.systemPrefs/com/intergral/fusionreactor. To set the necessary permissions execute the following command as user root:

chmod -R 777 /etc/.java/.systemPrefs

Alternative locations of the System Preferences Backing Store

Some JVMs try to create the System Preferences Backing Store in the directory $JAVA_HOME/.systemPrefs as a fallback solution if the directory /etc/.java/.systemPrefs cannot be created where $JAVA_HOME denotes the directory where the JVM itself is located (e.g. /opt/coldfusionmx/runtime/jre ).

We strongly recommend you to use /etc/.java/.systemPrefs as the one and only location of the System Preferences Backing Store. In case there is already data from other applications in $JAVA_HOME/.systemPrefs you should move it to /etc/.java/.systemPrefs and delete $JAVA_HOME/.systemPrefs afterwards (after you have adjusted the permissions of /etc/.java/.systemPrefs properly).

Clear the System Preferences Backing Store

If you attempt to install a license and you get the error message mentioned before:

Can not upload license: null

or simply

null

then you should stop the application server, clear the content of the Java System Preferences Backingstore and restart the application server.

On a Windows machine run the registry editor (regedit.exe or regedt32.exe) and then delete the key

HKEY_LOCAL_MACHINESOFTWAREJavaSoftPrefscomintergralfusionreactor

On a UNIX machine as user root delete the directory

/etc/.java/.systemPrefs/com/intergral/fusionreactor

If the permissions are configured correctly uploading a license and activating it will work properly afterwards.

On MacOS the System Preferences are stored as a set of *.plist files under the /Library/Preferences folder. Once the application server has stopped delete the file /Library/Preferences/com.intergral.fusionreactor.plist to clear all Preferences belonging to FusionReactor.

SUN Java 6 VM bug 6519088

This bug has been introduced with version 6 of the Linux and Solaris SUN Java VM and unfortunately has not been fixed even in the recently released version 6.0_05. We have a technote available at https://www.fusion-reactor.com/support/kb/FRS-168.cfm which provides you with detailed instruction how to apply a fix for this bug.

Bypassing problems with Firefox

If you upload a license with Firefox and nothing seems to happen (except that you have to login again) check the reactor-0.log file for the typical error message (see also https://www.fusion-reactor.com/support/kb/FRS-45.cfm) shown below

...
javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when
decrypting with padded cipher
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
at com.sun.crypto.provider.SunJCE_ae.b(DashoA12275)
at com.sun.crypto.provider.PBEWithMD5AndDESCipher.engineDoFinal(DashoA12275)
at javax.crypto.Cipher.doFinal(DashoA12275)
...

If multiple retries of uploading the license file again do not change this try to upload the license from a different browser and/or computer. If this does not help neither manually copy the license file to FusionReactor/license/license.lic and restart the server.

Making the manual activation process work

As mentioned in the overview of this document there is a hotfix available that fixes the bug FR1409 in the previous FusionReactor version 3.0.0 where a license can only be activated if the computer has a connection to the Internet. Download: fusionreactor-hotfix1409.zip. It comes as a ZIP file containing a new version of the FusionReactor Java library (fusionreactor.jar) together with instructions how to apply the fix. However, we recommend to upgrade to a newer version, which does not require this hotfix.

Issue Details

Type: Technote
Issue Number: FRS-198
Components: License + Activation
Environment:
Resolution: Fixed
Last Updated: 30/Jul/11 12:02 AM
Affects Version: 3.0, 3.0.1
Fixed Version: 3.0, 3.0.1, 3.5
Server: ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9, Flex Data Services, JBoss, Jetty, JRun 4, LiveCycle Data Services, Railo, ServletExec, Tomcat, WebSphere, WebLogic
Platform: Windows XP, Windows 2000, Windows 2003, Linux, MacOS, Solaris, Windows Vista
Related Issues:

FRS-45: Why can’t I upload my license file (using Firefox)?

FRS-168: FusionReactor trial expires immediately on a Java6 VM running on Linux or Solaris

FRS-204: Safari web browser fails to upload license

[frs-245] Hotfix FR-2069: JDBC Prepared Statements throw ‘NullPointerException’ when called with null binding values.


Hotfix 2069 for FusionReactor 3.5.5 Description

This technote describes a fix for a condition under which FusionReactor's JDBC Driver Wrapper may throw NullPointerException when used with PreparedStatements whose binding values are null

Symptoms

When using the JDBC Driver Wrapper, passing a null to a setX method of PreparedStatement throws NullPointerException.

Analysis

FusionReactor's JDBC driver expects passed binding values to be non-null. The expected method of setting null for a given parameter is the setNull(...) method, however the JDBC API does not specifically prohibit null as a binding value being passed directly to the setX methods of PreparedStatement. Internally, the wrapper does some marshaling of this value in order to log it and display it in FusionReactor, and this operation was not null-guarded.

We confirm this to be a bug in the JDBC Driver Wrapper shipped up to FusionReactor 3.5.5.

Resolution

Customers with FusionReactor 3.5.5

Customers with FusionReactor 3.5.5 only installed should apply the attached Hotfix 2069, which resolves this issue.

Instructions for applying the hotfix are supplied in instructions.txt within the hotfix zip file.

Hotfixes are cumulative: any future hotfixes on the FusionReactor 3.5.5 stream, up to but not including the next point release, will contain this hotfix (and all earlier hotfixes since the last point release).

Customers with prior versions (< 3.5.5)

Customers with versions earlier than FusionReactor 3.5.5 should update to that version using the published installer/updater prior to applying this hotfix.

Included Hotfixes

  • None. This hotfix is the first to be issued on the 3.5.5 stream.

Files

hotfix-FR-2069.zip

Taxonomy

After installation, FusionReactor's "About" page should identify itself as *"
Revision: 3.5.5, Build: FusionReactor 3.5.x Maintenance Branch.17.19877"*

~Hotfix FR-2069 (B/P FR-2070) – obf. (Stream: FusionReactor 3.5.x Maintenance Branch, build 17, SVN 19877 JRH)

Issue Details

Type: Technote
Issue Number: FRS-245
Components: JDBC
Environment:
Resolution: Fixed
Last Updated: 02/Mar/11 2:27 PM
Affects Version: 3.5.5
Fixed Version: Pending
Server: ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9, Flex Data Services, JBoss, Jetty, JRun 4, LiveCycle Data Services, Railo, Resin, ServletExec, Tomcat, WebSphere, WebLogic
Platform: Windows XP, Windows 2000, Windows 2003, Linux, MacOS, Solaris, Windows Vista, Windows x64, AIX, Windows 7, Windows 2008
Related Issues:

[frs-243] Hotfix 1836/1886; Railo: NullPointerException in JDBC in some cases, All: Content not flushed in some cases.


Hotfix 1836/1958 for FusionReactor 3.5.1 – Description

This technote describes a fix for two issues, tracked under FR-1836 and FR-1886, in which a user may see a NullPointerException in Railo when performing certain types of JDBC query. Further, on all platforms, content may be truncated or missing when pages produce low-volume output, or which are generated in certain ways.

Symptoms

  • FR-1836: When performing an SQL update using the CFML <cfquery> or <cfupdate> tags, users may – in some cases – see a NullPointerException raised by FusionReactor's ResultSetSurrogate type.
  • FR-1886
    • Tomcat: very short pages may not be flushed correctly to the client.
    • Railo: using the Railo administrator 'Remote Client' mechanism fails with a SAXParseException. XML/SOAP output from Railo could be truncated.
    • JRun: when no file is specified on the URL, JRun fails to load the specified welcome file (usually index.html).
    • Tomcat: JSP Includes + Forwards do not function correctly

Analysis

FR-1836: The JDBC wrapper does not correctly wrap the ResultSet of a query, if the result of the query is null. This occurs when the query is an update, in which there are no generated keys. In this case, the wrapper would create a ResultSetSurrogate which wrapped a null object. The first time any method was called which performed an equivalent operation on the (null) underlying object, a NullPointerException was generated. This has been corrected.

FR-1886: FusionReactor's Wrapper/Stream system has been revised to bring it strictly into line with the J2EE wrapper/proxy pattern. In some cases, local copies of streams were being made and operations were redirected to the copies. These have been removed, and are now directed to the superclass. Several issues (see Symptoms) have been resolved by this change.

Resolution

Customers with FusionReactor 3.5.1, 3.5.2, or 3.5.3 only should apply the attached Hotfix 1836+1886, which resolves this issues noted above.

Instructions for applying the hotfix are supplied in instructions.txt within the hotfix zip file.

Hotfixes are cumulative: any future hotfixes on the FusionReactor 3.5.x stream, up to but not including the next point release, will contain this hotfix (and all earlier hotfixes since the last point release).

Included Hotfixes

  • Hotfix 1721, AMF processor should handle a Target in the same way as a serviceName and serviceMethodName

Withdrawn Hotfixes

  • Hotfix 1744, XML content /Web Services/SOAP in Railo can be truncated and cause errors.
    • Hotfix 1744, which announced itself as FusionReactor 3.5.3, has been withdrawn and should not be applied. Customers with this issue should apply this hotfix instead.

Files

hotfix-FR-1721-1836-1886.zip

Taxonomy

After installation, FusionReactor's "About" page should identify itself as "Revision: 3.5.4, Build: FusionReactor 3.5.x Maintenance Branch.7.19160"

~Hotfix FR 1836+FR-1886 – obf. (Stream: FusionReactor 3.5.x Maintenance Branch, build 7, SVN 19160)

Issue Details

Type: Technote
Issue Number: FRS-243
Components: Compression, Content Filters, Crash Protection, JDBC
Environment:
Resolution: Fixed
Last Updated: 19/Nov/10 2:56 PM
Affects Version: 3.0, 3.0.1, 3.5, 3.5.1, 3.5.3
Fixed Version: 3.5.4
Server: ColdFusion 6, ColdFusion 7, ColdFusion 8, ColdFusion 9, JBoss, JRun 4, Railo, Tomcat
Platform:
Related Issues: