mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-09-28 01:01:49 +02:00
pgstat: remove stats_temp_directory.
With stats now being stored in shared memory, the GUC isn't needed anymore. However, the pg_stat_tmp directory and PG_STAT_TMP_DIR define are kept, as pg_stat_statements (and some out-of-core extensions) store data in it. Docs will be updated in a subsequent commit, together with the other pending docs updates due to shared memory stats. Author: Andres Freund <andres@anarazel.de> Author: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Reviewed-By: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Discussion: https://postgr.es/m/20220330233550.eiwsbearu6xhuqwe@alap3.anarazel.de Discussion: https://postgr.es/m/20220303021600.hs34ghqcw6zcokdh@alap3.anarazel.de
This commit is contained in:
parent
5891c7a8ed
commit
6f0cf87872
@ -78,12 +78,7 @@ PG_MODULE_MAGIC;
|
||||
#define PGSS_DUMP_FILE PGSTAT_STAT_PERMANENT_DIRECTORY "/pg_stat_statements.stat"
|
||||
|
||||
/*
|
||||
* Location of external query text file. We don't keep it in the core
|
||||
* system's stats_temp_directory. The core system can safely use that GUC
|
||||
* setting, because the statistics collector temp file paths are set only once
|
||||
* as part of changing the GUC, but pg_stat_statements has no way of avoiding
|
||||
* race conditions. Besides, we only expect modest, infrequent I/O for query
|
||||
* strings, so placing the file on a faster filesystem is not compelling.
|
||||
* Location of external query text file.
|
||||
*/
|
||||
#define PGSS_TEXT_FILE PG_STAT_TMP_DIR "/pgss_query_texts.stat"
|
||||
|
||||
|
@ -186,16 +186,6 @@ bool pgstat_track_counts = false;
|
||||
int pgstat_fetch_consistency = PGSTAT_FETCH_CONSISTENCY_NONE;
|
||||
|
||||
|
||||
/* ----------
|
||||
* Built from GUC parameter
|
||||
* ----------
|
||||
*/
|
||||
|
||||
char *pgstat_stat_directory = NULL;
|
||||
char *pgstat_stat_filename = NULL;
|
||||
char *pgstat_stat_tmpname = NULL;
|
||||
|
||||
|
||||
/* ----------
|
||||
* state shared with pgstat_*.c
|
||||
* ----------
|
||||
|
@ -99,9 +99,6 @@ static int basebackup_read_file(int fd, char *buf, size_t nbytes, off_t offset,
|
||||
/* Was the backup currently in-progress initiated in recovery mode? */
|
||||
static bool backup_started_in_recovery = false;
|
||||
|
||||
/* Relative path of temporary statistics directory */
|
||||
static char *statrelpath = NULL;
|
||||
|
||||
/* Total number of checksum failures during base backup. */
|
||||
static long long int total_checksum_failures;
|
||||
|
||||
@ -131,9 +128,8 @@ struct exclude_list_item
|
||||
static const char *const excludeDirContents[] =
|
||||
{
|
||||
/*
|
||||
* Skip temporary statistics files. PG_STAT_TMP_DIR must be skipped even
|
||||
* when stats_temp_directory is set because PGSS_TEXT_FILE is always
|
||||
* created there.
|
||||
* Skip temporary statistics files. PG_STAT_TMP_DIR must be skipped
|
||||
* because extensions like pg_stat_statements store data there.
|
||||
*/
|
||||
PG_STAT_TMP_DIR,
|
||||
|
||||
@ -237,7 +233,6 @@ perform_base_backup(basebackup_options *opt, bbsink *sink)
|
||||
StringInfo labelfile;
|
||||
StringInfo tblspc_map_file;
|
||||
backup_manifest_info manifest;
|
||||
int datadirpathlen;
|
||||
|
||||
/* Initial backup state, insofar as we know it now. */
|
||||
state.tablespaces = NIL;
|
||||
@ -250,8 +245,6 @@ perform_base_backup(basebackup_options *opt, bbsink *sink)
|
||||
Assert(CurrentResourceOwner == NULL);
|
||||
CurrentResourceOwner = ResourceOwnerCreate(NULL, "base backup");
|
||||
|
||||
datadirpathlen = strlen(DataDir);
|
||||
|
||||
backup_started_in_recovery = RecoveryInProgress();
|
||||
|
||||
labelfile = makeStringInfo();
|
||||
@ -279,18 +272,6 @@ perform_base_backup(basebackup_options *opt, bbsink *sink)
|
||||
ListCell *lc;
|
||||
tablespaceinfo *ti;
|
||||
|
||||
/*
|
||||
* Calculate the relative path of temporary statistics directory in
|
||||
* order to skip the files which are located in that directory later.
|
||||
*/
|
||||
if (is_absolute_path(pgstat_stat_directory) &&
|
||||
strncmp(pgstat_stat_directory, DataDir, datadirpathlen) == 0)
|
||||
statrelpath = psprintf("./%s", pgstat_stat_directory + datadirpathlen + 1);
|
||||
else if (strncmp(pgstat_stat_directory, "./", 2) != 0)
|
||||
statrelpath = psprintf("./%s", pgstat_stat_directory);
|
||||
else
|
||||
statrelpath = pgstat_stat_directory;
|
||||
|
||||
/* Add a node for the base directory at the end */
|
||||
ti = palloc0(sizeof(tablespaceinfo));
|
||||
ti->size = -1;
|
||||
@ -1310,19 +1291,6 @@ sendDir(bbsink *sink, const char *path, int basepathlen, bool sizeonly,
|
||||
if (excludeFound)
|
||||
continue;
|
||||
|
||||
/*
|
||||
* Exclude contents of directory specified by statrelpath if not set
|
||||
* to the default (pg_stat_tmp) which is caught in the loop above.
|
||||
*/
|
||||
if (statrelpath != NULL && strcmp(pathbuf, statrelpath) == 0)
|
||||
{
|
||||
elog(DEBUG1, "contents of directory \"%s\" excluded from backup", statrelpath);
|
||||
convert_link_to_directory(pathbuf, &statbuf);
|
||||
size += _tarWriteHeader(sink, pathbuf + basepathlen + 1, NULL,
|
||||
&statbuf, sizeonly);
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* We can skip pg_wal, the WAL segments need to be fetched from the
|
||||
* WAL archive anyway. But include it as an empty directory anyway, so
|
||||
|
@ -217,7 +217,6 @@ static bool check_effective_io_concurrency(int *newval, void **extra, GucSource
|
||||
static bool check_maintenance_io_concurrency(int *newval, void **extra, GucSource source);
|
||||
static bool check_huge_page_size(int *newval, void **extra, GucSource source);
|
||||
static bool check_client_connection_check_interval(int *newval, void **extra, GucSource source);
|
||||
static void assign_pgstat_temp_directory(const char *newval, void *extra);
|
||||
static bool check_application_name(char **newval, void **extra, GucSource source);
|
||||
static void assign_application_name(const char *newval, void *extra);
|
||||
static bool check_cluster_name(char **newval, void **extra, GucSource source);
|
||||
@ -4560,17 +4559,6 @@ static struct config_string ConfigureNamesString[] =
|
||||
NULL, NULL, NULL
|
||||
},
|
||||
|
||||
{
|
||||
{"stats_temp_directory", PGC_SIGHUP, STATS_COLLECTOR,
|
||||
gettext_noop("Writes temporary statistics files to the specified directory."),
|
||||
NULL,
|
||||
GUC_SUPERUSER_ONLY
|
||||
},
|
||||
&pgstat_temp_directory,
|
||||
PG_STAT_TMP_DIR,
|
||||
check_canonical_path, assign_pgstat_temp_directory, NULL
|
||||
},
|
||||
|
||||
{
|
||||
{"synchronous_standby_names", PGC_SIGHUP, REPLICATION_PRIMARY,
|
||||
gettext_noop("Number of synchronous standbys and list of names of potential synchronous ones."),
|
||||
@ -12375,35 +12363,6 @@ check_client_connection_check_interval(int *newval, void **extra, GucSource sour
|
||||
return true;
|
||||
}
|
||||
|
||||
static void
|
||||
assign_pgstat_temp_directory(const char *newval, void *extra)
|
||||
{
|
||||
/* check_canonical_path already canonicalized newval for us */
|
||||
char *dname;
|
||||
char *tname;
|
||||
char *fname;
|
||||
|
||||
/* directory */
|
||||
dname = guc_malloc(ERROR, strlen(newval) + 1); /* runtime dir */
|
||||
sprintf(dname, "%s", newval);
|
||||
|
||||
/* global stats */
|
||||
tname = guc_malloc(ERROR, strlen(newval) + 12); /* /global.tmp */
|
||||
sprintf(tname, "%s/global.tmp", newval);
|
||||
fname = guc_malloc(ERROR, strlen(newval) + 13); /* /global.stat */
|
||||
sprintf(fname, "%s/global.stat", newval);
|
||||
|
||||
if (pgstat_stat_directory)
|
||||
free(pgstat_stat_directory);
|
||||
pgstat_stat_directory = dname;
|
||||
if (pgstat_stat_tmpname)
|
||||
free(pgstat_stat_tmpname);
|
||||
pgstat_stat_tmpname = tname;
|
||||
if (pgstat_stat_filename)
|
||||
free(pgstat_stat_filename);
|
||||
pgstat_stat_filename = fname;
|
||||
}
|
||||
|
||||
static bool
|
||||
check_application_name(char **newval, void **extra, GucSource source)
|
||||
{
|
||||
|
@ -613,7 +613,6 @@
|
||||
#track_io_timing = off
|
||||
#track_wal_io_timing = off
|
||||
#track_functions = none # none, pl, all
|
||||
#stats_temp_directory = 'pg_stat_tmp'
|
||||
#stats_fetch_consistency = none
|
||||
|
||||
|
||||
|
@ -88,9 +88,8 @@ struct exclude_list_item
|
||||
static const char *excludeDirContents[] =
|
||||
{
|
||||
/*
|
||||
* Skip temporary statistics files. PG_STAT_TMP_DIR must be skipped even
|
||||
* when stats_temp_directory is set because PGSS_TEXT_FILE is always
|
||||
* created there.
|
||||
* Skip temporary statistics files. PG_STAT_TMP_DIR must be skipped
|
||||
* because extensions like pg_stat_statements store data there.
|
||||
*/
|
||||
"pg_stat_tmp", /* defined as PG_STAT_TMP_DIR */
|
||||
|
||||
|
@ -642,10 +642,6 @@ extern PGDLLIMPORT bool pgstat_track_counts;
|
||||
extern PGDLLIMPORT int pgstat_track_functions;
|
||||
extern PGDLLIMPORT int pgstat_fetch_consistency;
|
||||
|
||||
extern char *pgstat_stat_directory;
|
||||
extern char *pgstat_stat_tmpname;
|
||||
extern char *pgstat_stat_filename;
|
||||
|
||||
|
||||
/*
|
||||
* Variables in pgstat_bgwriter.c
|
||||
|
@ -480,10 +480,6 @@ sub init
|
||||
print $conf PostgreSQL::Test::Utils::slurp_file($ENV{TEMP_CONFIG})
|
||||
if defined $ENV{TEMP_CONFIG};
|
||||
|
||||
# XXX Neutralize any stats_temp_directory in TEMP_CONFIG. Nodes running
|
||||
# concurrently must not share a stats_temp_directory.
|
||||
print $conf "stats_temp_directory = 'pg_stat_tmp'\n";
|
||||
|
||||
if ($params{allows_streaming})
|
||||
{
|
||||
if ($params{allows_streaming} eq "logical")
|
||||
|
Loading…
Reference in New Issue
Block a user