DCS went dead during ODBC SQLCancel testing
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Trafodion |
Fix Released
|
High
|
Zbigniew Omanski |
Bug Description
The SQLCancel test was done thru ODBCTEST. In this case, seems the 2nd SQLCancel on a SQL query caused DCS went dead, client couldn't connect to Trafodion servery any more.
Query used in the test:
select count(*) from "_MD_".columns a, "_MD_".indexes b, "_MD_".objects c, "_MD_".tables d, "_MD_".columns e, "_MD_".indexes f, "_MD_".objects g, "_MD_".tables h, "_MD_".columns i, "_MD_".indexes j, "_MD_".objects k, "_MD_".tables l
Test steps:
1. set to Async mode: SQLSetStmtAttr:
2. SQLPrepare:
3.SQLCancel:
4. SQLPrepare:
5. SQLExecute:
6.SQLCancel:
7. SQLExecute:
8. SQLExecute:
9. SQLCancel: ->kept running until driver timed out, and DCS went dead, no more connection can be made.
Changed in trafodion: | |
status: | New → Fix Committed |
When the SQLCancel is sent by JDBC/ODBC Drivers, the DcsMaster gets following parameters:
dialogueId
srvrType
srvrObjRef
stopType PortNumber: ODBC".
If Sql Cancel is sent by JDBC Driver, srvrObjRef has only portNumber. When the request is sent by ODBC Driver, its format is following:
"TCP:IpAddress/
To get the portNumber we have to parse srvrObjRef string