[Mono-bugs] [Bug 350906] New: Sybase ExecuteReader hangs on killed sessions
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Fri Dec 28 10:38:43 EST 2007
https://bugzilla.novell.com/show_bug.cgi?id=350906
Summary: Sybase ExecuteReader hangs on killed sessions
Product: Mono: Runtime
Version: 1.2.6
Platform: i386
OS/Version: Red Hat 9.0
Status: NEW
Severity: Critical
Priority: P5 - None
Component: misc
AssignedTo: mono-bugs at ximian.com
ReportedBy: jdanon at optonline.net
QAContact: mono-bugs at ximian.com
Found By: ---
Description of Problem:
When executing SQL on a SybaseConnection that has been killed remotely, the
ExecuteReader method does not return. It blocks the thread on which it was
called indefinitely.
Steps to reproduce the problem:
using System.Data;
using Mono.Data.SybaseClient;
using System.Threading;
public class Test
{
public static void Main(string[] args)
{
string connectionString =
"Server=server,5000; Database=dbname; User ID=username;
Password=realpassword;";
IDbConnection dbcon = new SybaseConnection(connectionString);
dbcon.Open();
Console.WriteLine( "Connection status: {0}", dbcon.State );
// During this next 15 second sleep, log in to Sybase server and
// kill the connection via kill <spid> command.
Thread.Sleep(15*1000);
Console.WriteLine( "Connection status: {0}", dbcon.State );
IDbCommand dbcmd = dbcon.CreateCommand();
dbcmd.CommandText = "SELECT name FROM master..sysobjects";
IDataReader reader = dbcmd.ExecuteReader(); // <-- program hangs here
while(reader.Read()) {
string objName = reader["name"].ToString();
Console.WriteLine("Name: " + objName);
}
reader.Close();
reader = null;
dbcmd.Dispose();
dbcmd = null;
dbcon.Close();
dbcon = null;
}
Actual Results:
Console output...
Connection status: Open
Connection status: Open
[then the ExecuteReader hangs]
Expected Results:
Connection status: Open
Connection status: Closed
InvalidOperationException thrown.
How often does this happen?
All the time if database is disconnected remotely. Easy to reproduce.
Additional Information:
Doing something similar as the above in Visual Studio via ODBC yields an "Open"
state even after the connection is closed (like mono), but at least the
InvalidOperationException gets thrown as soon as SQL execution is attempted on
a closed connection. It appears that under Windows the connection doesn't
necessarily know that it's closed either, but finds out on the next executed
statement because after the exception is thrown, checking the State member
reveals that it's closed. Sybase version tested was 12.5.1.
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list