fixed dropping log messages
It silently overwrote messages when the queue filled up, which was bad.
To avoid triggering the new crash behavior, the size had to be increased
a lot because the BBB does really slow writes sometimes.
diff --git a/aos/build/queues/output/message_dec.rb b/aos/build/queues/output/message_dec.rb
index fdc03ee..9ef2a68 100644
--- a/aos/build/queues/output/message_dec.rb
+++ b/aos/build/queues/output/message_dec.rb
@@ -187,7 +187,7 @@
type_class.set_parent("public ::aos::Message")
ts = self.simpleStr()
self.msg_hash = "0x#{Digest::SHA1.hexdigest(ts)[-8..-1]}"
- type_class.add_member("enum {kQueueLength = 1234, kHash = #{self.msg_hash}}")
+ type_class.add_member("enum {kQueueLength = 200, kHash = #{self.msg_hash}}")
@members.each do |elem|
type_class.add_member(elem.create_usage(cpp_tree))
end
diff --git a/aos/linux_code/logging/linux_logging.cc b/aos/linux_code/logging/linux_logging.cc
index 676e3b7..2f0413b 100644
--- a/aos/linux_code/logging/linux_logging.cc
+++ b/aos/linux_code/logging/linux_logging.cc
@@ -57,7 +57,7 @@
void Register() {
Init();
- queue = RawQueue::Fetch("LoggingQueue", sizeof(LogMessage), 1323, 1500);
+ queue = RawQueue::Fetch("LoggingQueue", sizeof(LogMessage), 1323, 20000);
if (queue == NULL) {
Die("logging: couldn't fetch queue\n");
}
@@ -91,8 +91,8 @@
}
void Write(LogMessage *msg) {
- if (!queue->WriteMessage(msg, RawQueue::kOverride)) {
- LOG(FATAL, "writing failed");
+ if (!queue->WriteMessage(msg, RawQueue::kNonBlock)) {
+ LOG(FATAL, "writing failed\n");
}
}