[sr-dev] SF.net SVN: openser:[5928] branches/1.5/modules/permissions/trusted.c

Iñaki Baz Castillo ibc at aliax.net
Fri Oct 2 10:32:40 CEST 2009


El Viernes, 2 de Octubre de 2009, Alex Balashov escribió:
> Iñaki Baz Castillo wrote:
> > El Viernes, 2 de Octubre de 2009, Alex Balashov escribió:
> >> � wrote:
> >>> El Viernes, 2 de Octubre de 2009, Juha Heinanen escribi�:
> >>>> Revision: 5928
> >>>>          
> >>>> http://openser.svn.sourceforge.net/openser/?rev=5928&view=rev Author: 
> >>>>  juhe
> >>>> Date:     2009-10-02 04:51:57 +0000 (Fri, 02 Oct 2009)
> >>>>
> >>>> Log Message:
> >>>> -----------
> >>>> * Check that db connection exists before trying to make query.
> >>>> * Do not close db connection if db query fails.
> >>>
> >>> Isn't this stuf handled by db_xxxxx modules?
> >>
> >> That's what I thought, but evidently not, because results vary depending
> >> on which module is doing the calling.
> >
> > I really fail to understand why a module using a DB backend should handle
> > the DB connection... ¿?
> 
> I haven't looked at the code, but I suspect that the calling module does
> not "handle" the DB connection in any direct sense, but rather
> indirectly through an interface exposed to it by the DB backend module.
> 
> This problem probably cannot be entirely avoided;  even if the mechanics
> of database interaction are hidden in db_*, some manipulation of
> abstractions - which correspond to underlying database handle and query
> states, etc. - by modules that use db_* is probably required, just like
> with any API.  And just like any caller of an API, it is possible for
> the calling module to misbehave on exceptional conditions returned by
> the lower-level DB module.
> 
> I would agree, however, that db_* should probably provide enough
> containment and error handling to prevent all but the most egregious
> database-related fatal runtime errors.

Yes, I just meant basic DB stuf as:
- Connection/disconnection to DB.
- Re-connect in case of failure.
- Regenerate prepared statements (if they were used) automatically after re-
coonecting to the database (mysql prepared statements are in server side).

IMHO all this stuf should be handled by db_xxxxx module itself. I expect that 
when Kamailio starts, modules using database backends use the db_xxxx API to 
initiate the connection, generate prepared statements and basically that's 
all. During runtime a module function should just do SQL queries, no more.
Am I wrong?

Regards.


-- 
Iñaki Baz Castillo <ibc at aliax.net>



More information about the sr-dev mailing list