summaryrefslogtreecommitdiffstats
path: root/log_manager.cpp
diff options
context:
space:
mode:
authorAdriana Kobylak <anoo@us.ibm.com>2018-09-04 10:14:24 -0500
committerAdriana Kobylak <anoo@us.ibm.com>2018-09-05 10:28:54 -0500
commit7d111a85eb9e38568acbbc0125bb25f69098aec3 (patch)
tree1e9764ad2c9d797990c6d5576f512012f51cb266 /log_manager.cpp
parent5ac1bde129258d906246f5d4ad78e036f03a6e80 (diff)
downloadphosphor-logging-7d111a85eb9e38568acbbc0125bb25f69098aec3.tar.gz
phosphor-logging-7d111a85eb9e38568acbbc0125bb25f69098aec3.zip
log_manager: Don't fail on missing synced file
The journald synced file is created during a journal sync, so if it's missing, the log manager should still perform the sync operation so that the synced file gets created. This is the behavior of journalctl which this function is copying, just this logic wasn't transferred in the original commit. Reference: https://github.com/systemd/systemd/blob/60118b21c6b4b29376615921c5edc1b05cde306f/src/journal/journalctl.c#L1999 Disabled the unit test cases that call commit since they now fail. Opened issue openbmc/phosphor-logging#11 for debug. Closes openbmc/phosphor-logging#10 Tested: With the synced file missing, verified that a commit operation created the file and there were no error messages about failing to open the synced file. Change-Id: Ia720741b99552d51d13cdc6b4e08dbbab58bca77 Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
Diffstat (limited to 'log_manager.cpp')
-rw-r--r--log_manager.cpp29
1 files changed, 18 insertions, 11 deletions
diff --git a/log_manager.cpp b/log_manager.cpp
index ad1c5d1..ca48210 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -351,19 +351,26 @@ void Manager::journalSync()
std::ifstream syncedFile(syncedPath);
if (syncedFile.fail())
{
- log<level::ERR>("Failed to open journal synced file",
- entry("FILENAME=%s", syncedPath),
- entry("ERRNO=%d", errno));
- return;
+ // If the synced file doesn't exist, a sync request will create it.
+ if (errno != ENOENT)
+ {
+ log<level::ERR>("Failed to open journal synced file",
+ entry("FILENAME=%s", syncedPath),
+ entry("ERRNO=%d", errno));
+ return;
+ }
}
-
- // See if a sync happened by now
- std::string timestampStr;
- std::getline(syncedFile, timestampStr);
- auto timestamp = stoll(timestampStr);
- if (timestamp >= start)
+ else
{
- return;
+ // Only read the synced file if it exists.
+ // See if a sync happened by now
+ std::string timestampStr;
+ std::getline(syncedFile, timestampStr);
+ auto timestamp = stoll(timestampStr);
+ if (timestamp >= start)
+ {
+ return;
+ }
}
// Let's ask for a sync, but only once
OpenPOWER on IntegriCloud