Michael Ulitskiy wrote:
Hi Klaus,
I've seen the problem described by Klaus too, but first of all I was
concerned that postgres module cannot reconnect to db after connection
failure. It crashed openser.
I tried CVS version and stoped postgres during operation. Then, openser
failed to update the location table (of course) but did not crashed.
Maybe it depends on the module which tries to access the database.
Nevertheless, reconnect failed after postgres returned.
Then I applied your patch. Now, reconnect works.
Although, the debug message looks a little bit strange when the postgres
module tries to reconnect when the db ist still down:
7(32748) PG[142] connect_db could not connect to server: ÿÿÿÿ
^^^^
regards,
klaus
I've done some research on the module source code and I believe
I've found a logical mistake in it.
The issue is that parse_sql_url() function is supplied with the only copy
of sql url and it corrupts it. So if the connection fails and module
tries to reparse url it fails as CON_SQLURL(_h) is corrupted by first
parsing.
I've created a simple patch that corrects the problem. What it does it
it introduce a temporary buffer with sql url string for parse_sql_url to work
on. Also it makes so that original sql url is not deleted from connection
structure
until db_close() is called.
Patch is attached.
Also if in dbase.c in db_init() function you comment out the following:
/*
if (connect_db(res) < 0)
{
PLOG("db_init", "Error while trying to open database, FATAL\n")
aug_free(res);
return((db_con_t *) 0);
}
*/
you'll get a "delay connect until used" feature that can be usefull due to lack
of connection pool for postgres.
Could please some of developers review this patch?
Michael
On Thursday 04 August 2005 11:39 am, Klaus Darilion wrote:
Hi!
I had several situations in which openser crashed if the DB lookup
fails, e.g:
table does not exist (acc module)
wrong SQL query (lcr module)
Whereas is some cases (wrong table permissions, avpops module) openser
keeps running.
I do not know if these problems also occurs with mysql. If not, the
postgresql module would really need some review.
regards,
klaus
_______________________________________________
_______________________________________________
Devel mailing list
[email protected]
http://openser.org/cgi-bin/mailman/listinfo/devel