- 3,716,133 Users
- 2,242,960 Discussions
- 7,845,840 Comments
Forum Stats
Discussions
Categories
- 17 Data
- 362.2K Big Data Appliance
- 7 Data Science
- 1.6K Databases
- 479 General Database Discussions
- 3.7K Java and JavaScript in the Database
- 22 Multilingual Engine
- 487 MySQL Community Space
- 5 NoSQL Database
- 7.6K Oracle Database Express Edition (XE)
- 2.8K ORDS, SODA & JSON in the Database
- 417 SQLcl
- 42 SQL Developer Data Modeler
- 184.9K SQL & PL/SQL
- 21K SQL Developer
- 1.9K Development
- 3 Developer Projects
- 32 Programming Languages
- 135.1K Development Tools
- 9 DevOps
- 3K QA/Testing
- 259 Java
- 6 Java Learning Subscription
- 11 Database Connectivity
- 67 Java Community Process
- 1 Java 25
- 9 Java APIs
- 141.1K Java Development Tools
- 6 Java EE (Java Enterprise Edition)
- 153K Java Essentials
- 135 Java 8 Questions
- 86.2K Java Programming
- 270 Java Lambda MOOC
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 10 Java SE
- 13.8K Java Security
- 3 Java User Groups
- 22 JavaScript - Nashorn
- 18 Programs
- 125 LiveLabs
- 31 Workshops
- 9 Software
- 3 Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 4 Deutsche Oracle Community
- 11 Español
- 1.9K Japanese
- 2 Portuguese
NetCore. OracleCommand. How to abort execution?

Hello.
I'm using oracle.manageddataaccess.core.
I can’t specify the timeout or at least interrupt the execution of the command.
The only thing that works for sure
var m_oracleConnectionImpl = __Get(connection, "m_oracleConnectionImpl");
var m_marshallingEngine = __Get(m_oracleConnectionImpl,"m_marshallingEngine");
var m_oracleCommunication = __Get(m_marshallingEngine,"m_oracleCommunication");
var m_sessionCtx = __Get(m_oracleCommunication, "m_sessionCtx");
var m_transportAdapter = __Get(m_sessionCtx, "m_transportAdapter");
var m_client = (TcpClient)__Get(m_transportAdapter, "m_client");
m_client.Close();
CommandTimeout + oob does not affect anything.
Is there another beautiful solution?
Answers
-
You can also try OracleCommand.Cancel.
If the cancellation request is received after the results have been fetched in the case of a query or the command has already executed, no cancellation will occur as there is nothing left to cancel.
If that is not the case and the command is not cancelling, turn on the server side network trace whether the cancel request is being received.
-
This method does nothing. It cancels execution only in the first steps.
2.
OracleConnection.Dispose or Tansaction.Dispose - These methods are blocked, waiting for the completion of the command.
3.
Manual call of the break method through reflection does not bring the desired result. -
The response from the server is that the command is aborted, but then a loop continues.
-
The ORA-01013 is what is expected when a command has been successfully canceled.
-
This is like a bug on the client side.
internal class TTCError
internal int ReadErrorMessage()
NullReferenceException
this.m_bindErrors[j].m_rowOffset = (int)this.m_marshallingEngine.UnmarshalUB4(false);
this.m_bindErrors is null
Missed array initialization.
Oracle.ManagedDataAccess, Version=2.0.19.1 -
How does this bug exhibit itself in product behavior? Is the behavior in conflict with what is documented? An error is generally expected in a command cancellation situation. See more details in the Remarks section of the Cancel method.
-
The result of the bug is that the library cannot correctly process the response from the server,
due to the lack of array initialization, an exception is thrown,
which leads to the resending of the command cancellation,
then the response from the server,
again the exception,
the cancellation request again.
In the previous message I took a screenshot of traffic from wireshark.
The class, method, and place of exception are also indicated in the previous message.
Under the debugger, I initialized the array manually,
this led to the correct processing of the response from the server.
The command execution call was interrupted and control was returned with the exception being thrown
into the user code with the text that the command was interrupted. -
I filed bug 30708476 to track this issue. We'll have an engineer review the issue.