[asterisk-dev] res/res_odbc.c

Nick Gorham nick at lurcher.org
Mon Nov 5 11:09:03 CST 2007


Tilghman Lesher wrote:

>On Monday 05 November 2007 07:41, Nick Gorham wrote:
>  
>
>>Tilghman Lesher wrote:
>>    
>>
>>>On Monday 05 November 2007 03:49:16 Nick Gorham wrote:
>>>      
>>>
>>>http://bugs.digium.com, but since you're already here, I need to ask the
>>>obvious question of:  are you using "pooling=yes" in res_odbc.conf?  That
>>>option should prevent this issue from occurring.
>>>      
>>>
>>Yep, I am using "pooling=yes", and no it doesn't seem to stop it happening.
>>
>>Checking again in the code, I can't see anything that would stop it
>>happening with pooling set. The code in handle_cli_odbc_show() locks
>>odbc_list, then itterates down the list, calling ast_odbc_sanity_check()
>>on each connection. ast_odbc_sanity_check()() then allocates a statement
>>and runs its query. I cant see anything in that where there is anything
>>that syncronises the query with any other activity on the connection.
>>    
>>
>
>Okay, fixed.
>
>  
>
Good, Thanks.

>>>In terms of the ODBC option, we'll look into it, but I doubt it's as
>>>effective as running the generic query.  There are some databases
>>>(notably MySQL) where doing the database ping simply doesn't work.
>>>      
>>>
>>Well, thats entirly up to you (of course), I am not sure just what you
>>mean as "effective", its certainly slower than using the method the spec
>>suggests as the CONNECTION_DEAD definition does not require (infact its
>>not allowed to do ) a client server round trip. Myself I would think it
>>would be better to get the driver writers to support the spec, but what
>>do I know.
>>    
>>
>
>By effective, I mean that it detects all sorts of possible connection issues
>that would not otherwise be detected if you don't run a round trip to the
>server.  While asking the driver if it thinks the connection is still open
>would be a great speed improvement, it doesn't work in the maximum number
>of cases (which are sometimes difficult to reproduce and/or diagnose).  When
>you have a frustrated system administrator asking why the queries aren't going
>through, telling him that he has a driver issue is likely to only add to the
>frustration.
>
>  
>
Yes, I can see that, I guess it depends on how often the sanity check is 
used.

Looking at the code the check option to ast_odbc_request_obj is only 
used in a couple of places neither look to be used often so I guess its 
not a big deal.

-- 
Nick



More information about the asterisk-dev mailing list