Skip to Content.
Sympa Menu

freetds - [freetds] timeout handling and server msg callback

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Tolga Ceylan <tolga.ceylan AT gmail.com>
  • To: freetds AT lists.ibiblio.org
  • Subject: [freetds] timeout handling and server msg callback
  • Date: Wed, 29 Oct 2014 21:10:07 -0700

Hi All,

Recently, I've stumbled on a potential issue with the timeout handling
in ct_lib.

Given these two cases of SQL executing;

DECLARE @counter int
WHILE (@counter < 99999999)
BEGIN
PRINT @counter
SET @counter = @counter + 1
END

versus;

DECLARE @counter int
WHILE (@counter < 99999999)
BEGIN
SET @counter = @counter + 1
END

(only difference is print or no-print basically)

seems to affect timeout handling since this trips the ::select() (aka
tds_select) based query timeout.

In other words, continuously feeding such server messages back to the
client bypasses
the query timeout. The issue is tricky because there has to be enough
'print' executions
to actually trigger this. (Probably due to Nagle or other buffering.)

Has anybody seen this before? Any work around for it(*) ?

(*) the fix probably is to consider beginning/end of the actual
queries as opposed to blocking on select
with query timeout.

I'm using 0.82 on linux centos 6.5 although I couldn't see changes
related to this in 0.91.

Cheers,
Tolga




Archive powered by MHonArc 2.6.24.

Top of Page