Put each log file in a folder
The filesystem was struggling. If the path has a trailing /, then put
everything inside the folder. Otherwise, use that as the base name and
append.
Change-Id: I042e4886989724c5e179fe81b3017a695cbfd016
diff --git a/aos/events/logging/log_namer.cc b/aos/events/logging/log_namer.cc
index 3067aea..474386e 100644
--- a/aos/events/logging/log_namer.cc
+++ b/aos/events/logging/log_namer.cc
@@ -244,7 +244,7 @@
void MultiNodeLogNamer::OpenForwardedTimestampWriter(const Channel *channel,
DataWriter *data_writer) {
std::string filename =
- absl::StrCat("_timestamps", channel->name()->string_view(), "/",
+ absl::StrCat("timestamps", channel->name()->string_view(), "/",
channel->type()->string_view(), ".part",
data_writer->part_number, ".bfbs", extension_);
CreateBufferWriter(filename, &data_writer->writer);
@@ -253,7 +253,7 @@
void MultiNodeLogNamer::OpenWriter(const Channel *channel,
DataWriter *data_writer) {
const std::string filename = absl::StrCat(
- "_", CHECK_NOTNULL(channel->source_node())->string_view(), "_data",
+ CHECK_NOTNULL(channel->source_node())->string_view(), "_data",
channel->name()->string_view(), "/", channel->type()->string_view(),
".part", data_writer->part_number, ".bfbs", extension_);
CreateBufferWriter(filename, &data_writer->writer);
@@ -262,9 +262,9 @@
void MultiNodeLogNamer::OpenDataWriter() {
std::string name;
if (node() != nullptr) {
- name = absl::StrCat(name, "_", node()->name()->string_view());
+ name = absl::StrCat(name, node()->name()->string_view(), "_");
}
- absl::StrAppend(&name, "_data.part", data_writer_.part_number, ".bfbs",
+ absl::StrAppend(&name, "data.part", data_writer_.part_number, ".bfbs",
extension_);
CreateBufferWriter(name, &data_writer_.writer);
}
@@ -277,7 +277,9 @@
// means they're probably going to run out of space and get stuck too.
return;
}
- const std::string filename = absl::StrCat(base_name_, path, temp_suffix_);
+ const std::string_view separator = base_name_.back() == '/' ? "" : "_";
+ const std::string filename =
+ absl::StrCat(base_name_, separator, path, temp_suffix_);
if (!destination->get()) {
if (ran_out_of_space_) {
*destination = std::make_unique<DetachedBufferWriter>(
diff --git a/aos/events/logging/logger_main.cc b/aos/events/logging/logger_main.cc
index 1d0c55e..1bc74f2 100644
--- a/aos/events/logging/logger_main.cc
+++ b/aos/events/logging/logger_main.cc
@@ -28,8 +28,8 @@
aos::logging::GetLogName("fbs_log"), event_loop.node());
} else {
log_namer = std::make_unique<aos::logger::MultiNodeLogNamer>(
- aos::logging::GetLogName("fbs_log"), event_loop.configuration(),
- event_loop.node());
+ absl::StrCat(aos::logging::GetLogName("fbs_log"), "/"),
+ event_loop.configuration(), event_loop.node());
}
aos::logger::Logger logger(&event_loop);
diff --git a/aos/logging/log_namer.cc b/aos/logging/log_namer.cc
index f025054..c1dd30a 100644
--- a/aos/logging/log_namer.cc
+++ b/aos/logging/log_namer.cc
@@ -146,11 +146,11 @@
AllocateLogName(&tmp, folder, basename);
std::string log_base_name = tmp;
- std::string log_roborio_name = log_base_name + "_roborio_data.bfbs";
+ std::string log_roborio_name = log_base_name + "/";
free(tmp);
char *tmp2;
- if (asprintf(&tmp2, "%s/%s-current.bfbs", folder, basename) == -1) {
+ if (asprintf(&tmp2, "%s/%s-current", folder, basename) == -1) {
PLOG(WARNING) << "couldn't create current symlink name";
} else {
if (unlink(tmp2) == -1 && (errno != EROFS && errno != ENOENT)) {