Thread: pg_log_backend_memory_contexts() and log level

pg_log_backend_memory_contexts() and log level

From
Fujii Masao
Date:
Hi,

pg_log_backend_memory_contexts() should be designed not to send the messages about the memory contexts to the client
regardlessof client_min_messages. But I found that the message "logging memory contexts of PID %d" can be sent to the
clientbecause it's ereport()'d with LOG level instead of LOG_SERVER_ONLY. Is this a bug, and shouldn't we use
LOG_SERVER_ONLYlevel to log that message? Patch attached.
 

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION
Attachment

Re: pg_log_backend_memory_contexts() and log level

From
Bharath Rupireddy
Date:
On Wed, Jan 26, 2022 at 9:48 AM Fujii Masao <masao.fujii@oss.nttdata.com> wrote:
>
> Hi,
>
> pg_log_backend_memory_contexts() should be designed not to send the messages about the memory contexts to the client
regardlessof client_min_messages. But I found that the message "logging memory contexts of PID %d" can be sent to the
clientbecause it's ereport()'d with LOG level instead of LOG_SERVER_ONLY. Is this a bug, and shouldn't we use
LOG_SERVER_ONLYlevel to log that message? Patch attached. 

+1. The patch LGTM.

The same applies for the on-going patch [1] for pg_log_backtrace, let
me quickly send the updated patch there as well. The pg_log_query_plan
on-going patch [2], does the right thing.

[1] - https://www.postgresql.org/message-id/CALDaNm3tbc1OKvSKvD5SfmEj66M_sWDPCgDvzFtS9gxRov8jRQ%40mail.gmail.com
[2] - https://www.postgresql.org/message-id/fb6360e4c0ffbdd0a6698b92bb2617e2%40oss.nttdata.com

Regards,
Bharath Rupireddy.



Re: pg_log_backend_memory_contexts() and log level

From
Bharath Rupireddy
Date:
On Wed, Jan 26, 2022 at 10:46 AM Bharath Rupireddy
<bharath.rupireddyforpostgres@gmail.com> wrote:
>
> On Wed, Jan 26, 2022 at 9:48 AM Fujii Masao <masao.fujii@oss.nttdata.com> wrote:
> >
> > Hi,
> >
> > pg_log_backend_memory_contexts() should be designed not to send the messages about the memory contexts to the
clientregardless of client_min_messages. But I found that the message "logging memory contexts of PID %d" can be sent
tothe client because it's ereport()'d with LOG level instead of LOG_SERVER_ONLY. Is this a bug, and shouldn't we use
LOG_SERVER_ONLYlevel to log that message? Patch attached. 
>
> +1. The patch LGTM.
>
> The same applies for the on-going patch [1] for pg_log_backtrace, let
> me quickly send the updated patch there as well.
>
> [1] - https://www.postgresql.org/message-id/CALDaNm3tbc1OKvSKvD5SfmEj66M_sWDPCgDvzFtS9gxRov8jRQ%40mail.gmail.com

My bad, the v17 patch of pg_log_backtrace at [1] does emit at LOG_SERVER_ONLY.

Regards,
Bharath Rupireddy.



Re: pg_log_backend_memory_contexts() and log level

From
Bharath Rupireddy
Date:
On Wed, Jan 26, 2022 at 10:46 AM Bharath Rupireddy
<bharath.rupireddyforpostgres@gmail.com> wrote:
>
> On Wed, Jan 26, 2022 at 9:48 AM Fujii Masao <masao.fujii@oss.nttdata.com> wrote:
> >
> > Hi,
> >
> > pg_log_backend_memory_contexts() should be designed not to send the messages about the memory contexts to the
clientregardless of client_min_messages. But I found that the message "logging memory contexts of PID %d" can be sent
tothe client because it's ereport()'d with LOG level instead of LOG_SERVER_ONLY. Is this a bug, and shouldn't we use
LOG_SERVER_ONLYlevel to log that message? Patch attached. 
>
> +1. The patch LGTM.

While we are here, I think it's enough to have the
has_function_privilege, not needed to set role regress_log_memory and
then execute the function as we already have code covering the
function above (SELECT
pg_log_backend_memory_contexts(pg_backend_pid());). Thought?

SELECT has_function_privilege('regress_log_memory',
  'pg_log_backend_memory_contexts(integer)', 'EXECUTE'); -- yes

SET ROLE regress_log_memory;
SELECT pg_log_backend_memory_contexts(pg_backend_pid());
RESET ROLE;

Regards,
Bharath Rupireddy.



Re: pg_log_backend_memory_contexts() and log level

From
torikoshia
Date:
On 2022-01-26 13:17, Fujii Masao wrote:
> Hi,
> 
> pg_log_backend_memory_contexts() should be designed not to send the
> messages about the memory contexts to the client regardless of
> client_min_messages. But I found that the message "logging memory
> contexts of PID %d" can be sent to the client because it's ereport()'d
> with LOG level instead of LOG_SERVER_ONLY. Is this a bug, and
> shouldn't we use LOG_SERVER_ONLY level to log that message? Patch
> attached.
> 
> Regards,

Thanks! I think it's a bug.

There are two clients: "the client that executed 
pg_log_backend_memory_contexts()" and "the client that issued the query 
that was the target of the memory context logging", but I was only 
concerned about the former when I wrote that part of the code.
The latter is not expected.

It seems better to use LOG_SERVER_ONLY as the attached patch.

The patch was successfully applied and there was no regression test 
error on my environment.

-- 
Regards,

--
Atsushi Torikoshi
NTT DATA CORPORATION



Re: pg_log_backend_memory_contexts() and log level

From
Fujii Masao
Date:

On 2022/01/26 14:27, Bharath Rupireddy wrote:
> On Wed, Jan 26, 2022 at 10:46 AM Bharath Rupireddy
> <bharath.rupireddyforpostgres@gmail.com> wrote:
>>
>> On Wed, Jan 26, 2022 at 9:48 AM Fujii Masao <masao.fujii@oss.nttdata.com> wrote:
>>>
>>> Hi,
>>>
>>> pg_log_backend_memory_contexts() should be designed not to send the messages about the memory contexts to the
clientregardless of client_min_messages. But I found that the message "logging memory contexts of PID %d" can be sent
tothe client because it's ereport()'d with LOG level instead of LOG_SERVER_ONLY. Is this a bug, and shouldn't we use
LOG_SERVER_ONLYlevel to log that message? Patch attached.
 
>>
>> +1. The patch LGTM.

Thanks for the review!


> While we are here, I think it's enough to have the
> has_function_privilege, not needed to set role regress_log_memory and
> then execute the function as we already have code covering the
> function above (SELECT
> pg_log_backend_memory_contexts(pg_backend_pid());). Thought?
> 
> SELECT has_function_privilege('regress_log_memory',
>    'pg_log_backend_memory_contexts(integer)', 'EXECUTE'); -- yes
> 
> SET ROLE regress_log_memory;
> SELECT pg_log_backend_memory_contexts(pg_backend_pid());
> RESET ROLE;

Or it's enough to set role and execute the function? Either those or has_function_privilege() can be removed from the
test,but I don't have strong reason to do that for now...
 

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION



Re: pg_log_backend_memory_contexts() and log level

From
Fujii Masao
Date:

On 2022/01/26 14:28, torikoshia wrote:
> On 2022-01-26 13:17, Fujii Masao wrote:
>> Hi,
>>
>> pg_log_backend_memory_contexts() should be designed not to send the
>> messages about the memory contexts to the client regardless of
>> client_min_messages. But I found that the message "logging memory
>> contexts of PID %d" can be sent to the client because it's ereport()'d
>> with LOG level instead of LOG_SERVER_ONLY. Is this a bug, and
>> shouldn't we use LOG_SERVER_ONLY level to log that message? Patch
>> attached.
>>
>> Regards,
> 
> Thanks! I think it's a bug.
> 
> There are two clients: "the client that executed pg_log_backend_memory_contexts()" and "the client that issued the
querythat was the target of the memory context logging", but I was only concerned about the former when I wrote that
partof the code.
 
> The latter is not expected.
> 
> It seems better to use LOG_SERVER_ONLY as the attached patch.
> 
> The patch was successfully applied and there was no regression test error on my environment.

Thanks for the review! So barring any objection, I will commit the patch and backport it to v14 where
pg_log_backend_memory_contexts()is added.
 

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION



Re: pg_log_backend_memory_contexts() and log level

From
Fujii Masao
Date:

On 2022/01/27 12:45, Fujii Masao wrote:
> Thanks for the review! So barring any objection, I will commit the patch and backport it to v14 where
pg_log_backend_memory_contexts()is added.
 

Pushed. Thanks!

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION