enable logging of start time/cookie for all backend processes

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема enable logging of start time/cookie for all backend processes
Дата
Msg-id 46ACDD44.7060903@dunslane.net
обсуждение исходный текст
Ответы Re: enable logging of start time/cookie for all backend processes
Re: enable logging of start time/cookie for all backend processes
Список pgsql-patches
The attached patch makes a very small but useful change to the behaviour
of log_line_prefix, by enabling the start time (%s) and cookie (%c)
logging to occur for all backends rather than just for session processes
(i.e. backends started for a client connection). We actually need almost
all of this patch, with or without the change in behaviour, so we can
put the cookie in CSVlogs (which I'm still working on), since the
cookie+line number make the natural primary key for the logs. The actual
change in behaviour from this patch comes from the removal of 2 "if
(MyProcPort)" lines in elog.c. Given that, can I sneak this in or should
I wait for 8.4 given we're long past feature freeze?

Most of this has been factored out (and cleaned up) from my previous
CSVlog patch, so it's not new. I did that so that what is left when I
finish will have a rather smaller footprint, as this part seemed fairly
seperable.

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    29 Jul 2007 18:14:12 -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/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    29 Jul 2007 18:14:14 -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    29 Jul 2007 18:14:15 -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    29 Jul 2007 18:14:17 -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    29 Jul 2007 18:14:19 -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/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    29 Jul 2007 18:14:20 -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    29 Jul 2007 18:14:21 -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    29 Jul 2007 18:14:22 -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    29 Jul 2007 18:14:22 -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 по дате отправления:

Предыдущее
От: Decibel!
Дата:
Сообщение: Re: Repair cosmetic damage (done by pg_indent?)
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: allow CSV quote in NULL