agent_init concurrent running question

From: Jov <amutu(at)amutu(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: agent_init concurrent running question
Date: 2014-10-20 07:29:46
Message-ID: CADyrUxOxq6zb+jeM-NUVnfXFy04JKOjRNYy7GNmYP_Fcp90dFw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

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>

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Rushabh Lathia 2014-10-20 07:40:57 Re: alter user/role CURRENT_USER
Previous Message David Rowley 2014-10-20 07:04:47 Re: Typos in comments