From 8135c2ef90d27cd2ab9608694b781e3a3d99baf6 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Wed, 29 Feb 2012 16:30:42 +0100 Subject: [PATCH 1/2] Exists should close connection Otherwise template1 is not released and new databases may not be created --- database/libraries/provider_database_postgresql_user.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/database/libraries/provider_database_postgresql_user.rb b/database/libraries/provider_database_postgresql_user.rb index 7324adb88..c0915f512 100644 --- a/database/libraries/provider_database_postgresql_user.rb +++ b/database/libraries/provider_database_postgresql_user.rb @@ -69,7 +69,12 @@ def action_grant private def exists? - db("template1").query("select * from pg_user where usename='#{@new_resource.username}'").num_tuples != 0 + begin + exists = db("template1").query("select * from pg_user where usename='#{@new_resource.username}'").num_tuples != 0 + ensure + close + end + exists end end From 7a135ce1fca06a3d1ad1b100febcabe808892943 Mon Sep 17 00:00:00 2001 From: Arthur Gautier Date: Thu, 1 Mar 2012 11:58:01 +0100 Subject: [PATCH 2/2] Need to close template1 connection --- database/libraries/provider_database_postgresql.rb | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/database/libraries/provider_database_postgresql.rb b/database/libraries/provider_database_postgresql.rb index 7721d87a6..1177d1f83 100644 --- a/database/libraries/provider_database_postgresql.rb +++ b/database/libraries/provider_database_postgresql.rb @@ -84,10 +84,14 @@ def action_query private def exists? - Chef::Log.debug("#{@new_resource}: checking if database #{@new_resource.database_name} exists") - ret = db("template1").query("select * from pg_database where datname = '#{@new_resource.database_name}'").num_tuples != 0 - ret ? Chef::Log.debug("#{@new_resource}: database #{@new_resource.database_name} exists") : - Chef::Log.debug("#{@new_resource}: database #{@new_resource.database_name} does not exist") + begin + Chef::Log.debug("#{@new_resource}: checking if database #{@new_resource.database_name} exists") + ret = db("template1").query("select * from pg_database where datname = '#{@new_resource.database_name}'").num_tuples != 0 + ret ? Chef::Log.debug("#{@new_resource}: database #{@new_resource.database_name} exists") : + Chef::Log.debug("#{@new_resource}: database #{@new_resource.database_name} does not exist") + ensure + close + end ret end