You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2016/02/01 21:36:34 UTC
trafficserver git commit: TS-4165 Logging breaks if changing log
format. This closes #446.
Repository: trafficserver
Updated Branches:
refs/heads/master 29c25d7de -> cce321c35
TS-4165 Logging breaks if changing log format.
This closes #446.
TS wasn't calling `open_file()` on the LogFile it was trying
to rotate away. This was occurring when an existing log file's
formatting was changed in logs_xml.config and TS was restarted.
The result was TS not updating/creating the updated log file.
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/cce321c3
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/cce321c3
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/cce321c3
Branch: refs/heads/master
Commit: cce321c35dedc1485e887fa23aa39c0dbac5bae7
Parents: 29c25d7
Author: Daniel Xu <dl...@yahoo.com>
Authored: Fri Jan 29 22:38:11 2016 +0000
Committer: Alan M. Carroll <am...@apache.org>
Committed: Mon Feb 1 14:35:52 2016 -0600
----------------------------------------------------------------------
proxy/logging/LogObject.cc | 31 +++++++++++++++++++++----------
proxy/logging/LogObject.h | 1 +
2 files changed, 22 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/cce321c3/proxy/logging/LogObject.cc
----------------------------------------------------------------------
diff --git a/proxy/logging/LogObject.cc b/proxy/logging/LogObject.cc
index dd272b6..3afe70d 100644
--- a/proxy/logging/LogObject.cc
+++ b/proxy/logging/LogObject.cc
@@ -1024,16 +1024,17 @@ LogObjectManager::_solve_filename_conflicts(LogObject *log_object, int maxConfli
"filename",
filename);
LogFile logfile(filename, NULL, LOG_FILE_ASCII, 0);
- long time_now = LogUtils::timestamp();
-
- if (logfile.roll(time_now - log_object->get_rolling_interval(), time_now) == 0) {
- // an error happened while trying to roll the file
- //
- const char *msg = "Cannot roll log file %s to fix log "
- "filename conflicts";
-
- Error(msg, filename);
- LogUtils::manager_alarm(LogUtils::LOG_ALARM_ERROR, msg, filename);
+ if (logfile.open_file() == LogFile::LOG_FILE_NO_ERROR) {
+ long time_now = LogUtils::timestamp();
+
+ if (logfile.roll(time_now - log_object->get_rolling_interval(), time_now) == 0) {
+ // an error happened while trying to roll the file
+ //
+ _filename_resolution_abort(filename);
+ retVal = CANNOT_SOLVE_FILENAME_CONFLICTS;
+ }
+ } else {
+ _filename_resolution_abort(filename);
retVal = CANNOT_SOLVE_FILENAME_CONFLICTS;
}
}
@@ -1043,6 +1044,16 @@ LogObjectManager::_solve_filename_conflicts(LogObject *log_object, int maxConfli
return retVal;
}
+void
+LogObjectManager::_filename_resolution_abort(const char *filename)
+{
+ const char *msg = "Cannot roll log file %s to fix log "
+ "conflicts (filename or log format): %s";
+ const char *err = strerror(errno);
+ Error(msg, filename, err);
+ LogUtils::manager_alarm(LogUtils::LOG_ALARM_ERROR, msg, filename, err);
+}
+
bool
LogObjectManager::_has_internal_filename_conflict(const char *filename, LogObjectList &objects)
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/cce321c3/proxy/logging/LogObject.h
----------------------------------------------------------------------
diff --git a/proxy/logging/LogObject.h b/proxy/logging/LogObject.h
index bfbb8a6..4f73b6c 100644
--- a/proxy/logging/LogObject.h
+++ b/proxy/logging/LogObject.h
@@ -379,6 +379,7 @@ private:
static bool _has_internal_filename_conflict(const char *filename, LogObjectList &objects);
int _solve_filename_conflicts(LogObject *log_obj, int maxConflicts);
int _solve_internal_filename_conflicts(LogObject *log_obj, int maxConflicts, int fileNum = 0);
+ void _filename_resolution_abort(const char *fname);
public:
LogObjectManager();