Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jzln9-0003jv-JI for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Jul 2020 18:54:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jzln8-00086M-Dm for pgsql-hackers@arkaria.postgresql.org; Sun, 26 Jul 2020 18:54:34 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jzln7-00086E-Tg for pgsql-hackers@lists.postgresql.org; Sun, 26 Jul 2020 18:54:34 +0000 Received: from mail-io1-xd33.google.com ([2607:f8b0:4864:20::d33]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jzln5-0002rh-2x for pgsql-hackers@postgresql.org; Sun, 26 Jul 2020 18:54:32 +0000 Received: by mail-io1-xd33.google.com with SMTP id j8so2409715ioe.9 for ; Sun, 26 Jul 2020 11:54:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=telsasoft-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=u8CkFjO4rhiber4c8UMzQ3ZHqjlCXrXgaVjtHybRdR0=; b=EpuF6SBHXX7aBaUxOk1gHsSwpBgzZAZi/rGKIN6wsAn7XP0OjykUgBLEjkOb6zkE+q jCKbZoK9BVIA/lfDiIFbKzB0WvwX0xaC407wlW9MOjgcX5MJDyrAZwvm0GOLXxtEK3dn 2hm5y8QFjyQxoJXfkkq1A/LrgbCeJ+vZ9TXIlADeIbXk1SBT9arzf9wEUbPzSwJc1U5A WTXH7h+RL4xW6+NjAiWuA5ChFyLISUS1f5/w6ncmionYspVrLu2csuIt3TQgOv8/7+dg wC6pPIv/51XdZ2ekuGDg4sqZmuUzVIh/n2MJEF+s9tTGglrz1i0XdaOcI/RAeReuqku2 ovZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=u8CkFjO4rhiber4c8UMzQ3ZHqjlCXrXgaVjtHybRdR0=; b=kA4krewfiTVmC7IGG56yelVhV3cw/cfsJkwCIt5mmzFAIVEoDZIS+iOt487cZog7mG LV5k0bqkpaFkF9IrQ5rHDi9Z6XQ5awhauEvNY/whsONFC/IDBB4eXLhANRHUtkvLsXfn 8+zPD3WkAAJusrztvGQz/wIPTEYc1fsStgLSEe8M7qpdb9jDZiK45XPx3Xm/Z+itNkwX oRXim+vxs5uFYUqcA09vAs4IKTgk4OclJtU61NL5FrIOAWlfEH4+lp4HlObVjDeG9w+6 ZmWlNM+52nLlNMKmXUstDXQFgf4pAS0w2EvzCBJr0/ibEbF2ESgPBGClfSjXDB3tu88v oK/g== X-Gm-Message-State: AOAM531oULjlX0VwRl+iKhxvyzL16GdMNEkt/UbOjMQyssHnazOmbv/d XSoc1XMSxxXlFHgaLuo56YDzGQ== X-Google-Smtp-Source: ABdhPJyAq6VHAeP/glPwKmgLHSlCOFouGM+N+4ksOwXMcRsRLXqp2Okn+v49Du15/wgZxJfDifyWOA== X-Received: by 2002:a5d:954f:: with SMTP id a15mr20699144ios.53.1595789670444; Sun, 26 Jul 2020 11:54:30 -0700 (PDT) Received: from pryzbyj.telsasoft (charmander.telsasoft.com. [50.244.222.1]) by smtp.gmail.com with ESMTPSA id c16sm6991072ilh.54.2020.07.26.11.54.28 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Jul 2020 11:54:29 -0700 (PDT) Received: by pryzbyj.telsasoft (Postfix, from userid 1000) id F07E8800161; Sun, 26 Jul 2020 13:54:27 -0500 (CDT) Date: Sun, 26 Jul 2020 13:54:27 -0500 From: Justin Pryzby To: Michael Paquier Cc: Alvaro Herrera , Julien Rouhaud , Tomas Vondra , pgsql-hackers@postgresql.org Subject: Re: expose parallel leader in CSV and log_line_prefix Message-ID: <20200726185427.GI4286@telsasoft.com> References: <20200721043325.GC17300@paquier.xyz> <20200722153605.GA961@alvherre.pgsql> <20200723005214.GD26630@paquier.xyz> <20200726074206.GB4351@paquier.xyz> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="eJnRUKwClWJh1Khz" Content-Disposition: inline In-Reply-To: <20200726074206.GB4351@paquier.xyz> User-Agent: Mutt/1.9.4 (2018-02-28) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --eJnRUKwClWJh1Khz Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, Jul 26, 2020 at 04:42:06PM +0900, Michael Paquier wrote: > On Thu, Jul 23, 2020 at 09:52:14AM +0900, Michael Paquier wrote: > > Sounds fine to me. Thanks. > > > > Do others have any objections with this wording? > > I have used the wording suggested by Alvaro, and applied the patch > down to 13. Now let's see about the original item of this thread.. Updated with updated wording to avoid "null", per Tom. -- Justin --eJnRUKwClWJh1Khz Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="v3-0001-Include-the-leader-PID-in-logfile.patch" From 665c9ea8827d4ad94ea0100c5ba93dbf05db5943 Mon Sep 17 00:00:00 2001 From: Justin Pryzby Date: Fri, 13 Mar 2020 22:03:06 -0500 Subject: [PATCH v3] Include the leader PID in logfile See also: b025f32e0b, which adds the leader PID to pg_stat_activity --- doc/src/sgml/config.sgml | 10 ++++++- src/backend/utils/error/elog.c | 30 +++++++++++++++++++ src/backend/utils/misc/postgresql.conf.sample | 1 + 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index e806b13754..c525a0fd15 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -6687,6 +6687,13 @@ local0.* /var/log/postgresql Process ID no + + %P + For a parallel worker, this is the Process ID of its leader + process. + + no + %t Time stamp without milliseconds @@ -7019,7 +7026,7 @@ log_line_prefix = '%m [%p] %q%u@%d/%a ' character count of the error position therein, location of the error in the PostgreSQL source code (if log_error_verbosity is set to verbose), - application name, and backend type. + application name, backend type, and leader PID. Here is a sample table definition for storing CSV-format log output: @@ -7049,6 +7056,7 @@ CREATE TABLE postgres_log location text, application_name text, backend_type text, + leader_pid integer, PRIMARY KEY (session_id, session_line_num) ); diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index e4b717c79a..3055b72c01 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -77,6 +77,7 @@ #include "postmaster/syslogger.h" #include "storage/ipc.h" #include "storage/proc.h" +#include "storage/procarray.h" #include "tcop/tcopprot.h" #include "utils/guc.h" #include "utils/memutils.h" @@ -2448,6 +2449,25 @@ log_line_prefix(StringInfo buf, ErrorData *edata) else appendStringInfo(buf, "%d", MyProcPid); break; + + case 'P': + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader == NULL || leader->pid == MyProcPid) + /* padding only */ + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + else if (padding != 0) + appendStringInfo(buf, "%*d", padding, leader->pid); + else + appendStringInfo(buf, "%d", leader->pid); + } + else if (padding != 0) + appendStringInfoSpaces(buf, + padding > 0 ? padding : -padding); + break; + case 'l': if (padding != 0) appendStringInfo(buf, "%*ld", padding, log_line_number); @@ -2836,6 +2856,16 @@ write_csvlog(ErrorData *edata) else appendCSVLiteral(&buf, GetBackendTypeDesc(MyBackendType)); + appendStringInfoChar(&buf, ','); + + /* leader PID */ + if (MyProc) + { + PGPROC *leader = MyProc->lockGroupLeader; + if (leader && leader->pid != MyProcPid) + appendStringInfo(&buf, "%d", leader->pid); + } + appendStringInfoChar(&buf, '\n'); /* If in the syslogger process, try to write messages direct to file */ diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index aa30291ea3..55c2e23c47 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -536,6 +536,7 @@ # %h = remote host # %b = backend type # %p = process ID + # %P = leader PID # %t = timestamp without milliseconds # %m = timestamp with milliseconds # %n = timestamp with milliseconds (as a Unix epoch) -- 2.17.0 --eJnRUKwClWJh1Khz--