Journal files don't have to exist if an owner sheep exits correctly. Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp> --- sheep/journal.c | 16 ++++++++++++++++ sheep/sheep.c | 6 ++++++ sheep/sheep_priv.h | 1 + 3 files changed, 23 insertions(+), 0 deletions(-) diff --git a/sheep/journal.c b/sheep/journal.c index 6669e79..e2c0e32 100644 --- a/sheep/journal.c +++ b/sheep/journal.c @@ -283,6 +283,22 @@ int journal_file_init(const char *path, size_t size, bool skip) return 0; } +void clean_journal_file(const char *p) +{ + int ret; + char path[PATH_MAX]; + + snprintf(path, sizeof(path), "%s/%s", p, jfile_name[0]); + ret = unlink(path); + if (ret < 0) + sd_eprintf("unlink(%s): %m", path); + + snprintf(path, sizeof(path), "%s/%s", p, jfile_name[1]); + ret = unlink(path); + if (ret < 0) + sd_eprintf("unlink(%s): %m", path); +} + static inline bool jfile_enough_space(size_t size) { if (jfile.pos + size > jfile_size) diff --git a/sheep/sheep.c b/sheep/sheep.c index cda8493..61abd1a 100644 --- a/sheep/sheep.c +++ b/sheep/sheep.c @@ -691,6 +691,12 @@ int main(int argc, char **argv) sd_printf(SDOG_INFO, "shutdown"); leave_cluster(); + + if (uatomic_is_true(&sys->use_journal)) { + sd_iprintf("cleaning journal file"); + clean_journal_file(jpath); + } + log_close(); if (pid_file) diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h index d1022ac..a447387 100644 --- a/sheep/sheep_priv.h +++ b/sheep/sheep_priv.h @@ -402,6 +402,7 @@ bool sheep_need_retry(uint32_t epoch); /* journal_file.c */ int journal_file_init(const char *path, size_t size, bool skip); +void clean_journal_file(const char *p); int journal_write_store(uint64_t oid, const char *buf, size_t size, off_t, bool); int journal_write_epoch(const char *buf, size_t size, uint32_t epoch); -- 1.7.5.1 |