diff --git a/selfdrive/loggerd/bootlog.cc b/selfdrive/loggerd/bootlog.cc index c5897091dc..a723124847 100644 --- a/selfdrive/loggerd/bootlog.cc +++ b/selfdrive/loggerd/bootlog.cc @@ -51,8 +51,6 @@ static kj::Array build_boot_log() { } int main(int argc, char** argv) { - clear_locks(LOG_ROOT); - const std::string path = LOG_ROOT + "/boot/" + logger_get_route_name() + ".bz2"; LOGW("bootlog to %s", path.c_str()); diff --git a/selfdrive/loggerd/logger.cc b/selfdrive/loggerd/logger.cc index 81cfd131f6..6ba520d162 100644 --- a/selfdrive/loggerd/logger.cc +++ b/selfdrive/loggerd/logger.cc @@ -267,15 +267,3 @@ void lh_close(LoggerHandle* h) { } pthread_mutex_unlock(&h->lock); } - -int clear_locks_fn(const char* fpath, const struct stat *sb, int tyupeflag) { - const char* dot = strrchr(fpath, '.'); - if (dot && strcmp(dot, ".lock") == 0) { - unlink(fpath); - } - return 0; -} - -void clear_locks(const std::string log_root) { - ftw(log_root.c_str(), clear_locks_fn, 16); -} diff --git a/selfdrive/loggerd/logger.h b/selfdrive/loggerd/logger.h index e85d7810e0..bdda9d6917 100644 --- a/selfdrive/loggerd/logger.h +++ b/selfdrive/loggerd/logger.h @@ -96,4 +96,3 @@ void logger_log(LoggerState *s, uint8_t* data, size_t data_size, bool in_qlog); void lh_log(LoggerHandle* h, uint8_t* data, size_t data_size, bool in_qlog); void lh_close(LoggerHandle* h); -void clear_locks(const std::string log_root); diff --git a/selfdrive/loggerd/tests/loggerd_tests_common.py b/selfdrive/loggerd/tests/loggerd_tests_common.py index 1a16e343e6..59952fd2c3 100644 --- a/selfdrive/loggerd/tests/loggerd_tests_common.py +++ b/selfdrive/loggerd/tests/loggerd_tests_common.py @@ -14,7 +14,8 @@ def create_random_file(file_path, size_mb, lock=False): pass lock_path = file_path + ".lock" - os.close(os.open(lock_path, os.O_CREAT | os.O_EXCL)) + if lock: + os.close(os.open(lock_path, os.O_CREAT | os.O_EXCL)) chunks = 128 chunk_bytes = int(size_mb * 1024 * 1024 / chunks) @@ -24,9 +25,6 @@ def create_random_file(file_path, size_mb, lock=False): for _ in range(chunks): f.write(data) - if not lock: - os.remove(lock_path) - class MockResponse(): def __init__(self, text, status_code): self.text = text diff --git a/selfdrive/loggerd/tests/test_loggerd.cc b/selfdrive/loggerd/tests/test_loggerd.cc index 849b350ee4..d84185cbba 100644 --- a/selfdrive/loggerd/tests/test_loggerd.cc +++ b/selfdrive/loggerd/tests/test_loggerd.cc @@ -91,21 +91,3 @@ TEST_CASE("trigger_rotate") { REQUIRE(frame_id == start_frame_id + encoder_seg * (SEGMENT_LENGTH * MAIN_FPS)); } } - -TEST_CASE("clear_locks") { - std::vector dirs; - for (int i = 0; i < 10; ++i) { - std::string &path = dirs.emplace_back(LOG_ROOT + "/" + std::to_string(i)); - REQUIRE(util::create_directories(path, 0775)); - std::ofstream{path + "/.lock"}; - REQUIRE(util::file_exists(path + "/.lock")); - } - - clear_locks(LOG_ROOT); - - for (const auto &dir : dirs) { - std::string lock_file = dir + "/.lock"; - REQUIRE(util::file_exists(lock_file) == false); - rmdir(dir.c_str()); - } -} diff --git a/selfdrive/loggerd/tests/test_uploader.py b/selfdrive/loggerd/tests/test_uploader.py index 54c65db73d..01b529468b 100755 --- a/selfdrive/loggerd/tests/test_uploader.py +++ b/selfdrive/loggerd/tests/test_uploader.py @@ -133,9 +133,11 @@ class TestUploader(UploaderTestCase): self.assertTrue(log_handler.upload_order == exp_order, "Files uploaded in wrong order") def test_no_upload_with_lock_file(self): + self.start_thread() + + time.sleep(0.25) f_paths = self.gen_files(lock=True, boot=False) - self.start_thread() # allow enough time that files should have been uploaded if they would be uploaded time.sleep(5) self.join_thread() @@ -144,5 +146,15 @@ class TestUploader(UploaderTestCase): self.assertFalse(getxattr(f_path, uploader.UPLOAD_ATTR_NAME), "File upload when locked") + def test_clear_locks_on_startup(self): + f_paths = self.gen_files(lock=True, boot=False) + self.start_thread() + time.sleep(1) + self.join_thread() + + for f_path in f_paths: + self.assertFalse(os.path.isfile(f_path + ".lock"), "File lock not cleared on startup") + + if __name__ == "__main__": unittest.main(failfast=True) diff --git a/selfdrive/loggerd/uploader.py b/selfdrive/loggerd/uploader.py index 2013a522bc..afdc5a6ed1 100644 --- a/selfdrive/loggerd/uploader.py +++ b/selfdrive/loggerd/uploader.py @@ -213,6 +213,8 @@ class Uploader(): return msg def uploader_fn(exit_event): + clear_locks(ROOT) + params = Params() dongle_id = params.get("DongleId", encoding='utf8')