From 18611eccb9a30d02dbfe77ecfbb3faf3fe4e5edc Mon Sep 17 00:00:00 2001 From: Vikram Rajkumar Date: Sat, 5 Jul 2014 16:14:25 -0400 Subject: [PATCH] Fix log rotation scheduling bug --- src/log/file_appender.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/log/file_appender.cpp b/src/log/file_appender.cpp index e012b5a..dad9716 100644 --- a/src/log/file_appender.cpp +++ b/src/log/file_appender.cpp @@ -70,6 +70,9 @@ namespace fc { { if( cfg.rotate ) { + FC_ASSERT( cfg.rotation_interval >= seconds( 1 ) ); + FC_ASSERT( cfg.rotation_limit >= cfg.rotation_interval ); + if( cfg.rotation_compression ) _compression_thread.reset( new thread( "compression") ); @@ -100,7 +103,12 @@ namespace fc { if( !initializing ) { - if( start_time <= _current_file_start_time ) return; + if( start_time <= _current_file_start_time ) + { + _rotation_task = schedule( [this]() { rotate_files(); }, _current_file_start_time + cfg.rotation_interval.to_seconds() ); + return; + } + fc::scoped_lock lock( slock ); out.flush(); out.close(); @@ -143,7 +151,7 @@ namespace fc { } _current_file_start_time = start_time; - _rotation_task = schedule( [this]() { rotate_files(); }, now + cfg.rotation_interval ); + _rotation_task = schedule( [this]() { rotate_files(); }, _current_file_start_time + cfg.rotation_interval.to_seconds() ); } }; file_appender::config::config( const fc::path& p )