diff options
| author | Peter Eisentraut | 2020-03-11 15:36:40 +0000 |
|---|---|---|
| committer | Peter Eisentraut | 2020-03-11 15:38:31 +0000 |
| commit | bf68b79e50e3359accc85c94fa23cc03abb9350a (patch) | |
| tree | 0b09b97eec0aa5978ab073e580cf97a51014dd66 /src/backend/postmaster | |
| parent | 899a04f5ed61c3db7a2bd84957ecf530c09fd05a (diff) | |
Refactor ps_status.c API
The init_ps_display() arguments were mostly lies by now, so to match
typical usage, just use one argument and let the caller assemble it
from multiple sources if necessary. The only user of the additional
arguments is BackendInitialize(), which was already doing string
assembly on the caller side anyway.
Remove the second argument of set_ps_display() ("force") and just
handle that in init_ps_display() internally.
BackendInitialize() also used to set the initial status as
"authentication", but that was very far from where authentication
actually happened. So now it's set to "initializing" and then
"authentication" just before the actual call to
ClientAuthentication().
Reviewed-by: Julien Rouhaud <rjuju123@gmail.com>
Reviewed-by: Kuntal Ghosh <kuntalghosh.2007@gmail.com>
Reviewed-by: Alvaro Herrera <alvherre@2ndquadrant.com>
Discussion: https://www.postgresql.org/message-id/flat/c65e5196-4f04-4ead-9353-6088c19615a3@2ndquadrant.com
Diffstat (limited to 'src/backend/postmaster')
| -rw-r--r-- | src/backend/postmaster/autovacuum.c | 6 | ||||
| -rw-r--r-- | src/backend/postmaster/bgworker.c | 2 | ||||
| -rw-r--r-- | src/backend/postmaster/pgarch.c | 8 | ||||
| -rw-r--r-- | src/backend/postmaster/pgstat.c | 2 | ||||
| -rw-r--r-- | src/backend/postmaster/postmaster.c | 32 | ||||
| -rw-r--r-- | src/backend/postmaster/syslogger.c | 2 |
6 files changed, 24 insertions, 28 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index e3a43d32966..a6499fc3da6 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -434,7 +434,7 @@ AutoVacLauncherMain(int argc, char *argv[]) am_autovacuum_launcher = true; /* Identify myself via ps */ - init_ps_display(pgstat_get_backend_desc(B_AUTOVAC_LAUNCHER), "", "", ""); + init_ps_display(pgstat_get_backend_desc(B_AUTOVAC_LAUNCHER)); ereport(DEBUG1, (errmsg("autovacuum launcher started"))); @@ -1507,7 +1507,7 @@ AutoVacWorkerMain(int argc, char *argv[]) am_autovacuum_worker = true; /* Identify myself via ps */ - init_ps_display(pgstat_get_backend_desc(B_AUTOVAC_WORKER), "", "", ""); + init_ps_display(pgstat_get_backend_desc(B_AUTOVAC_WORKER)); SetProcessingMode(InitProcessing); @@ -1680,7 +1680,7 @@ AutoVacWorkerMain(int argc, char *argv[]) */ InitPostgres(NULL, dbid, NULL, InvalidOid, dbname, false); SetProcessingMode(NormalProcessing); - set_ps_display(dbname, false); + set_ps_display(dbname); ereport(DEBUG1, (errmsg("autovacuum: processing database \"%s\"", dbname))); diff --git a/src/backend/postmaster/bgworker.c b/src/backend/postmaster/bgworker.c index 75fc0d5d33f..684250984d4 100644 --- a/src/backend/postmaster/bgworker.c +++ b/src/backend/postmaster/bgworker.c @@ -689,7 +689,7 @@ StartBackgroundWorker(void) IsBackgroundWorker = true; /* Identify myself via ps */ - init_ps_display(worker->bgw_name, "", "", ""); + init_ps_display(worker->bgw_name); /* * If we're not supposed to have shared memory access, then detach from diff --git a/src/backend/postmaster/pgarch.c b/src/backend/postmaster/pgarch.c index 3ca30badb2b..58f54544f60 100644 --- a/src/backend/postmaster/pgarch.c +++ b/src/backend/postmaster/pgarch.c @@ -241,7 +241,7 @@ PgArchiverMain(int argc, char *argv[]) /* * Identify myself via ps */ - init_ps_display("archiver", "", "", ""); + init_ps_display("archiver"); pgarch_MainLoop(); @@ -584,7 +584,7 @@ pgarch_archiveXlog(char *xlog) /* Report archive activity in PS display */ snprintf(activitymsg, sizeof(activitymsg), "archiving %s", xlog); - set_ps_display(activitymsg, false); + set_ps_display(activitymsg); rc = system(xlogarchcmd); if (rc != 0) @@ -634,14 +634,14 @@ pgarch_archiveXlog(char *xlog) } snprintf(activitymsg, sizeof(activitymsg), "failed on %s", xlog); - set_ps_display(activitymsg, false); + set_ps_display(activitymsg); return false; } elog(DEBUG1, "archived write-ahead log file \"%s\"", xlog); snprintf(activitymsg, sizeof(activitymsg), "last was %s", xlog); - set_ps_display(activitymsg, false); + set_ps_display(activitymsg); return true; } diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c index 462b4d7e069..107c9653366 100644 --- a/src/backend/postmaster/pgstat.c +++ b/src/backend/postmaster/pgstat.c @@ -4450,7 +4450,7 @@ PgstatCollectorMain(int argc, char *argv[]) /* * Identify myself via ps */ - init_ps_display("stats collector", "", "", ""); + init_ps_display("stats collector"); /* * Read in existing stats files or initialize the stats to zero. diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c index 55187eb910d..46be78aadbf 100644 --- a/src/backend/postmaster/postmaster.c +++ b/src/backend/postmaster/postmaster.c @@ -4282,7 +4282,7 @@ BackendInitialize(Port *port) int ret; char remote_host[NI_MAXHOST]; char remote_port[NI_MAXSERV]; - char remote_ps_data[NI_MAXHOST]; + StringInfoData ps_data; /* Save port etc. for ps status */ MyProcPort = port; @@ -4346,10 +4346,6 @@ BackendInitialize(Port *port) ereport(WARNING, (errmsg_internal("pg_getnameinfo_all() failed: %s", gai_strerror(ret)))); - if (remote_port[0] == '\0') - snprintf(remote_ps_data, sizeof(remote_ps_data), "%s", remote_host); - else - snprintf(remote_ps_data, sizeof(remote_ps_data), "%s(%s)", remote_host, remote_port); /* * Save remote_host and remote_port in port structure (after this, they @@ -4423,21 +4419,21 @@ BackendInitialize(Port *port) /* * Now that we have the user and database name, we can set the process * title for ps. It's good to do this as early as possible in startup. - * - * For a walsender, the ps display is set in the following form: - * - * postgres: walsender <user> <host> <activity> - * - * To achieve that, we pass "walsender" as username and username as dbname - * to init_ps_display(). XXX: should add a new variant of - * init_ps_display() to avoid abusing the parameters like this. */ + initStringInfo(&ps_data); if (am_walsender) - init_ps_display(pgstat_get_backend_desc(B_WAL_SENDER), port->user_name, remote_ps_data, - update_process_title ? "authentication" : ""); - else - init_ps_display(port->user_name, port->database_name, remote_ps_data, - update_process_title ? "authentication" : ""); + appendStringInfo(&ps_data, "%s ", pgstat_get_backend_desc(B_WAL_SENDER)); + appendStringInfo(&ps_data, "%s ", port->user_name); + if (!am_walsender) + appendStringInfo(&ps_data, "%s ", port->database_name); + appendStringInfo(&ps_data, "%s", port->remote_host); + if (port->remote_port[0] != '\0') + appendStringInfo(&ps_data, "(%s)", port->remote_port); + + init_ps_display(ps_data.data); + pfree(ps_data.data); + + set_ps_display("initializing"); /* * Disable the timeout, and prevent SIGTERM/SIGQUIT again. diff --git a/src/backend/postmaster/syslogger.c b/src/backend/postmaster/syslogger.c index cf7b535e4e3..b394599236f 100644 --- a/src/backend/postmaster/syslogger.c +++ b/src/backend/postmaster/syslogger.c @@ -179,7 +179,7 @@ SysLoggerMain(int argc, char *argv[]) am_syslogger = true; - init_ps_display("logger", "", "", ""); + init_ps_display("logger"); /* * If we restarted, our stderr is already redirected into our own input |
