Hi Fujii,

Please review the latest patch.

> Could you add descriptions for postgres_fdw_get_connections()?
Done.

>  how about verifying it against pg_stat_activity?
Yes. This approach will make tests more reliable. Updated.

On Fri, Feb 21, 2025 at 8:15 AM Fujii Masao <masao.fu...@oss.nttdata.com> wrote:
>
>
>
> On 2025/02/21 0:54, Sagar Shedge wrote:
> > Hi Fujii,
> >
> >> Naming is always tricky, but remote_backend_pid feels a bit too long.
> > Would remote_pid be sufficient?
> > Point looks valid. I had another perspective is to align the naming
> > convention to pg_backend_pid(). remote_pid is not helping to identify
> > whether pid belongs to postgres backend or not. Does this make sense?
> > Or I'm fine to go with concise name like `remote_pid`
>
> I initially thought "remote_pid" was sufficient since the postgres_fdw
> connection clearly corresponds to a backend process. However, I'm fine
> with keeping "remote_backend_pid" as the column name for now. If we find
> a better name later, we can rename it.
>
>
> >> How about: "PID of the remote backend handling the connection" instead?
> > Updated in v2.
>
> Thanks for updating the patch!
>
> You still need to update the documentation. Could you add descriptions
> for postgres_fdw_get_connections()?
>
>
> >> Wouldn't it be better to return the result of PQbackendPID() instead of 
> >> NULL
> > even when the connection is closed, for debugging purposes? This way,
> > users can see which remote backend previously handled the "closed" 
> > connection,
> > which might be helpful for troubleshooting.
> > Agree. Updated logic to return backend pid always except when pid is 0
> > which indicates no backend attached to session. Returning 0 found
> > misleading. What's your thought on this?
>
> Your approach makes sense to me.
>
>
> >> The postgres_fdw regression test failed on my MacBook with the following 
> >> diff:
> > I updated tests to make it more stable. Let me know if it's still
> > failing on your setup.
>
> Yes, the regression test passed successfully on my machine.
>
>
> --- dropped.
> -SELECT server_name, user_name = CURRENT_USER as "user_name = CURRENT_USER", 
> valid, used_in_xact, closed
> +-- dropped. remote_backend_pid will continue to return available as it fetch 
> remote
> +-- server backend pid from cached connections.
> +SELECT server_name, user_name = CURRENT_USER as "user_name = CURRENT_USER", 
> valid, used_in_xact, closed,
> +CASE WHEN remote_backend_pid IS NOT NULL then 'available' ELSE 'not 
> available' END AS remote_backend_pid
>
> Instead of checking whether remote_backend_pid is NOT NULL, how about
> verifying that it actually matches a remote backend's PID? For example:
>
>      remote_backend_pid = ANY(SELECT pid FROM pg_stat_activity WHERE 
> backend_type = 'client backend' AND pid <> pg_backend_pid()) AS 
> "remote_backend_pid = remote pg_stat_activity.pid"
>
>
> -SELECT CASE WHEN closed IS NOT true THEN 1 ELSE 0 END
> +SELECT server_name, CASE WHEN closed IS NOT true THEN 'false' ELSE 'true' 
> END AS remote_conn_closed,
> +CASE WHEN remote_backend_pid IS NOT NULL then 'available' ELSE 'not 
> available' END AS remote_backend_pid
>
> Similarly, instead of checking if remote_backend_pid is NOT NULL,
> how about verifying it against pg_stat_activity?
>
>      remote_backend_pid = (SELECT pid FROM pg_stat_activity WHERE 
> application_name = 'fdw_conn_check')
>
> Regards,
>
> --
> Fujii Masao
> Advanced Computing Technology Center
> Research and Development Headquarters
> NTT DATA CORPORATION
>


--
Sagar Dilip Shedge,
SDE AWS

Attachment: v03_add_remote_backend_pid.patch
Description: Binary data

Reply via email to