On Tue, Dec 19, 2017 at 11:50 PM, David Steele <da...@pgmasters.net> wrote: > On 12/19/17 4:56 AM, Magnus Hagander wrote: >> AFAICT, base backups running on the replication protocol are always >> reported as "idle" in pg_stat_activity. This seems to have been an >> oversight in the "include walsender backends in pg_stat_activity" in 10, >> which does include it for walsenders in general, just not for the ones >> sending base backups. (and was then improved on later with the "include >> all non-standard backends" patch). >> >> Unlike the regular walsender it also has to set it back to IDLE, since >> you can actually finish a base backup without disconnecting. >> >> PFA a patch that fixes this. I think this is bugfix-for-backpatch, I >> don't think it has a large risk of breaking things. Thoughts? > > +1 for this being a bug, albeit a minor one.
+1 for adding calls to pgstat_report_activity() in WAL senders and tracking the activity of those processes. Now I don't think that this is the correct location as what matters is tracking if replication commands are running or not, and not only BASE_BACKUP. So those calls should be instead in exec_replication_command(). >> Also, in setting this, there is no real way to differentiate between a >> regular walsender and a basebackup walsender, other than looking at the >> wait events. They're both listed as walsenders. Should there be? (That >> might not be as easily backpatchable, so keeping that as a separate one) > > Maybe something like "walsender [backup]" or just "basebackup" since > walsender is pretty misleading? It think it would be nice to be able to > tell them apart, though I don't think it should be back-patched. People > might be relying on the name in the current versions. You can already do a join with pg_stat_replication.pid and look for the WAL sender state which is marked as "backup" in this case. So I am -1 for making the current code more complicated. Please note as well that pg_stat_activity.backend_type is set depending on the process type, not based on what the process is doing so you would need to invent a new logic. -- Michael