fix: handle_fatal_signal (sig=6) in std::vector<std::string, std::allocator<std::string> >::_M_range_check | c++/4.8.2/bits/stl_vector.h:794 #174
Summary: Fix for https://github.com/facebook/mysql-5.6/issues/174 When there is no old files to purge, vector.at(i) function was crashing if (old_info_log_file_count != 0 && old_info_log_file_count >= db_options_.keep_log_file_num) { std::sort(old_info_log_files.begin(), old_info_log_files.end()); size_t end = old_info_log_file_count - db_options_.keep_log_file_num; for (unsigned int i = 0; i <= end; i++) { std::string& to_delete = old_info_log_files.at(i); Added check to old_info_log_file_count be non zero. Test Plan: run existing tests Reviewers: gunnarku, vasilep, sdong, yhchiang Reviewed By: yhchiang Subscribers: andrewkr, webscalesql-eng, dhruba Differential Revision: https://reviews.facebook.net/D55245
This commit is contained in:
parent
d9620239d2
commit
e8e6cf0173
@ -829,7 +829,8 @@ void DBImpl::PurgeObsoleteFiles(const JobContext& state) {
|
|||||||
|
|
||||||
// Delete old info log files.
|
// Delete old info log files.
|
||||||
size_t old_info_log_file_count = old_info_log_files.size();
|
size_t old_info_log_file_count = old_info_log_files.size();
|
||||||
if (old_info_log_file_count >= db_options_.keep_log_file_num) {
|
if (old_info_log_file_count != 0 &&
|
||||||
|
old_info_log_file_count >= db_options_.keep_log_file_num) {
|
||||||
std::sort(old_info_log_files.begin(), old_info_log_files.end());
|
std::sort(old_info_log_files.begin(), old_info_log_files.end());
|
||||||
size_t end = old_info_log_file_count - db_options_.keep_log_file_num;
|
size_t end = old_info_log_file_count - db_options_.keep_log_file_num;
|
||||||
for (unsigned int i = 0; i <= end; i++) {
|
for (unsigned int i = 0; i <= end; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user