TS-2526: remove the g_stats_snap_fpath global variable
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/5b163671 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/5b163671 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/5b163671 Branch: refs/heads/5.0.x Commit: 5b163671cd1412b1a7bd6084e14539200634a43e Parents: c2434df Author: James Peach <[email protected]> Authored: Wed Jan 22 12:16:56 2014 -0800 Committer: James Peach <[email protected]> Committed: Thu Jan 23 17:12:45 2014 -0800 ---------------------------------------------------------------------- CHANGES | 2 ++ lib/records/I_RecCore.h | 4 ++++ lib/records/P_RecCore.cc | 8 +++++--- lib/records/P_RecCore.h | 3 --- lib/records/RecCore.cc | 13 ++++++++++--- mgmt/LocalManager.cc | 8 ++------ 6 files changed, 23 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5b163671/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 162e255..a24e138 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,8 @@ -*- coding: utf-8 -*- Changes with Apache Traffic Server 4.2.0 + *) [TS-2526] Remove the g_stats_snap_fpath global variable. + *) [TS-2525] Remove restrictions on outbound transparency with SSL. *) [TS-2425] Update to TS-2261 for loading plugins as root http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5b163671/lib/records/I_RecCore.h ---------------------------------------------------------------------- diff --git a/lib/records/I_RecCore.h b/lib/records/I_RecCore.h index 4b3088c..424b1c2 100644 --- a/lib/records/I_RecCore.h +++ b/lib/records/I_RecCore.h @@ -62,6 +62,10 @@ char * RecConfigReadLogDir(); // value, NULL is returned. The caller MUST release the result with ats_free(). char * RecConfigReadConfigPath(const char * file_variable, const char * default_value = NULL); +// Return a copy of the persistent stats file. This is $RUNTIMEDIR/records.snap. +// The caller MUST release the result with ats_free(). +char * RecConfigReadPersistentStatsPath(); + // Test whether the named configuration value is overridden by an environment variable. Return either // the overridden value, or the original value. Caller MUST NOT free the result. const char * RecConfigOverrideFromEnvironment(const char * name, const char * value); http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5b163671/lib/records/P_RecCore.cc ---------------------------------------------------------------------- diff --git a/lib/records/P_RecCore.cc b/lib/records/P_RecCore.cc index f176192..2be8116 100644 --- a/lib/records/P_RecCore.cc +++ b/lib/records/P_RecCore.cc @@ -531,11 +531,12 @@ RecReadStatsFile() RecRecord *r; RecMessage *m; RecMessageItr itr; + xptr<char> snap_fpath(RecConfigReadPersistentStatsPath()); // lock our hash table ink_rwlock_wrlock(&g_records_rwlock); - if ((m = RecMessageReadFromDisk(g_stats_snap_fpath)) != NULL) { + if ((m = RecMessageReadFromDisk(snap_fpath)) != NULL) { if (RecMessageUnmarshalFirst(m, &itr, &r) != REC_ERR_FAIL) { do { if ((r->name == NULL) || (!strlen(r->name))) @@ -562,6 +563,7 @@ RecSyncStatsFile() RecMessage *m; int i, num_records; bool sync_to_disk; + xptr<char> snap_fpath(RecConfigReadPersistentStatsPath()); /* * g_mode_type should be initialized by @@ -585,8 +587,8 @@ RecSyncStatsFile() rec_mutex_release(&(r->lock)); } if (sync_to_disk) { - RecDebug(DL_Note, "Writing '%s' [%d bytes]", g_stats_snap_fpath, m->o_write - m->o_start + sizeof(RecMessageHdr)); - RecMessageWriteToDisk(m, g_stats_snap_fpath); + RecDebug(DL_Note, "Writing '%s' [%d bytes]", (const char *)snap_fpath, m->o_write - m->o_start + sizeof(RecMessageHdr)); + RecMessageWriteToDisk(m, snap_fpath); } RecMessageFree(m); } http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5b163671/lib/records/P_RecCore.h ---------------------------------------------------------------------- diff --git a/lib/records/P_RecCore.h b/lib/records/P_RecCore.h index f0335b9..63109f6 100644 --- a/lib/records/P_RecCore.h +++ b/lib/records/P_RecCore.h @@ -49,9 +49,6 @@ extern LLQ *g_rec_config_contents_llq; extern InkHashTable *g_rec_config_contents_ht; extern ink_mutex g_rec_config_lock; -// stats.snap items -extern const char *g_stats_snap_fpath; - //------------------------------------------------------------------------- // Initialization //------------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5b163671/lib/records/RecCore.cc ---------------------------------------------------------------------- diff --git a/lib/records/RecCore.cc b/lib/records/RecCore.cc index 532aecc..484a9c6 100644 --- a/lib/records/RecCore.cc +++ b/lib/records/RecCore.cc @@ -36,7 +36,6 @@ InkHashTable *g_records_ht = NULL; ink_rwlock g_records_rwlock; int g_num_records = 0; -const char *g_stats_snap_fpath = NULL; int g_num_update[RECT_MAX]; RecTree *g_records_tree = NULL; @@ -177,8 +176,6 @@ RecCoreInit(RecModeT mode_type, Diags *_diags) } // read stats if ((mode_type == RECM_SERVER) || (mode_type == RECM_STAND_ALONE)) { - xptr<char> rundir(RecConfigReadRuntimeDir()); - g_stats_snap_fpath = Layout::relative_to(rundir, REC_RAW_STATS_FILE); RecReadStatsFile(); } // read configs @@ -1111,6 +1108,16 @@ RecConfigReadConfigPath(const char * file_variable, const char * default_value) } //------------------------------------------------------------------------- +// RecConfigReadPersistentStatsPath +//------------------------------------------------------------------------- +char * +RecConfigReadPersistentStatsPath() +{ + xptr<char> rundir(RecConfigReadRuntimeDir()); + return Layout::relative_to(rundir, REC_RAW_STATS_FILE); +} + +//------------------------------------------------------------------------- // REC_SignalManager (TS) //------------------------------------------------------------------------- #if defined (REC_BUILD_MGMT) http://git-wip-us.apache.org/repos/asf/trafficserver/blob/5b163671/mgmt/LocalManager.cc ---------------------------------------------------------------------- diff --git a/mgmt/LocalManager.cc b/mgmt/LocalManager.cc index 898e87c..2bc67ad 100644 --- a/mgmt/LocalManager.cc +++ b/mgmt/LocalManager.cc @@ -124,8 +124,6 @@ LocalManager::rollLogFiles() void LocalManager::clearStats(const char *name) { - char *statsPath; - // Clear our records and then send the signal. There is a race condition // here where our stats could get re-updated from the proxy // before the proxy clears them, but this should be rare. @@ -146,14 +144,12 @@ LocalManager::clearStats(const char *name) // that operation works even when the proxy is off // if (this->proxy_running == 0) { - xptr<char> rundir(RecConfigReadRuntimeDir()); - statsPath = Layout::relative_to(rundir, REC_RAW_STATS_FILE); + xptr<char> statsPath(RecConfigReadPersistentStatsPath()); if (unlink(statsPath) < 0) { if (errno != ENOENT) { - mgmt_log(stderr, "[LocalManager::clearStats] Unlink of %s failed : %s\n", REC_RAW_STATS_FILE, strerror(errno)); + mgmt_log(stderr, "[LocalManager::clearStats] Unlink of %s failed : %s\n", (const char *)statsPath, strerror(errno)); } } - ats_free(statsPath); } }
