From 526522729c041fc4edb70b18c4bf52463751e257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20van=20Eeden?= Date: Wed, 11 Mar 2020 08:36:06 +0100 Subject: [PATCH] Set non-zero error code for compression failures * Add non-zero error code for compression related issues like invalid algorithm and write failures * Add assert() to ensure error codes as non-zero --- client/dump/compression_lz4_writer.cc | 2 +- client/dump/compression_zlib_writer.cc | 4 ++-- client/dump/mysqldump_tool_chain_maker.cc | 2 +- client/dump/program.cc | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/client/dump/compression_lz4_writer.cc b/client/dump/compression_lz4_writer.cc index f5b8a31e244..c01ea7f4d89 100644 --- a/client/dump/compression_lz4_writer.cc +++ b/client/dump/compression_lz4_writer.cc @@ -38,7 +38,7 @@ void Compression_lz4_writer::prepare_buffer(size_t src_size) { void Compression_lz4_writer::process_buffer(size_t lz4_result) { if (LZ4F_isError(lz4_result)) { this->pass_message(Mysql::Tools::Base::Message_data( - 0, "LZ4 compression failed", Mysql::Tools::Base::Message_type_error)); + 1, "LZ4 compression failed", Mysql::Tools::Base::Message_type_error)); } else if (lz4_result > 0) { this->append_output(std::string(&m_buffer[0], lz4_result)); } diff --git a/client/dump/compression_zlib_writer.cc b/client/dump/compression_zlib_writer.cc index 603b4323dec..fd150b08f9e 100644 --- a/client/dump/compression_zlib_writer.cc +++ b/client/dump/compression_zlib_writer.cc @@ -39,7 +39,7 @@ void Compression_zlib_writer::process_buffer(bool flush_stream) { if (res == Z_STREAM_ERROR) { this->pass_message(Mysql::Tools::Base::Message_data( - 0, "zlib compression failed", + 1, "zlib compression failed", Mysql::Tools::Base::Message_type_error)); } @@ -76,7 +76,7 @@ bool Compression_zlib_writer::init() { int ret = deflateInit(&m_compression_context, m_compression_level); if (ret != Z_OK) { this->pass_message(Mysql::Tools::Base::Message_data( - 0, "zlib compression initialization failed", + 1, "zlib compression initialization failed", Mysql::Tools::Base::Message_type_error)); return true; } diff --git a/client/dump/mysqldump_tool_chain_maker.cc b/client/dump/mysqldump_tool_chain_maker.cc index eb80bd71b3e..01d2df298c0 100644 --- a/client/dump/mysqldump_tool_chain_maker.cc +++ b/client/dump/mysqldump_tool_chain_maker.cc @@ -126,7 +126,7 @@ I_object_reader *Mysqldump_tool_chain_maker::create_chain( compression_writer_as_writer = compression_writer; } else { this->pass_message(Mysql::Tools::Base::Message_data( - 0, "Unknown compression method: " + algorithm_name, + 1, "Unknown compression method: " + algorithm_name, Mysql::Tools::Base::Message_type_error)); return NULL; } diff --git a/client/dump/program.cc b/client/dump/program.cc index 24cfee9adb0..42f76262cca 100644 --- a/client/dump/program.cc +++ b/client/dump/program.cc @@ -72,6 +72,7 @@ void Program::error(const Mysql::Tools::Base::Message_data &message) { if (message.get_message_type() == Mysql::Tools::Base::Message_type_error) { std::cerr << "Dump process encountered error and will not continue." << std::endl; + assert((int)message.get_code() != 0); m_error_code.store((int)message.get_code()); } }