Re: enable logging of start time/cookie for all backend processes - Mailing list pgsql-patches

From Andrew Dunstan
Subject Re: enable logging of start time/cookie for all backend processes
Date
Msg-id 46B11DCF.3000005@dunslane.net
Whole thread Raw
In response to Re: enable logging of start time/cookie for all backend processes  (Alvaro Herrera <alvherre@commandprompt.com>)
List pgsql-patches

Alvaro Herrera wrote:
>
>> My original thought was that it needed to be set anywhere MyProcPid was
>> set. That still seems to make sense, it just looks like I missed a few
>> places, which I should fix.
>>
>
> +1 because of cleanliness, even if some calls turn out to be redundant.
> That was in fact what I initially thought you were doing.
>
>

OK, here's the revised patch.

cheers

andrew
Index: doc/src/sgml/config.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/config.sgml,v
retrieving revision 1.133
diff -c -r1.133 config.sgml
*** doc/src/sgml/config.sgml    24 Jul 2007 04:54:08 -0000    1.133
--- doc/src/sgml/config.sgml    1 Aug 2007 23:51:02 -0000
***************
*** 2861,2867 ****
              <row>
               <entry><literal>%c</literal></entry>
               <entry>Session ID: see below</entry>
!              <entry>yes</entry>
              </row>
              <row>
               <entry><literal>%l</literal></entry>
--- 2861,2867 ----
              <row>
               <entry><literal>%c</literal></entry>
               <entry>Session ID: see below</entry>
!              <entry>no</entry>
              </row>
              <row>
               <entry><literal>%l</literal></entry>
***************
*** 2871,2877 ****
              <row>
               <entry><literal>%s</literal></entry>
               <entry>Session start time stamp</entry>
!              <entry>yes</entry>
              </row>
              <row>
               <entry><literal>%x</literal></entry>
--- 2871,2877 ----
              <row>
               <entry><literal>%s</literal></entry>
               <entry>Session start time stamp</entry>
!              <entry>no</entry>
              </row>
              <row>
               <entry><literal>%x</literal></entry>
Index: src/backend/bootstrap/bootstrap.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/bootstrap/bootstrap.c,v
retrieving revision 1.235
diff -c -r1.235 bootstrap.c
*** src/backend/bootstrap/bootstrap.c    24 Jul 2007 04:54:09 -0000    1.235
--- src/backend/bootstrap/bootstrap.c    1 Aug 2007 23:51:04 -0000
***************
*** 213,218 ****
--- 213,220 ----
       */
      MyProcPid = getpid();

+     MyStartTime = time(NULL);
+
      /*
       * Fire up essential subsystems: error and memory management
       *
Index: src/backend/postmaster/autovacuum.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/autovacuum.c,v
retrieving revision 1.55
diff -c -r1.55 autovacuum.c
*** src/backend/postmaster/autovacuum.c    1 Jul 2007 18:30:54 -0000    1.55
--- src/backend/postmaster/autovacuum.c    1 Aug 2007 23:51:05 -0000
***************
*** 385,390 ****
--- 385,393 ----
      /* reset MyProcPid */
      MyProcPid = getpid();

+     /* record Start Time for logging */
+     MyStartTime = time(NULL);
+
      /* Identify myself via ps */
      init_ps_display("autovacuum launcher process", "", "", "");

***************
*** 1403,1408 ****
--- 1406,1414 ----
      /* reset MyProcPid */
      MyProcPid = getpid();

+     /* record Start Time for logging */
+     MyStartTime = time(NULL);
+
      /* Identify myself via ps */
      init_ps_display("autovacuum worker process", "", "", "");

Index: src/backend/postmaster/pgarch.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/pgarch.c,v
retrieving revision 1.29
diff -c -r1.29 pgarch.c
*** src/backend/postmaster/pgarch.c    10 Feb 2007 14:58:54 -0000    1.29
--- src/backend/postmaster/pgarch.c    1 Aug 2007 23:51:05 -0000
***************
*** 223,228 ****
--- 223,230 ----

      MyProcPid = getpid();        /* reset MyProcPid */

+     MyStartTime = time(NULL);   /* record Start Time for logging */
+
      /*
       * If possible, make this process a group leader, so that the postmaster
       * can signal any child processes too.
Index: src/backend/postmaster/pgstat.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v
retrieving revision 1.161
diff -c -r1.161 pgstat.c
*** src/backend/postmaster/pgstat.c    8 Jul 2007 22:23:16 -0000    1.161
--- src/backend/postmaster/pgstat.c    1 Aug 2007 23:51:07 -0000
***************
*** 2168,2173 ****
--- 2168,2175 ----

      MyProcPid = getpid();        /* reset MyProcPid */

+     MyStartTime = time(NULL);      /* record Start Time for logging */
+
      /*
       * If possible, make this process a group leader, so that the postmaster
       * can signal any child processes too.  (pgstat probably never has
Index: src/backend/postmaster/postmaster.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v
retrieving revision 1.535
diff -c -r1.535 postmaster.c
*** src/backend/postmaster/postmaster.c    24 Jul 2007 04:54:09 -0000    1.535
--- src/backend/postmaster/postmaster.c    1 Aug 2007 23:51:10 -0000
***************
*** 386,391 ****
--- 386,393 ----

      MyProcPid = PostmasterPid = getpid();

+     MyStartTime = time(NULL);
+
      IsPostmasterEnvironment = true;

      /*
***************
*** 1103,1108 ****
--- 1105,1112 ----

      MyProcPid = PostmasterPid = getpid();        /* reset PID vars to child */

+     MyStartTime = time(NULL);
+
  /* GH: If there's no setsid(), we hopefully don't need silent mode.
   * Until there's a better solution.
   */
***************
*** 2661,2666 ****
--- 2665,2672 ----

          MyProcPid = getpid();    /* reset MyProcPid */

+         MyStartTime = time(NULL);
+
          /* We don't want the postmaster's proc_exit() handlers */
          on_exit_reset();

***************
*** 2803,2809 ****

      /* save process start time */
      port->SessionStartTime = GetCurrentTimestamp();
!     port->session_start = timestamptz_to_time_t(port->SessionStartTime);

      /* set these to empty in case they are needed before we set them up */
      port->remote_host = "";
--- 2809,2815 ----

      /* save process start time */
      port->SessionStartTime = GetCurrentTimestamp();
!     MyStartTime = timestamptz_to_time_t(port->SessionStartTime);

      /* set these to empty in case they are needed before we set them up */
      port->remote_host = "";
***************
*** 3385,3390 ****
--- 3391,3398 ----

      MyProcPid = getpid();        /* reset MyProcPid */

+     MyStartTime = time(NULL);
+
      /* Lose the postmaster's on-exit routines (really a no-op) */
      on_exit_reset();

Index: src/backend/postmaster/syslogger.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/postmaster/syslogger.c,v
retrieving revision 1.33
diff -c -r1.33 syslogger.c
*** src/backend/postmaster/syslogger.c    19 Jul 2007 19:13:43 -0000    1.33
--- src/backend/postmaster/syslogger.c    1 Aug 2007 23:51:10 -0000
***************
*** 162,167 ****
--- 162,169 ----

      MyProcPid = getpid();        /* reset MyProcPid */

+     MyStartTime = time(NULL);   /* set our start time in case we call elog */
+
  #ifdef EXEC_BACKEND
      syslogger_parseArgs(argc, argv);
  #endif   /* EXEC_BACKEND */
Index: src/backend/tcop/postgres.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/tcop/postgres.c,v
retrieving revision 1.536
diff -c -r1.536 postgres.c
*** src/backend/tcop/postgres.c    9 Jul 2007 01:15:14 -0000    1.536
--- src/backend/tcop/postgres.c    1 Aug 2007 23:51:13 -0000
***************
*** 2786,2791 ****
--- 2786,2793 ----
       */
      MyProcPid = getpid();

+     MyStartTime = time(NULL);
+
      /*
       * Fire up essential subsystems: error and memory management
       *
Index: src/backend/utils/error/elog.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/error/elog.c,v
retrieving revision 1.190
diff -c -r1.190 elog.c
*** src/backend/utils/error/elog.c    21 Jul 2007 22:12:04 -0000    1.190
--- src/backend/utils/error/elog.c    1 Aug 2007 23:51:14 -0000
***************
*** 1485,1496 ****
                  }
                  break;
              case 'c':
!                 if (MyProcPort)
!                 {
!                     appendStringInfo(buf, "%lx.%x",
!                                      (long) (MyProcPort->session_start),
!                                      MyProcPid);
!                 }
                  break;
              case 'p':
                  appendStringInfo(buf, "%d", MyProcPid);
--- 1485,1491 ----
                  }
                  break;
              case 'c':
!                 appendStringInfo(buf, "%lx.%x", (long)(MyStartTime),MyProcPid);
                  break;
              case 'p':
                  appendStringInfo(buf, "%d", MyProcPid);
***************
*** 1552,1558 ****
                  }
                  break;
              case 's':
-                 if (MyProcPort)
                  {
                      char        strfbuf[128];

--- 1547,1552 ----
***************
*** 1563,1569 ****
  #else
                               "%Y-%m-%d %H:%M:%S",
  #endif
!                              localtime(&MyProcPort->session_start));
                      appendStringInfoString(buf, strfbuf);
                  }
                  break;
--- 1557,1563 ----
  #else
                               "%Y-%m-%d %H:%M:%S",
  #endif
!                              localtime(&MyStartTime));
                      appendStringInfoString(buf, strfbuf);
                  }
                  break;
Index: src/backend/utils/init/globals.c
===================================================================
RCS file: /cvsroot/pgsql/src/backend/utils/init/globals.c,v
retrieving revision 1.101
diff -c -r1.101 globals.c
*** src/backend/utils/init/globals.c    16 Apr 2007 18:29:54 -0000    1.101
--- src/backend/utils/init/globals.c    1 Aug 2007 23:51:14 -0000
***************
*** 33,38 ****
--- 33,39 ----
  volatile uint32 CritSectionCount = 0;

  int            MyProcPid;
+ time_t      MyStartTime;
  struct Port *MyProcPort;
  long        MyCancelKey;

Index: src/include/miscadmin.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/miscadmin.h,v
retrieving revision 1.195
diff -c -r1.195 miscadmin.h
*** src/include/miscadmin.h    25 Jul 2007 12:22:53 -0000    1.195
--- src/include/miscadmin.h    1 Aug 2007 23:51:15 -0000
***************
*** 23,28 ****
--- 23,30 ----
  #ifndef MISCADMIN_H
  #define MISCADMIN_H

+ #include <time.h> /* for time_t */
+

  #define PG_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n"

***************
*** 132,137 ****
--- 134,140 ----
  extern int    MaxConnections;

  extern PGDLLIMPORT int MyProcPid;
+ extern PGDLLIMPORT time_t MyStartTime;
  extern PGDLLIMPORT struct Port *MyProcPort;
  extern long MyCancelKey;

Index: src/include/libpq/libpq-be.h
===================================================================
RCS file: /cvsroot/pgsql/src/include/libpq/libpq-be.h,v
retrieving revision 1.62
diff -c -r1.62 libpq-be.h
*** src/include/libpq/libpq-be.h    23 Jul 2007 10:16:54 -0000    1.62
--- src/include/libpq/libpq-be.h    1 Aug 2007 23:51:16 -0000
***************
*** 130,136 ****
       * other members of this struct, we may as well keep it here.
       */
      TimestampTz SessionStartTime;        /* backend start time */
-     time_t        session_start;    /* same, in time_t format */

      /*
       * TCP keepalive settings.
--- 130,135 ----

pgsql-patches by date:

Previous
From: Neil Conway
Date:
Subject: Memory leak in tuplestore_end()
Next
From: Alvaro Herrera
Date:
Subject: Re: enable logging of start time/cookie for all backend processes