[Kamailio-Devel] postgres queries overlapping

H Quintana hjqlopez at yahoo.com
Thu Jul 31 00:44:30 CEST 2008


Hi,

Thanks for your answers.   I just did submit the bug.


Humberto


--- On Wed, 7/30/08, Henning Westerholt <henning.westerholt at 1und1.de> wrote:

> From: Henning Westerholt <henning.westerholt at 1und1.de>
> Subject: Re: [Kamailio-Devel] postgres queries overlapping
> To: devel at lists.kamailio.org
> Cc: "Jason Penton" <jason.penton at smilecoms.com>, "Klaus Darilion" <klaus.mailinglists at pernau.at>, hjqlopez at yahoo.com
> Date: Wednesday, July 30, 2008, 7:56 AM
> On Wednesday 30 July 2008, Jason Penton wrote:
> > >> one thing I noticed in the mysql module (may
> be similar in postrges) is
> > >> that a static char array is used to build the
> sql query. This is however
> > >> NOT thread safe as we saw on multiprocessor
> Solaris boxes. Basically 2
> > >
> > > Kamailio does not use threads, but processes. Is
> this also an issue in
> > > multi-process applications?
> >
> > it seems it is an issued becuase under high load the
> mysql buffer was beign
> > overwritten resulting in bad SQL queries. This
> continued until I put
> > mutexes around the static SQLQuery buffer in the mysql
> module. Maybe the
> > multi-porcess programmers can shed some light? I just
> thought that this may
> > be a similar probem to what the orginal poster is
> experiencing.
> 
> Hi Jason,
> 
> i assume that you refer to the 1.3 branch (in 1.4 static
> buffer is placed in 
> the core DB API). Every worker children of the server has
> each own buffer, so 
> normally queries could not overlap, if every module behaves
> correctly. This 
> structure (with the static buffer) is basically used since
> the fork of 
> OpenSER.
> 
> If some module does not free some results correctly, for
> example in error 
> conditions (see today thread on users), then this could
> cause the errors 
> you've described. Another issue is wrong initialization
> (for example in an 
> out of tree module), which caused the problems observed in
> past 
> thread "db_mysql commands out of sync" on devel.
> In this problem several 
> mysql connections shares the same thread_id, and thus
> queries overlapped.
> 
> The code in trunk could of course changed to set locks
> around the buffer, or 
> make this stuff non-static. But i'm not assured this
> fix the real cause of 
> the problem, it would also decrease performance. Even if
> the whole DB API was 
> made a little bit more abstract recently, it still avoids
> superflous work, 
> although if this could mean some lack of robustness in
> certain error 
> conditions.
> 
> Do you could share some more details, for example error
> messages?
> 
> Cheers,
> 
> Henning


      



More information about the Devel mailing list