Thread: Change 'pg_ctl: no server running' Exit Status to 3

Change 'pg_ctl: no server running' Exit Status to 3

From
"Aaron W. Swenson"
Date:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

According to Linux Standard Base Core Specification 3.1 [1], the exit
status should be '3' when the server isn't running.

I've attached a very simple patch that resolves this cosmetic issue,
which applies to all branches.

My initial search regarding other platforms has turned up nil. It looks
like they just check for a zero or non-zero exit status.

As for the necessity of the patch: Gentoo Linux uses pg_ctl in all of
its initscript actions for PostgreSQL. I'd imagine that Gentoo is not
the only distribution that takes advantage of pg_ctl for its initscript
actions.

Sincerely,
    Mr. Aaron W. Swenson

[1]
http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.17 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iF4EAREIAAYFAk3bAO0ACgkQCOhwUhu5AElmsQEAs5rqihVYnglG1l8tiAVE7LZ+
vGq8+YFxRrqlPEt0kQIA/0PIdnf9xlnNewPCZuMRk/uOOeMHBptcDMSTuaWI3QBU
=td0Z
-----END PGP SIGNATURE-----

Attachment

Re: Change 'pg_ctl: no server running' Exit Status to 3

From
Robert Haas
Date:
On Mon, May 23, 2011 at 8:50 PM, Aaron W. Swenson
<aaron.w.swenson@gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> According to Linux Standard Base Core Specification 3.1 [1], the exit
> status should be '3' when the server isn't running.
>
> I've attached a very simple patch that resolves this cosmetic issue,
> which applies to all branches.
>
> My initial search regarding other platforms has turned up nil. It looks
> like they just check for a zero or non-zero exit status.
>
> As for the necessity of the patch: Gentoo Linux uses pg_ctl in all of
> its initscript actions for PostgreSQL. I'd imagine that Gentoo is not
> the only distribution that takes advantage of pg_ctl for its initscript
> actions.

I'd be disinclined to back-patch this as it might break things for
people.  But I see no harm in applying it to master, if nobody
objects...

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


Re: Change 'pg_ctl: no server running' Exit Status to 3

From
Peter Eisentraut
Date:
On mån, 2011-05-23 at 20:50 -0400, Aaron W. Swenson wrote:
> According to Linux Standard Base Core Specification 3.1 [1], the exit
> status should be '3' when the server isn't running.
> 
> I've attached a very simple patch that resolves this cosmetic issue,
> which applies to all branches.

If we're going to make the exit status meaningful, it should probably be
added to the documentation.




Re: Change 'pg_ctl: no server running' Exit Status to 3

From
Bruce Momjian
Date:
Peter Eisentraut wrote:
> On m?n, 2011-05-23 at 20:50 -0400, Aaron W. Swenson wrote:
> > According to Linux Standard Base Core Specification 3.1 [1], the exit
> > status should be '3' when the server isn't running.
> >
> > I've attached a very simple patch that resolves this cosmetic issue,
> > which applies to all branches.
>
> If we're going to make the exit status meaningful, it should probably be
> added to the documentation.

Patch attached and applied, with docs.  I also cleaned up some C
comments, which are not in the attached patch.

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +
diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml
new file mode 100644
index 07836e7..7dc170e
*** a/doc/src/sgml/ref/pg_ctl-ref.sgml
--- b/doc/src/sgml/ref/pg_ctl-ref.sgml
*************** PostgreSQL documentation
*** 205,211 ****
     <option>status</option> mode checks whether a server is running in
     the specified data directory. If it is, the <acronym>PID</acronym>
     and the command line options that were used to invoke it are
!    displayed.
    </para>

    <para>
--- 205,212 ----
     <option>status</option> mode checks whether a server is running in
     the specified data directory. If it is, the <acronym>PID</acronym>
     and the command line options that were used to invoke it are
!    displayed.  If the server is not running, the process returns an
!    exit status of 3.
    </para>

    <para>
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
new file mode 100644
index c9007ed..8e9d2ce
*** a/src/bin/pg_ctl/pg_ctl.c
--- b/src/bin/pg_ctl/pg_ctl.c
*************** do_status(void)
*** 1186,1192 ****
          }
      }
      printf(_("%s: no server running\n"), progname);
!     exit(1);
  }


--- 1188,1198 ----
          }
      }
      printf(_("%s: no server running\n"), progname);
!     /*
!      * The Linux Standard Base Core Specification 3.1 says this should return '3'
!      * http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
!      */
!     exit(3);
  }