[postgresql] upgrade: stop old server in case of permissions problem
Pavel Raiskup
praiskup at fedoraproject.org
Thu Aug 15 05:42:09 UTC 2013
commit f9f152f08e77b8925ecf024991b6abecacda50a5
Author: Pavel Raiskup <praiskup at redhat.com>
Date: Thu Aug 15 07:41:09 2013 +0200
upgrade: stop old server in case of permissions problem
Version: 9.2.4-11
Resolves: #896161
postgresql-9.2.4-upgrade-and-perm-problems.patch | 54 ++++++++++++++++++++++
postgresql.spec | 14 +++++-
2 files changed, 67 insertions(+), 1 deletions(-)
---
diff --git a/postgresql-9.2.4-upgrade-and-perm-problems.patch b/postgresql-9.2.4-upgrade-and-perm-problems.patch
new file mode 100644
index 0000000..4cdcc77
--- /dev/null
+++ b/postgresql-9.2.4-upgrade-and-perm-problems.patch
@@ -0,0 +1,54 @@
+diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c
+index c5ecb84..a519a9e 100644
+--- a/contrib/pg_upgrade/server.c
++++ b/contrib/pg_upgrade/server.c
+@@ -166,7 +166,6 @@ static void
+ stop_postmaster_atexit(void)
+ {
+ stop_postmaster(true);
+-
+ }
+
+
+@@ -235,7 +234,23 @@ start_postmaster(ClusterInfo *cluster)
+ false,
+ "%s", cmd);
+
+- /* Check to see if we can connect to the server; if not, report it. */
++ /*
++ * We set this here to make sure atexit() shuts down the server,
++ * but only if we started the server successfully. We do it
++ * before checking for connectivity in case the server started but
++ * there is a connectivity failure. If pg_ctl did not return success,
++ * we will exit below.
++ */
++ if (pg_ctl_return)
++ os_info.running_cluster = cluster;
++
++ /*
++ * pg_ctl -w might have failed because the server couldn't be started,
++ * or there might have been a connection problem in _checking_ if the
++ * server has started. Therefore, even if pg_ctl failed, we continue
++ * and test for connectivity in case we get a connection reason for the
++ * failure.
++ */
+ if ((conn = get_db_conn(cluster, "template1")) == NULL ||
+ PQstatus(conn) != CONNECTION_OK)
+ {
+@@ -249,12 +264,13 @@ start_postmaster(ClusterInfo *cluster)
+ }
+ PQfinish(conn);
+
+- /* If the connection didn't fail, fail now */
++ /*
++ * If pg_ctl failed, and the connection didn't fail, fail now. This
++ * could happen if the server was already running.
++ */
+ if (!pg_ctl_return)
+ pg_log(PG_FATAL, "pg_ctl failed to start the %s server, or connection failed\n",
+ CLUSTER_NAME(cluster));
+-
+- os_info.running_cluster = cluster;
+ }
+
+
diff --git a/postgresql.spec b/postgresql.spec
index e4a8108..c74b933 100644
--- a/postgresql.spec
+++ b/postgresql.spec
@@ -60,7 +60,7 @@ Summary: PostgreSQL client programs
Name: postgresql
%global majorversion 9.2
Version: 9.2.4
-Release: 10%{?dist}
+Release: 11%{?dist}
# The PostgreSQL license is very similar to other MIT licenses, but the OSI
# recognizes it as an independent license, so we do as well.
@@ -118,6 +118,14 @@ Patch9: postgresql-9.2.4-perl-5.18.patch
Patch10: postgresql-9.2.4-aarch64-atomic.patch
Patch11: postgresql-9.2.4-aarch64-atomic-upgrade.patch
+# When user complicates access of 'postgres' user to the database, the
+# pg_upgrade can left the old server running - and re-run of pg_upgrade thus
+# does not help. This patch stops the server in described scenario properly.
+# ~> not yet upstream, patch by Bruce Momjian:
+# ~> http://www.postgresql.org/message-id/20130812193347.GD12510@momjian.us
+# ~> #896161
+Patch12: postgresql-9.2.4-upgrade-and-perm-problems.patch
+
BuildRequires: perl(ExtUtils::MakeMaker) glibc-devel bison flex gawk
BuildRequires: perl(ExtUtils::Embed), perl-devel
BuildRequires: readline-devel zlib-devel
@@ -347,6 +355,7 @@ benchmarks.
%patch8 -p1
%patch9 -p1
%patch10 -p1
+%patch12 -p1
# We used to run autoconf here, but there's no longer any real need to,
# since Postgres ships with a reasonably modern configure script.
@@ -1128,6 +1137,9 @@ fi
%endif
%changelog
+* Thu Aug 15 2013 Pavel Raiskup <praiskup at redhat.com> - 9.2.4-11
+- upgrade: stop old server in case of permissions problem (#896161)
+
* Mon Aug 12 2013 Pavel Raiskup <praiskup at redhat.com> - 9.2.4-10
- disable aggressive loop optimizations for old codebase (#993532)
More information about the scm-commits
mailing list