dlog_logger: fix dumping storage readers ownership 81/198881/2
authorMichal Bloch <m.bloch@samsung.com>
Wed, 30 Jan 2019 16:35:52 +0000 (17:35 +0100)
committerMichal Bloch <m.bloch@samsung.com>
Mon, 4 Feb 2019 11:55:02 +0000 (11:55 +0000)
Readers now get disconnected from the storage as soon as they read
what they wanted to, instead of waiting until the last log gets
removed from the storage.

Change-Id: Ie1ae500cfa0cb923e2f8b1e476d5411ea13c2960
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
src/logger/log_storage.c
src/tests/test_logger_log_storage.c

index a2e1a61..afbfbf3 100644 (file)
@@ -407,8 +407,9 @@ const struct logger_entry *log_storage_reader_get_new_entry(log_storage_reader *
                // there are more logs in the buffer, let's get them
                list_remove(&reader->current->readers, reader);
                reader->current = reader->current->next;
-               list_add(&reader->current->readers, reader);
                le = &reader->current->entry;
+               if (!log_storage_reader_check_final(reader, reader->current))
+                       list_add(&reader->current->readers, reader);
        }
 
        if (NULL != le)
index be9f34f..2f11efb 100644 (file)
@@ -100,8 +100,8 @@ void test_reader_get_new_entry(log_storage_reader *r, unsigned sec_to_check)
 {
        assert(r);
 
-       const struct logger_entry *le = log_storage_reader_get_new_entry(r);
        const struct log_storage *s = log_storage_reader_get_storage(r);
+       const struct logger_entry *le = log_storage_reader_get_new_entry(r);
        assert(le);
        assert(s);
        int32_t entry_sec;