I have a code change that resolves this issue in a flexible way, before I
check it in can anyone see any flaws in it?
I decided to allow the first character of the db_url to be set to ‘*’ to
indicate that non-pooling is required.
In this way the pooling can be controlled from the config file giving extra
flexibility.
I have added a new variable poolid to db_id struct.
By default this is zero, however in the case that non-pooling is required
the poolid is set to a unique value within that pid ensuring the db_id struct is
unique and non pooled.
Any comments? Good or bad
The code changes are fairly minimal and limited to lib/srdb1: db_id.c,
db_id.h, db.c
Paul
Sent: Tuesday, December 13, 2011 3:53 PM
Subject: Re: [sr-dev] db_fetch_next problem with
Postgres?
On
12/13/11 4:16 PM, Paul Pankhurst wrote:
Thanks for that Daniel.
I modified the db_url for 2nd db so it used the actual IP address of my
db rather than localhost,
nice idea, indeed --
perhaps can be extended to add some custom hostnames pointing to same in local
computer's /etc/hosts, in case one would need more dedicated connection. But it
would be better if APi gets extended.
Cheers,
Daniel
hence it didn’t get pooled, and everything magically worked.
I think I’ll extend the db api, it doesn’t look too difficult to
do.
Paul
Sent: Tuesday, December 13, 2011 12:27 PM
Subject: Re: [sr-dev] db_fetch_next problem with
Postgres?
Hello,
On
12/13/11 1:08 PM, Paul Pankhurst wrote:
should have sent this to list – sorry
Sent: Tuesday, December 13, 2011 12:03 PM
Subject: Re: [sr-dev] db_fetch_next problem with
Postgres?
Hi Daniel,
I have a bit more information...
the outline pseudo code for what I am doing looks like this (removing
non relevant stuff)
db_fetch_query( xcap_db )
do
{
query( another_2nd_db )
} while ( db_fetch_next( xcap_db) )
it is the query to the second database that
breaks everything...if I remove it the problem goes away and db_fetch_next
works as expected.
The access to the 2nd database uses
completely different db_func_t and db1_cont_t structures to the
xcap_db
if
it is the same db_url value, then it results in same db1_con_t pointers, since
the postgres has connection pool inside and matches an old connection for same
db_url when initializing the second one.
Some ideas:
- extend db api
with a new function init_new that will always return a new connection --
requires coding in db modules
- make another database where you add a view
to the table in initial database and work with it for second connection --
should work without touching kamailio code
Cheers,
Daniel
I’ll try running it with extra debug shortly
to see if I can see what’s happening
Paul
Sent: Tuesday, December 13, 2011 11:10 AM
Subject: Re: [sr-dev] db_fetch_next problem with
Postgres?
Hello,
On
12/13/11 11:40 AM, Paul Pankhurst wrote:
I am having problems with the db_fetch_next routine and
Postgres.
I can’t see any problem with my code that calls it, and as far as I
can tell the problem appears to be in the db_postgres_fetch_result
routine.
On the first invocation of db_postgres_fetch_result it
allocates a result structure and gives me the first 5 rows of the 198 that
match my query after calling db_postgres_convert_rows.
On the 2nd invocation it fails to retrieve the next 5 rows because
CON_RESULT(_con) is NULL !
Anyone got any suggestions?
can you
doublecheck and see if you don't call free_result() before fetching the next
rows? If you run with debug=3, if there is a free_result, you should see the
log message from:
LM_DBG("PQclear(%p) result set\n",
CON_RESULT(_con))
Cheers,
Daniel
--
Daniel-Constantin Mierla -- http://www.asipto.com
http://linkedin.com/in/miconda -- http://twitter.com/miconda
_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
--
Daniel-Constantin Mierla -- http://www.asipto.com
http://linkedin.com/in/miconda -- http://twitter.com/miconda
_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
--
Daniel-Constantin Mierla -- http://www.asipto.com
http://linkedin.com/in/miconda -- http://twitter.com/miconda