agent_init concurrent running question

Started by Jovabout 11 years ago2 messages
#1Jov
amutu@amutu.com

hello,I am reading the pool manager code,and have some problem:

in poolmgr.c function agent_init():

if (agent->pool)

agent_release_connections(agent, false);

......

#ifdef XCP

/* find database */
agent->pool = find_database_pool(database, user_name);
/* create if not found */
if (agent->pool == NULL)
agent->pool = create_database_pool(database, user_name);

in concurrent running,this function with the same dbname and
username,create_database_pool(database, user_name) may be run twice,so
there may be more than one DatabasePool in the databasePools list? But
find_database_pool(database, user_name) will always return the first
find,other may be not used,there may be memory leak?

and why this function call agent_release_connections,and then use
find_database_pool to get a new pool? For concurrent running,is it possible
one agent release the connections which other agent still is in use?

thanks!

Jov
blog: http:amutu.com/blog <http://amutu.com/blog&gt;

#2Michael Paquier
michael.paquier@gmail.com
In reply to: Jov (#1)
Re: agent_init concurrent running question

On Mon, Oct 20, 2014 at 4:29 PM, Jov <amutu@amutu.com> wrote:

in poolmgr.c function agent_init():

This code is part of Postgres-XC (or Postgres-XL) and not PostgreSQL
itself, you should send your questions there:
https://lists.sourceforge.net/lists/listinfo/postgres-xc-developers
Regards,
--
Michael