aboutsummaryrefslogtreecommitdiff
path: root/src/backend/postmaster/pgstat.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/postmaster/pgstat.c')
-rw-r--r--src/backend/postmaster/pgstat.c144
1 files changed, 73 insertions, 71 deletions
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 5a82132a316..1641694f122 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -13,7 +13,7 @@
*
* Copyright (c) 2001-2004, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.79 2004/08/29 04:12:46 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/postmaster/pgstat.c,v 1.80 2004/08/29 05:06:46 momjian Exp $
* ----------
*/
#include "postgres.h"
@@ -70,8 +70,8 @@
#define PGSTAT_DESTROY_DELAY 10000 /* How long to keep destroyed
* objects known, to give delayed
- * UDP packets time to arrive;
- * in milliseconds. */
+ * UDP packets time to arrive; in
+ * milliseconds. */
#define PGSTAT_DESTROY_COUNT (PGSTAT_DESTROY_DELAY / PGSTAT_STAT_INTERVAL)
@@ -108,7 +108,7 @@ bool pgstat_collect_blocklevel = false;
* Local data
* ----------
*/
-NON_EXEC_STATIC int pgStatSock = -1;
+NON_EXEC_STATIC int pgStatSock = -1;
static int pgStatPipe[2];
static struct sockaddr_storage pgStatAddr;
@@ -147,11 +147,10 @@ typedef enum STATS_PROCESS_TYPE
{
STAT_PROC_BUFFER,
STAT_PROC_COLLECTOR
-} STATS_PROCESS_TYPE;
+} STATS_PROCESS_TYPE;
static pid_t pgstat_forkexec(STATS_PROCESS_TYPE procType);
static void pgstat_parseArgs(int argc, char *argv[]);
-
#endif
NON_EXEC_STATIC void PgstatBufferMain(int argc, char *argv[]);
@@ -203,10 +202,10 @@ pgstat_init(void)
*addr,
hints;
int ret;
- fd_set rset;
+ fd_set rset;
struct timeval tv;
- char test_byte;
- int sel_res;
+ char test_byte;
+ int sel_res;
#define TESTBYTEVAL ((char) 199)
@@ -219,10 +218,11 @@ pgstat_init(void)
pgstat_collect_startcollector = true;
/*
- * Initialize the filename for the status reports. (In the EXEC_BACKEND
- * case, this only sets the value in the postmaster. The collector
- * subprocess will recompute the value for itself, and individual
- * backends must do so also if they want to access the file.)
+ * Initialize the filename for the status reports. (In the
+ * EXEC_BACKEND case, this only sets the value in the postmaster. The
+ * collector subprocess will recompute the value for itself, and
+ * individual backends must do so also if they want to access the
+ * file.)
*/
snprintf(pgStat_fname, MAXPGPATH, PGSTAT_STAT_FILENAME, DataDir);
@@ -261,11 +261,11 @@ pgstat_init(void)
/*
* On some platforms, getaddrinfo_all() may return multiple addresses
- * only one of which will actually work (eg, both IPv6 and IPv4 addresses
- * when kernel will reject IPv6). Worse, the failure may occur at the
- * bind() or perhaps even connect() stage. So we must loop through the
- * results till we find a working combination. We will generate LOG
- * messages, but no error, for bogus combinations.
+ * only one of which will actually work (eg, both IPv6 and IPv4
+ * addresses when kernel will reject IPv6). Worse, the failure may
+ * occur at the bind() or perhaps even connect() stage. So we must
+ * loop through the results till we find a working combination. We
+ * will generate LOG messages, but no error, for bogus combinations.
*/
for (addr = addrs; addr; addr = addr->ai_next)
{
@@ -274,6 +274,7 @@ pgstat_init(void)
if (addr->ai_family == AF_UNIX)
continue;
#endif
+
/*
* Create the socket.
*/
@@ -286,8 +287,8 @@ pgstat_init(void)
}
/*
- * Bind it to a kernel assigned port on localhost and get the assigned
- * port via getsockname().
+ * Bind it to a kernel assigned port on localhost and get the
+ * assigned port via getsockname().
*/
if (bind(pgStatSock, addr->ai_addr, addr->ai_addrlen) < 0)
{
@@ -300,7 +301,7 @@ pgstat_init(void)
}
alen = sizeof(pgStatAddr);
- if (getsockname(pgStatSock, (struct sockaddr *) &pgStatAddr, &alen) < 0)
+ if (getsockname(pgStatSock, (struct sockaddr *) & pgStatAddr, &alen) < 0)
{
ereport(LOG,
(errcode_for_socket_access(),
@@ -311,12 +312,12 @@ pgstat_init(void)
}
/*
- * Connect the socket to its own address. This saves a few cycles by
- * not having to respecify the target address on every send. This also
- * provides a kernel-level check that only packets from this same
- * address will be received.
+ * Connect the socket to its own address. This saves a few cycles
+ * by not having to respecify the target address on every send.
+ * This also provides a kernel-level check that only packets from
+ * this same address will be received.
*/
- if (connect(pgStatSock, (struct sockaddr *) &pgStatAddr, alen) < 0)
+ if (connect(pgStatSock, (struct sockaddr *) & pgStatAddr, alen) < 0)
{
ereport(LOG,
(errcode_for_socket_access(),
@@ -329,8 +330,8 @@ pgstat_init(void)
/*
* Try to send and receive a one-byte test message on the socket.
* This is to catch situations where the socket can be created but
- * will not actually pass data (for instance, because kernel packet
- * filtering rules prevent it).
+ * will not actually pass data (for instance, because kernel
+ * packet filtering rules prevent it).
*/
test_byte = TESTBYTEVAL;
if (send(pgStatSock, &test_byte, 1, 0) != 1)
@@ -344,9 +345,9 @@ pgstat_init(void)
}
/*
- * There could possibly be a little delay before the message can be
- * received. We arbitrarily allow up to half a second before deciding
- * it's broken.
+ * There could possibly be a little delay before the message can
+ * be received. We arbitrarily allow up to half a second before
+ * deciding it's broken.
*/
for (;;) /* need a loop to handle EINTR */
{
@@ -354,7 +355,7 @@ pgstat_init(void)
FD_SET(pgStatSock, &rset);
tv.tv_sec = 0;
tv.tv_usec = 500000;
- sel_res = select(pgStatSock+1, &rset, NULL, NULL, &tv);
+ sel_res = select(pgStatSock + 1, &rset, NULL, NULL, &tv);
if (sel_res >= 0 || errno != EINTR)
break;
}
@@ -362,7 +363,7 @@ pgstat_init(void)
{
ereport(LOG,
(errcode_for_socket_access(),
- errmsg("select() failed in statistics collector: %m")));
+ errmsg("select() failed in statistics collector: %m")));
closesocket(pgStatSock);
pgStatSock = -1;
continue;
@@ -370,8 +371,8 @@ pgstat_init(void)
if (sel_res == 0 || !FD_ISSET(pgStatSock, &rset))
{
/*
- * This is the case we actually think is likely, so take pains to
- * give a specific message for it.
+ * This is the case we actually think is likely, so take pains
+ * to give a specific message for it.
*
* errno will not be set meaningfully here, so don't use it.
*/
@@ -395,7 +396,7 @@ pgstat_init(void)
continue;
}
- if (test_byte != TESTBYTEVAL) /* strictly paranoia ... */
+ if (test_byte != TESTBYTEVAL) /* strictly paranoia ... */
{
ereport(LOG,
(ERRCODE_INTERNAL_ERROR,
@@ -428,7 +429,7 @@ pgstat_init(void)
{
ereport(LOG,
(errcode_for_socket_access(),
- errmsg("could not set statistics collector socket to nonblocking mode: %m")));
+ errmsg("could not set statistics collector socket to nonblocking mode: %m")));
goto startup_failed;
}
@@ -463,9 +464,11 @@ startup_failed:
static pid_t
pgstat_forkexec(STATS_PROCESS_TYPE procType)
{
- char *av[10];
- int ac = 0, bufc = 0, i;
- char pgstatBuf[2][32];
+ char *av[10];
+ int ac = 0,
+ bufc = 0,
+ i;
+ char pgstatBuf[2][32];
av[ac++] = "postgres";
@@ -489,8 +492,8 @@ pgstat_forkexec(STATS_PROCESS_TYPE procType)
av[ac++] = postgres_exec_path;
/* Pipe file ids (those not passed by write_backend_variables) */
- snprintf(pgstatBuf[bufc++],32,"%d",pgStatPipe[0]);
- snprintf(pgstatBuf[bufc++],32,"%d",pgStatPipe[1]);
+ snprintf(pgstatBuf[bufc++], 32, "%d", pgStatPipe[0]);
+ snprintf(pgstatBuf[bufc++], 32, "%d", pgStatPipe[1]);
/* Add to the arg list */
Assert(bufc <= lengthof(pgstatBuf));
@@ -516,12 +519,11 @@ pgstat_parseArgs(int argc, char *argv[])
Assert(argc == 6);
argc = 3;
- StrNCpy(postgres_exec_path, argv[argc++], MAXPGPATH);
- pgStatPipe[0] = atoi(argv[argc++]);
- pgStatPipe[1] = atoi(argv[argc++]);
+ StrNCpy(postgres_exec_path, argv[argc++], MAXPGPATH);
+ pgStatPipe[0] = atoi(argv[argc++]);
+ pgStatPipe[1] = atoi(argv[argc++]);
}
-
-#endif /* EXEC_BACKEND */
+#endif /* EXEC_BACKEND */
/* ----------
@@ -1072,7 +1074,7 @@ pgstat_initstats(PgStat_Info *stats, Relation rel)
{
tsmsg = pgStatTabstatMessages[mb];
- for (i = tsmsg->m_nentries; --i >= 0; )
+ for (i = tsmsg->m_nentries; --i >= 0;)
{
if (tsmsg->m_entry[i].t_id == rel_id)
{
@@ -1387,7 +1389,7 @@ PgstatBufferMain(int argc, char *argv[])
/* unblock will happen in pgstat_recvbuffer */
#ifdef EXEC_BACKEND
- pgstat_parseArgs(argc,argv);
+ pgstat_parseArgs(argc, argv);
#endif
/*
@@ -1464,9 +1466,9 @@ PgstatCollectorMain(int argc, char *argv[])
/*
* Reset signal handling. With the exception of restoring default
- * SIGCHLD and SIGQUIT handling, this is a no-op in the non-EXEC_BACKEND
- * case because we'll have inherited these settings from the buffer
- * process; but it's not a no-op for EXEC_BACKEND.
+ * SIGCHLD and SIGQUIT handling, this is a no-op in the
+ * non-EXEC_BACKEND case because we'll have inherited these settings
+ * from the buffer process; but it's not a no-op for EXEC_BACKEND.
*/
pqsignal(SIGHUP, SIG_IGN);
pqsignal(SIGINT, SIG_IGN);
@@ -1484,7 +1486,7 @@ PgstatCollectorMain(int argc, char *argv[])
PG_SETMASK(&UnBlockSig);
#ifdef EXEC_BACKEND
- pgstat_parseArgs(argc,argv);
+ pgstat_parseArgs(argc, argv);
#endif
/* Close unwanted files */
@@ -1532,7 +1534,7 @@ PgstatCollectorMain(int argc, char *argv[])
/* assume the problem is out-of-memory */
ereport(LOG,
(errcode(ERRCODE_OUT_OF_MEMORY),
- errmsg("out of memory in statistics collector --- abort")));
+ errmsg("out of memory in statistics collector --- abort")));
exit(1);
}
@@ -1545,7 +1547,7 @@ PgstatCollectorMain(int argc, char *argv[])
{
ereport(LOG,
(errcode(ERRCODE_OUT_OF_MEMORY),
- errmsg("out of memory in statistics collector --- abort")));
+ errmsg("out of memory in statistics collector --- abort")));
exit(1);
}
memset(pgStatBeTable, 0, sizeof(PgStat_StatBeEntry) * MaxBackends);
@@ -1597,7 +1599,7 @@ PgstatCollectorMain(int argc, char *argv[])
/*
* Now wait for something to do.
*/
- nready = select(readPipe+1, &rfds, NULL, NULL,
+ nready = select(readPipe + 1, &rfds, NULL, NULL,
(need_statwrite) ? &timeout : NULL);
if (nready < 0)
{
@@ -1605,7 +1607,7 @@ PgstatCollectorMain(int argc, char *argv[])
continue;
ereport(LOG,
(errcode_for_socket_access(),
- errmsg("select() failed in statistics collector: %m")));
+ errmsg("select() failed in statistics collector: %m")));
exit(1);
}
@@ -1640,7 +1642,7 @@ PgstatCollectorMain(int argc, char *argv[])
while (nread < targetlen)
{
len = piperead(readPipe, ((char *) &msg) + nread,
- targetlen - nread);
+ targetlen - nread);
if (len < 0)
{
if (errno == EINTR)
@@ -1816,7 +1818,7 @@ pgstat_recvbuffer(void)
{
ereport(LOG,
(errcode_for_socket_access(),
- errmsg("could not set statistics collector pipe to nonblocking mode: %m")));
+ errmsg("could not set statistics collector pipe to nonblocking mode: %m")));
exit(1);
}
@@ -1986,8 +1988,8 @@ pgstat_recvbuffer(void)
continue;
/*
- * If the postmaster has terminated, we die too. (This is no longer
- * the normal exit path, however.)
+ * If the postmaster has terminated, we die too. (This is no
+ * longer the normal exit path, however.)
*/
if (!PostmasterIsAlive(true))
exit(0);
@@ -2000,8 +2002,8 @@ pgstat_exit(SIGNAL_ARGS)
{
/*
* For now, we just nail the doors shut and get out of town. It might
- * be cleaner to allow any pending messages to be sent, but that creates
- * a tradeoff against speed of exit.
+ * be cleaner to allow any pending messages to be sent, but that
+ * creates a tradeoff against speed of exit.
*/
exit(0);
}
@@ -2034,7 +2036,7 @@ pgstat_add_backend(PgStat_MsgHdr *msg)
if (msg->m_backendid < 1 || msg->m_backendid > MaxBackends)
{
ereport(LOG,
- (errmsg("invalid server process ID %d", msg->m_backendid)));
+ (errmsg("invalid server process ID %d", msg->m_backendid)));
return -1;
}
@@ -2229,8 +2231,8 @@ pgstat_write_statsfile(void)
{
ereport(LOG,
(errcode_for_file_access(),
- errmsg("could not open temporary statistics file \"%s\": %m",
- pgStat_tmpfname)));
+ errmsg("could not open temporary statistics file \"%s\": %m",
+ pgStat_tmpfname)));
return;
}
@@ -2342,8 +2344,8 @@ pgstat_write_statsfile(void)
{
ereport(LOG,
(errcode_for_file_access(),
- errmsg("could not close temporary statistics file \"%s\": %m",
- pgStat_tmpfname)));
+ errmsg("could not close temporary statistics file \"%s\": %m",
+ pgStat_tmpfname)));
}
else
{
@@ -2373,8 +2375,8 @@ pgstat_write_statsfile(void)
HASH_REMOVE, NULL) == NULL)
{
ereport(LOG,
- (errmsg("dead-server-process hash table corrupted "
- "during cleanup --- abort")));
+ (errmsg("dead-server-process hash table corrupted "
+ "during cleanup --- abort")));
exit(1);
}
}
@@ -2743,7 +2745,7 @@ pgstat_read_statsfile(HTAB **dbhash, Oid onlydb,
static void
backend_read_statsfile(void)
{
- TransactionId topXid = GetTopTransactionId();
+ TransactionId topXid = GetTopTransactionId();
if (!TransactionIdEquals(pgStatDBHashXact, topXid))
{