tracker issue : CF-4197019

select a category, or use search below
(searches all categories and all time range)
Title:

Between CF 11,0,04,293328 and 11,0,10,300066, DataDirect Oracle JDBC driver updated and now causing closed connections.

| View in Tracker

Status/Resolution/Reason: Closed/Withdrawn/Duplicate

Reporter/Name(from Bugbase): Stephen Johnson / Stephen Johnson (Stephen Johnson)

Created: 10/24/2016

Components: Database

Versions: 11.0

Failure Type: Non Functioning

Found In Build/Fixed In Build: CF11_Final /

Priority/Frequency: Critical / All users will encounter

Locale/System: English / Win 2012 Server x64

Vote Count: 4

Problem Description:

Issuing a SELECT against a table with NCLOB data causes subsequent SELECT queries to fail with the following error:

[Macromedia][Oracle JDBC Driver]Object has been closed.


Steps to Reproduce:

Assume you have a table with 2 columns represented as NCLOBs in Oracle 12.1.0.2.0. 

Assume also that that table has more than a 10 records.

Issue the following query via <cfquery>:

SELECT  NVL(NCLOB_1_Column, NCLOB_2_Column)			
FROM  NCLOB_TABLE

Results will be returned without incidence.

Issue an other query, for example:

SELECT 'test' a
FROM DUAL

With CF 11,0,04,293328, you'll get results without incidence.

With CF 11,0,10,300066, the connection will close or will have been closed because of the prior statement.

Suspect that DataDirect broke their Oracle JDBC drivers with last release.

Note the build Number on DataDirect JDBC drivers between CF builds:

#Wed, 03 Sep 2014 10:49:47 -0400
#
# Copyright (c) 2002 DataDirect Technologies, Inc.
# This software contains confidential and proprietary
# information of DataDirect Technologies, Inc.  All rights reserved.
#
buildid=000166

vs.

#Thu, 19 May 2016 09:41:02 -0400
#
# Copyright (c) 2002 DataDirect Technologies, Inc.
# This software contains confidential and proprietary
# information of DataDirect Technologies, Inc.  All rights reserved.
#
buildid=000328

Any Workarounds: Nope. We need to use NCLOB.

- Steve Johnson

----------------------------- Additional Watson Details -----------------------------

Watson Bug ID:	4197019

External Customer Info:
External Company:  
External Customer Name: Stephen Johnson
External Customer Email:  
External Test Config: My Hardware and Environment details:



Server Product	ColdFusion

Version	11,0,10,300066

Edition	Enterprise  

Operating System	Windows Server 2012  

OS Version	6.2  

Update Level	/C:/ColdFusion11/cfusion/lib/updates/chf11000010.jar  

Adobe Driver Version	5.1.3 (Build 000094)

Attachments:

  1. February 07, 2017 00:00:00: datasource_log_cf10_ok.log
  2. February 07, 2017 00:00:00: datasource_log_cf2016_error.log

Comments:

Continues into ColdFusion 11,0,11,301867. Reverting macromedia_drivers.jar to buildid=000166 is the ongoing workaround.
Comment by Inigo K.
1584 | January 31, 2017 11:13:02 AM GMT
We are looking into upgrading from CF10 to CF2016 and I believe that we are hitting the same bug. Steps to reproduce: <cfquery datasource="oratest1"> SELECT TO_CLOB('test') FROM dual UNION ALL SELECT NULL FROM dual </cfquery> <cfquery datasource="oratest1"> SELECT dummy FROM dual </cfquery> Actual result in CF10 (10,0,12,286680) with Oracle 11.2.0.4: Success every time Actual result in CF2016 (2016.0.03.301771) with Oracle 11.2.0.4 or Oracle 12.1.0.2 (with latest bundle patches): Exception every time: Error Executing Database Query. [Macromedia][Oracle JDBC Driver]Object has been closed. The error occurred in C:/Users/jmellun/workspace/cftest/object_closed.cfm: line 7 5 : </cfquery> 6 : 7 : <cfquery datasource="oratest1"> 8 : SELECT dummy FROM dual 9 : </cfquery> Stack Trace at cfobject_closed2ecfm1253239667.runPage(C:/Users/jmellun/workspace/cftest/object_closed.cfm:7) at cfobject_closed2ecfm1253239667.runPage(C:/Users/jmellun/workspace/cftest/object_closed.cfm:7) java.sql.SQLException: [Macromedia][Oracle JDBC Driver]Object has been closed. at macromedia.jdbcspyoracle.SpyLogger.sqlException(Unknown Source) at macromedia.jdbcspyoracle.SpyConnection.getMetaData(Unknown Source) at coldfusion.server.j2ee.sql.JRunConnection.getMetaData(JRunConnection.java:508) at coldfusion.server.j2ee.sql.JRunConnectionHandle.getMetaData(JRunConnectionHandle.java:137) at coldfusion.sql.Executive.executeQuery(Executive.java:1302) at coldfusion.sql.Executive.executeQuery(Executive.java:1281) at coldfusion.sql.Executive.executeQuery(Executive.java:1211) at coldfusion.sql.SqlImpl.execute(SqlImpl.java:406) at coldfusion.tagext.sql.QueryTag.executeQuery(QueryTag.java:1202) at coldfusion.tagext.sql.QueryTag.startQueryExecution(QueryTag.java:815) at coldfusion.tagext.sql.QueryTag.doEndTag(QueryTag.java:768) at cfobject_closed2ecfm1253239667.runPage(C:\Users\jmellun\workspace\cftest\object_closed.cfm:7) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:251) at coldfusion.tagext.lang.IncludeTag.handlePageInvoke(IncludeTag.java:737) at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:573) at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65) at coldfusion.filter.IpFilter.invoke(IpFilter.java:45) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:505) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:153) at coldfusion.filter.LicenseFilter.invoke(LicenseFilter.java:30) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:60) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:219) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:536) at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:898) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) The error occurs regardless of whether or not Enable CLOB and Enable BLOB are checked on the datasource. I'm attaching datasource logs from both CF10 (datasource_log_cf10_ok.log) and CF2016 (datasource_log_cf2016_error.log). One thing that looks strange to me in those logs is that setMaxRows is executed on the statement after the resultset has been closed. However it does the same thing in CF10 and there it works fine.
Comment by Jonas M.
1585 | February 07, 2017 05:45:23 PM GMT
I've done some further testing and research. DataDirect article 000070365 "With the Connect for JDBC Oracle driver, an exception occurs: SQLException: "Object has been closed" when reading a row from a table that has an XMLType column" (http://knowledgebase.progress.com/articles/Article/With-the-Connect-for-JDBC-Oracle-driver-an-exception-occurs-SQLException-Object-has-been-closed-when-reading-a-row-from-a-table-that-has-an-XMLType-column) looks related: "Cause: The driver was closing the connection before the entire LOB object was read from the wire. Resolution: Fixed in hotfix 5.1.4.000335" The version of the drivers in CF2016 with update 3 is 5.1.4.000328. Downgrading macromedia_drivers.jar to the version (5.1.4.000286) that was included in the original CF2016 installer makes my test case work. P.S. Why is there no mention in any of the CF2016 update release notes that these drivers have been updated?
Comment by Jonas M.
1586 | February 08, 2017 11:03:36 AM GMT
Can Adobe please comment on this issue? I've given you an easy to reproduce test case.
Comment by Jonas M.
1587 | March 31, 2017 09:28:30 AM GMT
Stephen, My apologies for replying late on this. We are already in touch with DataDirect to get the latest driver. We will update this bug after verifying the fix. Thanks, Nimit
Comment by Nimit S.
1588 | April 28, 2017 12:31:10 PM GMT
Hello Stephen, This is a duplicate of another bug #CF-4165262. So, closing this bug and we will track it with the original bug. We are in the process of validating the fix. Please subscribe to the original bug for an update. However, You can access QA verified macromedia_drivers.jar hosted at below given location: Location: https://cfdownload.adobe.com/pub/adobe/coldfusion/temp/macromedia_drivers.jar MD5 Checksum: e171251f7c26af91db17b569f503adcc Steps to apply this jar: 1. Stop ColdFusion service 2. Navigate to <cf_install_root>/<instance_name>/lib 3. Take backup of macromedia_drivers.jar 4. Replace it with the latest driver jar. 5. Start ColdFusion service Thanks, Nimit
Comment by Nimit S.
1589 | July 07, 2017 12:34:18 PM GMT
The new macromedia drivers solve the problem. Can these drivers by used in production as you seem to indicate that they are "QA verified"? Is that macromedia_drivers.jar the version that's going out with the next patch? If not, when will the next patch be? Currently, we are testing against 2016,0,04,302561 and I'm not seeing new updates available. Thanks, Steve Johnson
Comment by Stephen J.
1590 | July 18, 2017 05:05:17 PM GMT
Steve, Yes, you can use this driver in your production environment. This driver will also be included in the upcoming update of ColdFusion.
Comment by Nimit S.
1591 | July 18, 2017 05:36:55 PM GMT