提交 047868e3 编写于 作者: H hiddenbomb 提交者: LINGuanRen

fix error when disk full

上级 5895e3cc
...@@ -517,8 +517,8 @@ int ObStorageLogWriter::get_log_item( ...@@ -517,8 +517,8 @@ int ObStorageLogWriter::get_log_item(
const LogCommand cmd, const ObBaseStorageLogBuffer& data, ObStorageLogItem*& log_item) const LogCommand cmd, const ObBaseStorageLogBuffer& data, ObStorageLogItem*& log_item)
{ {
int ret = OB_SUCCESS; int ret = OB_SUCCESS;
void* log_buffer = nullptr; void *log_buffer = NULL;
log_item = nullptr; ObStorageLogItem *item = NULL;
if (IS_NOT_INIT) { if (IS_NOT_INIT) {
ret = OB_NOT_INIT; ret = OB_NOT_INIT;
LOG_WARN("not init", K(ret)); LOG_WARN("not init", K(ret));
...@@ -543,16 +543,16 @@ int ObStorageLogWriter::get_log_item( ...@@ -543,16 +543,16 @@ int ObStorageLogWriter::get_log_item(
LOG_ERROR("log item too long", K(ret), K(total_item_size), LITERAL_K(LOG_ITEM_MAX_LENGTH)); LOG_ERROR("log item too long", K(ret), K(total_item_size), LITERAL_K(LOG_ITEM_MAX_LENGTH));
} else if (!alloc_locally && OB_FAIL(log_buffers_.pop(log_buffer))) { } else if (!alloc_locally && OB_FAIL(log_buffers_.pop(log_buffer))) {
LOG_WARN("pop failed", K(ret)); LOG_WARN("pop failed", K(ret));
} else if (OB_FAIL(slog_items_.pop(log_item))) { } else if (OB_FAIL(slog_items_.pop(item))) {
LOG_WARN("pop log_item failed", K(ret)); LOG_WARN("pop log item failed", K(ret));
} else if (OB_FAIL(log_item->init(reinterpret_cast<char*>(log_buffer), total_item_size))) { } else if (OB_FAIL(item->init(reinterpret_cast<char *>(log_buffer), total_item_size))) {
LOG_WARN("init log_item failed", K(ret)); LOG_WARN("init log item failed", K(ret));
} else { } else {
log_item->start_cursor_ = build_cursor_; item->start_cursor_ = build_cursor_;
if (OB_FAIL(build_log_item(cmd, data, log_item))) { if (OB_FAIL(build_log_item(cmd, data, item))) {
LOG_WARN("build_log_item failed", K(ret), K(cmd), K(data)); LOG_WARN("build_log_item failed", K(ret), K(cmd), K(data));
} else { } else {
log_item->end_cursor_ = build_cursor_; item->end_cursor_ = build_cursor_;
} }
} }
} }
...@@ -564,12 +564,14 @@ int ObStorageLogWriter::get_log_item( ...@@ -564,12 +564,14 @@ int ObStorageLogWriter::get_log_item(
LOG_ERROR("push log_buffer failed", K(temp_ret), KP(log_buffer)); LOG_ERROR("push log_buffer failed", K(temp_ret), KP(log_buffer));
} }
} }
if (NULL != log_item) { if (NULL != item) {
log_item->reset(); item->reset();
if (OB_SUCCESS != (temp_ret = slog_items_.push(log_item))) { if (OB_SUCCESS != (temp_ret = slog_items_.push(item))) {
LOG_ERROR("push log_item failed", K(temp_ret), KP(log_item)); LOG_ERROR("push log item failed", K(temp_ret), KP(item));
} }
} }
} else {
log_item = item;
} }
return ret; return ret;
} }
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <gtest/gtest.h> #include <gtest/gtest.h>
#include <thread> #include <thread>
#include "lib/file/file_directory_utils.h" #include "lib/file/file_directory_utils.h"
#include "lib/utility/ob_tracepoint.h" #include "lib/utility/ob_tracepoint.h"
#include "storage/blocksstable/slog/ob_storage_log_reader.h" #include "storage/blocksstable/slog/ob_storage_log_reader.h"
...@@ -1094,6 +1095,8 @@ TEST_F(TestStorageLogReaderWriter, read_multiple_files) ...@@ -1094,6 +1095,8 @@ TEST_F(TestStorageLogReaderWriter, read_multiple_files)
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
system("rm -f test_storage_log_reader_writer.log*");
OB_LOGGER.set_file_name("test_storage_log_reader_writer.log", true);
OB_LOGGER.set_log_level("INFO"); OB_LOGGER.set_log_level("INFO");
testing::InitGoogleTest(&argc, argv); testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS(); return RUN_ALL_TESTS();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册