Copy link to clipboard
Copied
Hello,
has anyone experienced this error before?
We are getting this error after we patched the Oracle server to 19.23 -> 19.24. In both Coldfusion 2021u12 (java 11.0.7) and 2023u8 (java 17.0.11) in the datasources with "Oracle" client we get this error in CFadmin:
Connection verification failed for data source: DATASOURCE_A
java.sql.SQLException: [DataDirect][Oracle JDBC Driver]arraycopy: destination index -1 out of bounds for byte[128]
The exceptions.log show more details:
"Error","http-nio-8500-exec-9","07/23/24","09:36:08","user1","[DataDirect][Oracle JDBC Driver]arraycopy: destination index -1 out of bounds for byte[128]"
java.sql.SQLException: [DataDirect][Oracle JDBC Driver]arraycopy: destination index -1 out of bounds for byte[128]
at macromedia.jdbc.oracle.base.BaseExceptions.b(|Oracle|6.0.0.1051|:1102)
at macromedia.jdbc.oracle.base.BaseExceptions.a(|Oracle|6.0.0.1051|:976)
at macromedia.jdbc.oracle.base.BaseExceptions.b(|Oracle|6.0.0.1051|:1128)
at macromedia.jdbc.oracle.base.BaseExceptions.b(|Oracle|6.0.0.1051|:796)
at macromedia.jdbc.oracle.OracleImplConnection.open(|Oracle|6.0.0.1051|:2602)
at macromedia.jdbc.oracle.base.BaseConnection.c(|Oracle|6.0.0.1051|:5063)
at macromedia.jdbc.oracle.base.BaseConnection.dQ(|Oracle|6.0.0.1051|:1539)
at macromedia.jdbc.oracle.base.BaseConnection.i(|Oracle|6.0.0.1051|:1461)
at macromedia.jdbc.oracle.base.BaseConnection.a(|Oracle|6.0.0.1051|:989)
at macromedia.jdbc.oracle.base.BaseDriver.connect(|Oracle|6.0.0.1051|:331)
at macromedia.jdbc.MacromediaDriver.connect(MacromediaDriver.java:256)
at coldfusion.server.j2ee.sql.pool.JDBCPool.createPhysicalConnection(JDBCPool.java:667)
at coldfusion.server.j2ee.sql.pool.ConnectionRunner$RunnableConnection.run(ConnectionRunner.java:67)
at java.base/java.lang.Thread.run(Thread.java:842)
Thanks
Hi All,
We have a fix available to address this issue. Please contact the support team at cf.install@adobe.com for the fix.
Thanks,
Vikram
Copy link to clipboard
Copied
Yes, as noted before getting Adobe to provide the updated DataDirect drivers will be the best solution. No word yet from them on that (other than their saying here they're aware of the problem and seemingly working on it).
And sorry, I missed that your point was that you'd gotten the ref cursor problem on switching TO the "other" driver, which is one of the options proposed here.
Another option some might consider is turning off Oracle's NNE feature ("Native Network Encryption"), which seems at the root of the incompatibility for the DataDirect driver. I shared more in the cf bug tracker ticket on this issue, pointed to above. I just didn't think to copy the NNE info here. I acknowledge there it may not suit some...and it may not address this new ref cursor issue.
Hoping to see all this go away in time. I realize it's far worse for those in the quagmire. Get your votes on that tracker ticket.
Copy link to clipboard
Copied
Quick question - I noticed the CF bug tracker ticket had the problem identified in version 2023, but I'm also finding the errors in CF 2021. Do you know whether there is a separate ticket for 2021? Or will Adobe be creating a fix for CF 2021 and 2023?
Unfortunately, disabling NNE is not currently an option. I tried ojdbc10.jar, but we still experienced intermittent errors.
Thanks!
Copy link to clipboard
Copied
Hi,
Its for both, I put it in the bug description.
The form did not allow me to put for both versions so I just selected 2023.
Copy link to clipboard
Copied
@EvanSinceCF31Just out of the curiosity, what is the error you were getting when you did the following?
...
I also found that a custom Java class that connects to Oracle called from CF using the CF data source started failing with the change to ojdbc11.jar, apparently because the auto-commit setting is different than the DataDirect drivers. I was able to update the Java class to explicitly disable auto-commit to resolve that issue. Alternatively I could have added -Doracle.jdbc.autoCommitSpecCompliant=false to my CF JVM arguments.
...
By @EvanSinceCF31
Copy link to clipboard
Copied
I was seeing
ORA-17273: Could not commit with auto-commit enabled.
https://docs.oracle.com/error-help/db/ora-17273/
My custom Java class opens a connection using the data source passed by ColdFusion then does a series of inserts, then explicitly commits, then closes the connection. I probably should have been explicitly disabling auto-commit but I didn't know it was needed because until I changed the underlying driver it just worked 😉
To be clear - this particular problem was my issue in my code when running with the Oracle ojdbc11.jar - not related to anything Adobe or Oracle. I'm assuming the default behaviour in the embedded DataDirect driver is slightly different from the downloaded Oracle driver but it has me wondering whether swapping drivers is going to raise some other issues (like the <cfprocresult> difference)
Copy link to clipboard
Copied
It seems you should probably create a new, separate thread on this auto-commit issue. As your last comment suggests, it seems unrelated to the subject of this thread. Just saying you may help yourself and others if you do that. 🙂
Copy link to clipboard
Copied
Hello,
On august 20nd a coldfusion2021 hotfix 15 has been released. Is there perhaps a patch for the Oracle access problem?
Regards Kalle
Copy link to clipboard
Copied
Kalle, in short: no. The ONLY change in the update released this week was an upgrade of the Tomcat within cf. No changes to drivers or to cf itself. I have more details in a post here :
Copy link to clipboard
Copied
Does anyone know how do we find information (version etc) about the built-in "Oracle" driver Adobe Coldfusion is using?
Copy link to clipboard
Copied
Going back to Dejan's question of a few days ago:
@dejank52055655 wrote:
Does anyone know how do we find information (version etc) about the built-in "Oracle" driver Adobe Coldfusion is using?
It's a bit complicated.
First, know that the built-in driver for Oracle IS NOT a driver FROM Oracle. That's important if you or anyone may want to compare what it is to some known version of Oracle's jdbc driver.
Instead, as you may know, the built-in Oracle driver for CF is licensed by Adobe from Progress (aka DataDirect). So the version would be as reported for that. (And as for this bug, it seems we need to await Adobe getting and offering a new DataDirect driver, whether implemented as an update, or as a hotfix in advance of that.)
Second, since cf2021 Adobe now uses packages/modules for most features of cf--especially db drivers. As such, there's a version reported for THAT which is yet a different number. You can find that using the CF admin package manager page or the command line cfpm tool, new with cf2021. Indeed, that version may change in the life of a given cf version (there have been a few oracle package versions in the 14 updates to cf2021 so far, for instance).
Third, as for finding the specific driver version reported for a given cf driver, there are both code and command line ways to get that. I did a blog post on that many (many) years ago, which was mostly still working when I tried it relatively recently. Let me know how it goes. I'd be open to reprising and updating it.
Then, too, in my hidden gems talks each release I show a table where I've dug in to find the various embedded library version numbers, including jdbc driver version numbers. Those are at carehart.org/presentations. But I also did a blog post where I elaborated a bit more on how to find such things, at https://www.carehart.org/blog/2021/1/3/what_are_cf2021_embedded_library_version_numbers
Let us know what you find, as I'm sure others here may appreciate it.. (I'm writing from a phone, so can't find my current values to offer as of update 14.)
Copy link to clipboard
Copied
Does anyone know how do we find information (version etc) about the built-in "Oracle" driver Adobe Coldfusion is using?
By @dejank52055655
That is difficult to find out because the built-in drivers that ColdFusion uses are not individually exposed as Java classes. They are collectively bundled together as the class macromedia.jdbc.MacromediaDriver.
You can see that by running this code:
<cfscript>
MacromediaDriverClass="macromedia.jdbc.MacromediaDriver";
MacromediaDriverObject=createobject("java", MacromediaDriverClass);
writeoutput("<p>Macromedia driver class: " & MacromediaDriverClass & "<br>");
writedump(var=MacromediaDriverObject.driverNamesMapping, label="Driver Names in Macromedia Driver");
</cfscript>
On the other hand, if you happen to know the driver class (for example, I happen to know that my application uses MySQL inported through a Jar file), then you can determine the driver's major and minor version as follows:
<cfscript>
MySQLDriverClass="com.mysql.cj.jdbc.Driver";
MySQLdriverObject=createobject("java", mySQLDriverClass);
writeoutput("<p>MySQL driver class: " & mySQLDriverClass & "<br>");
writeoutput("Driver major version: " & MySQLdriverObject.getMajorVersion() & "<br>");
writeoutput("Driver minor version: " & MySQLdriverObject.getMinorVersion() & "<br>");
</cfscript>
To see all the database drivers available in ColdFusion, run the following code:
<!--- Login into Coldfusion Administrator. --->
<cfset createObject("component","cfide.adminapi.administrator").login("your_CFAdmin_password")>
<!--- Instantiate the data source object. --->
<cfset datasourceObject = createObject("component","cfide.adminapi.datasource")>
<!--- Get a structure containing all the database drivers and dump it--->
<cfset databaseDrivers = datasourceObject.getDriverDetails()>
<cfdump var="#databaseDrivers#">
Copy link to clipboard
Copied
Does anyone know how do we find information (version etc) about the built-in "Oracle" driver Adobe Coldfusion is using?
By @dejank52055655
The error message contains lines such as
...
at macromedia.jdbc.oracle.base.BaseExceptions.b(|Oracle|6.0.0.1051|:1102)
at macromedia.jdbc.oracle.base.BaseExceptions.a(|Oracle|6.0.0.1051|:976)
at macromedia.jdbc.oracle.base.BaseExceptions.b(|Oracle|6.0.0.1051|:1128)
at macromedia.jdbc.oracle.base.BaseExceptions.b(|Oracle|6.0.0.1051|:796)
...
which lead me to guess that the version number is 6.0.0.1051.
Copy link to clipboard
Copied
Hi All,
We have a fix available to address this issue. Please contact the support team at cf.install@adobe.com for the fix.
Thanks,
Vikram
Copy link to clipboard
Copied
Vikram has been very helpful in debugging the issue. I implemented the fix yesterday and am happy to say it works well for the internal Macromedia driver.
Copy link to clipboard
Copied
Great to hear, Vikram, and thanks. There was no mention (yet) of this in the bug report (CF-4222965), so I've added a comment pointing to yours here.
Copy link to clipboard
Copied
Thanks @Vikram_Kumar_M , does the fix require customers to have active maintenance support contract to get it implemented?
Copy link to clipboard
Copied
Copy link to clipboard
Copied
@Vikram_Kumar_M I tried going to the link indicated in the CF tracker, but it just comes up with a blank page and no download. I suspect security may be blocking? I sent email to the support team for the hotfix, but have not had a response. Is there anything else I can do to get this fix?
Copy link to clipboard
Copied
Bell, I can confirm that the link works for me. Can you try I as I have just offered it here?
I can confirm that it doesn't require any login (not even to the Adobe site), as I just ran it in a private/incognito window. I even ran it from a browser in a new VM (so it had never been to that URL or site before). So I'd not think that you should need to "try it from another browser", but you might want to.
Copy link to clipboard
Copied
@Charlie Arehart Thanks, I was finally able to get the download.
Copy link to clipboard
Copied
I just thought I'd create a new top-level note: folks here should note that Vikram (from Adobe) has now posted publicly the link to obtain and the steps to follow to solve this problem. The info (the link and the steps) is offered as a comment in the tracker ticket for this issue (CF-4222965).
BTW, folks shouldn't just download the file as offered in the link (which was discussed elsewhere here): you need to ALSO follow the specific steps to USE what's in that donwload file, and those are (for now) listed only there in that ticket.
Finally, I've just asked there if the fix applies equally to cf2023 and 2021, as that was unclear. Perhaps Vikram or folks testing the different versions may clarify for us in reply to this. Hopefully this problem will finally be resolved for everyone suffering it.
Copy link to clipboard
Copied
I found the download page very slow, I refreshed a couple of times and then I got multiple downloads, so it does work! (from Canada)
Tested lightly here on CF2021 Windows and on CF2021 on Redhat Linux and so far so good 🙂
Copy link to clipboard
Copied
Copy link to clipboard
Copied
@Vikram_Kumar_Mthanks for the fix. We tested this successfully in CF2021/2023 connecting to Oracle 19.24, so far no issues. However, we have second enviroment Cf2021/2023 connecting to Oracle 19.23. If I apply this fix today (in preparation to upgrading Oracle to 19.24 in few weeks) to the second enviroment is this fix going to interfere with with Oracle 19.23? Please advise.
Copy link to clipboard
Copied
@dejank52055655 Yes, it should work.