diff --git a/CMakeLists.txt b/CMakeLists.txt index b2e9c9da7..d9e87f167 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,7 @@ elseif(OB_INCLUDE_UNITTEST) add_subdirectory(unittest EXCLUDE_FROM_ALL) endif() -if (OB_BUILD_TOOLS) +if (OB_BUILD_TOOLS OR OB_BUILD_LIBOBLOG) add_subdirectory(tools) elseif (OB_INCLUDE_TOOLS) add_subdirectory(tools EXCLUDE_FROM_ALL) diff --git a/cmake/RPM.cmake b/cmake/RPM.cmake index f794a67ba..a66a68547 100644 --- a/cmake/RPM.cmake +++ b/cmake/RPM.cmake @@ -60,7 +60,7 @@ install(FILES COMPONENT server) ## oceanbase-devel -# liboblog.so and libob_sql_proxy_parser_static.a +# libobcdc.so and libob_sql_proxy_parser_static.a set(OCEANBASE_DEVEL_LIB_FILES "") set(OCEANBASE_DEVEL_INCLUDE_FILES deps/oblib/src/lib/ob_errno.h) set(OCEANBASE_DEVEL_BIN_FILES "") @@ -81,16 +81,16 @@ endif() if (OB_BUILD_LIBOBLOG) # lib - # list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/src/liboblog/src/liboblog.a) - list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/src/liboblog/src/liboblog.so) - list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/src/liboblog/src/liboblog.so.1) - list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/src/liboblog/src/liboblog.so.1.0.0) + # list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/libobcdc/src/libobcdc.a) + list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so) + list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so.1) + list(APPEND OCEANBASE_DEVEL_LIB_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/src/libobcdc.so.1.0.0) # include lilboblog header - list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES src/liboblog/src/liboblog.h) + list(APPEND OCEANBASE_DEVEL_INCLUDE_FILES tools/obcdc/src/libobcdc.h) # bin - list(APPEND OCEANBASE_DEVEL_BIN_FILES ${CMAKE_BINARY_DIR}/src/liboblog/tests/oblog_tailf) + list(APPEND OCEANBASE_DEVEL_BIN_FILES ${CMAKE_BINARY_DIR}/tools/obcdc/tests/obcdc_tailf) endif() set(CPACK_RPM_DEVEL_DEFAULT_USER "root") diff --git a/deps/3rd/oceanbase.el7.aarch64.deps b/deps/3rd/oceanbase.el7.aarch64.deps index e474d2642..335518c8b 100644 --- a/deps/3rd/oceanbase.el7.aarch64.deps +++ b/deps/3rd/oceanbase.el7.aarch64.deps @@ -21,3 +21,6 @@ obdevtools-cmake-3.20.2-15.el7.aarch64.rpm obdevtools-flex-2.5.35-10.el7.aarch64.rpm obdevtools-gcc-5.2.0-15.el7.aarch64.rpm obdevtools-llvm-11.0.1-40.el7.aarch64.rpm + +[tools-deps] +devdeps-rocksdb-6.22.1-15.el7.aarch64.rpm diff --git a/deps/3rd/oceanbase.el8.x86_64.deps b/deps/3rd/oceanbase.el8.x86_64.deps index 599fa76a2..1815b9ae1 100644 --- a/deps/3rd/oceanbase.el8.x86_64.deps +++ b/deps/3rd/oceanbase.el8.x86_64.deps @@ -21,3 +21,6 @@ obdevtools-cmake-3.20.2-3.el8.x86_64.rpm obdevtools-flex-2.5.35-3.el8.x86_64.rpm obdevtools-gcc-5.2.0-3.el8.x86_64.rpm obdevtools-llvm-11.0.1-40.el8.x86_64.rpm + +[tools-deps] +devdeps-rocksdb-6.22.1-15.el8.x86_64.rpm diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4fddfbc13..637eb20b5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -54,7 +54,6 @@ add_subdirectory(archive) add_subdirectory(election) add_subdirectory(storage) add_subdirectory(observer) -add_subdirectory(liboblog) if (OB_ENABLE_SERVER_PCH) target_precompile_headers(ob_base INTERFACE ${ob_server_pchs}) diff --git a/src/liboblog/src/ob_log_mock_store_service.h b/src/liboblog/src/ob_log_mock_store_service.h deleted file mode 100644 index b2c5c8ec5..000000000 --- a/src/liboblog/src/ob_log_mock_store_service.h +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Copyright (c) 2021 OceanBase - * OceanBase CE is licensed under Mulan PubL v2. - * You can use this software according to the terms and conditions of the Mulan PubL v2. - * You may obtain a copy of Mulan PubL v2 at: - * http://license.coscl.org.cn/MulanPubL-2.0 - * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, - * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, - * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - * See the Mulan PubL v2 for more details. - */ - -#ifndef OCEANBASE_LIBOBLOG_OB_LOG_MOCK_STORE_SERVICE_H_ -#define OCEANBASE_LIBOBLOG_OB_LOG_MOCK_STORE_SERVICE_H_ - -#include "ob_log_store_service.h" - -namespace oceanbase -{ -namespace liboblog -{ -class MockObLogStoreService : public IObStoreService -{ -public: - MockObLogStoreService() {} - void destroy() {} - ~MockObLogStoreService() { destroy(); } - int init(const std::string &path) { UNUSED(path); return 0; } - int close() { return 0; } -public: - int put(const std::string &key, const ObSlice &value) - { - UNUSED(key); - UNUSED(value); - return 0; - } - - int put(void *cf_handle, const std::string &key, const ObSlice &value) - { - UNUSED(key); - UNUSED(value); - UNUSED(cf_handle); - return 0; - } - - int batch_write(void *cf_handle, const std::vector &keys, const std::vector &values) - { - UNUSED(cf_handle); - UNUSED(keys); - UNUSED(values); - return 0; - } - - int get(const std::string &key, std::string &value) - { - UNUSED(key); - UNUSED(value); - return 0; - } - - int get(void *cf_handle, const std::string &key, std::string &value) - { - UNUSED(cf_handle); - UNUSED(key); - UNUSED(value); - return 0; - } - - int del(const std::string &key) - { - UNUSED(key); - return 0; - } - - int del(void *cf_handle, const std::string &key) - { - UNUSED(cf_handle); - UNUSED(key); - return 0; - } - - int create_column_family(const std::string& column_family_name, - void *&cf_handle) - { - UNUSED(column_family_name); - cf_handle = this; - return 0; - } - - int drop_column_family(void *cf_handle) - { - UNUSED(cf_handle); - return 0; - } - - int destory_column_family(void *cf_handle) - { - UNUSED(cf_handle); - return 0; - } - - void get_mem_usage(const std::vector ids, - const std::vector cf_handles) - { - UNUSED(ids); - UNUSED(cf_handles); - } - -}; - -} -} - - -#endif diff --git a/src/liboblog/tests/CMakeLists.txt b/src/liboblog/tests/CMakeLists.txt deleted file mode 100644 index ab88ed53b..000000000 --- a/src/liboblog/tests/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -add_executable(oblog_tailf - main.cpp - oblog_main.h oblog_main.cpp - ob_binlog_record_printer.h ob_binlog_record_printer.cpp - ) -target_link_libraries(oblog_tailf PRIVATE oblog) -target_include_directories(oblog_tailf PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 87e6e1689..50d298c9f 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,2 +1,3 @@ +add_subdirectory(obcdc) add_subdirectory(ob_error) add_subdirectory(ob_admin) diff --git a/src/liboblog/CMakeLists.txt b/tools/obcdc/CMakeLists.txt similarity index 100% rename from src/liboblog/CMakeLists.txt rename to tools/obcdc/CMakeLists.txt diff --git a/src/liboblog/src/CMakeLists.txt b/tools/obcdc/src/CMakeLists.txt similarity index 77% rename from src/liboblog/src/CMakeLists.txt rename to tools/obcdc/src/CMakeLists.txt index 668d6a461..a66380a8a 100644 --- a/src/liboblog/src/CMakeLists.txt +++ b/tools/obcdc/src/CMakeLists.txt @@ -1,18 +1,12 @@ -add_library(oblog_base INTERFACE) -target_include_directories(oblog_base INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(oblog_base - INTERFACE ob_base oblogmsg_static - ) - -add_library(oblog_miner INTERFACE) - -target_include_directories(oblog_miner INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries(oblog_miner - INTERFACE ob_base oblogmsg_static +add_library(obcdc_base INTERFACE) +target_include_directories(obcdc_base INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(obcdc_base + INTERFACE ob_base oceanbase::oblogmsg_static easy oblib + ${DEP_DIR}/lib64/librocksdb.a ) set(SRC_LIST - liboblog.h liboblog.cpp + libobcdc.h libobcdc.cpp ob_concurrent_seq_queue.h ob_concurrent_seq_queue.cpp ob_easy_hazard_map.h ob_log_adapt_string.h ob_log_adapt_string.cpp @@ -47,7 +41,6 @@ set(SRC_LIST ob_log_row_data_index.h ob_log_row_data_index.cpp ob_log_store_service.h ob_log_store_service_stat.h ob_log_store_service_stat.cpp - ob_log_mock_store_service.h ob_log_storager.h ob_log_storager.cpp ob_log_reader_plug_in.h ob_log_reader_plug_in.cpp ob_log_data_processor.h ob_log_data_processor.cpp @@ -112,53 +105,53 @@ set(SRC_LIST ob_log_part_callback.h ob_log_ref_state.h ob_log_ref_state.cpp ob_log_committer.h ob_log_committer.cpp + ob_log_rocksdb_store_service.h ob_log_rocksdb_store_service.cpp ) -add_library(oblog_objects OBJECT ${SRC_LIST}) -target_link_libraries(oblog_objects PUBLIC oblog_base) -target_compile_definitions(oblog_objects PRIVATE ENABLE_DEBUG_LOG) -target_compile_options(oblog_objects PRIVATE -Werror) +add_library(obcdc_objects OBJECT ${SRC_LIST}) +target_link_libraries(obcdc_objects PUBLIC obcdc_base) +target_compile_definitions(obcdc_objects PRIVATE ENABLE_DEBUG_LOG) +target_compile_options(obcdc_objects PRIVATE -Werror) -disable_pch(oblog_objects) +disable_pch(obcdc_objects) set(LGPL_DEPS "-L${DEP_DIR}/lib/mariadb -l:libmariadbclient.a -laio") if (OB_SO_CACHE) - add_library(oblog SHARED IMPORTED GLOBAL) - set_target_properties(oblog PROPERTIES - IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/liboblog.so" - IMPORTED_LINK_INTERFACE_LIBRARIES oblog_miner) + add_library(obcdc SHARED IMPORTED GLOBAL) + set_target_properties(obcdc PROPERTIES + IMPORTED_LOCATION "${CMAKE_CURRENT_BINARY_DIR}/libobcdc.so" + IMPORTED_LINK_INTERFACE_LIBRARIES obcdc_base) else() - add_library(oblog SHARED ${CMAKE_BINARY_DIR}/src/observer/ob_version.cpp) - target_link_libraries(oblog - PUBLIC oblog_base oblib + add_library(obcdc SHARED ${CMAKE_BINARY_DIR}/src/observer/ob_version.cpp) + target_link_libraries(obcdc + PUBLIC obcdc_base PRIVATE -Wl,--whole-archive - $ + $ -Wl,--no-whole-archive -Wl,--start-group oceanbase_static -Wl,--end-group - -static-libgcc -static-libstdc++ + PRIVATE -static-libgcc -static-libstdc++ -Wl,-Bsymbolic -Wl,-e,so_main ${LGPL_DEPS} - easy ) - add_dependencies(oblog oblog_objects) - set_target_properties(oblog PROPERTIES SOVERSION 1 VERSION 1.0.0) + add_dependencies(obcdc obcdc_objects) + set_target_properties(obcdc PROPERTIES SOVERSION 1 VERSION 1.0.0) endif() -add_library(oblog_objects_miner OBJECT ${SRC_LIST}) -disable_pch(oblog_objects_miner) -target_link_libraries(oblog_objects_miner PUBLIC oblog_miner) -add_library(oblog_static +add_library(obcdc_objects_miner OBJECT ${SRC_LIST}) +disable_pch(obcdc_objects_miner) +target_link_libraries(obcdc_objects_miner PUBLIC obcdc_base) +add_library(obcdc_static STATIC ${CMAKE_BINARY_DIR}/src/observer/ob_version.cpp) -target_link_libraries(oblog_static - PUBLIC oblog_objects_miner oblib +target_link_libraries(obcdc_static + PUBLIC obcdc_objects_miner -Wl,--start-group oceanbase_static -Wl,--end-group PRIVATE -static-libgcc -static-libstdc++ ${LGPL_DEPS} ) -set_target_properties(oblog_static PROPERTIES OUTPUT_NAME "oblog") +set_target_properties(obcdc_static PROPERTIES OUTPUT_NAME "obcdc") diff --git a/src/liboblog/src/liboblog.cpp b/tools/obcdc/src/libobcdc.cpp similarity index 98% rename from src/liboblog/src/liboblog.cpp rename to tools/obcdc/src/libobcdc.cpp index 006ae4d47..19d2e01e0 100644 --- a/src/liboblog/src/liboblog.cpp +++ b/tools/obcdc/src/libobcdc.cpp @@ -10,7 +10,7 @@ * See the Mulan PubL v2 for more details. */ -#include "liboblog.h" +#include "libobcdc.h" #include #include diff --git a/src/liboblog/src/liboblog.h b/tools/obcdc/src/libobcdc.h similarity index 100% rename from src/liboblog/src/liboblog.h rename to tools/obcdc/src/libobcdc.h diff --git a/src/liboblog/src/ob_concurrent_seq_queue.cpp b/tools/obcdc/src/ob_concurrent_seq_queue.cpp similarity index 100% rename from src/liboblog/src/ob_concurrent_seq_queue.cpp rename to tools/obcdc/src/ob_concurrent_seq_queue.cpp diff --git a/src/liboblog/src/ob_concurrent_seq_queue.h b/tools/obcdc/src/ob_concurrent_seq_queue.h similarity index 100% rename from src/liboblog/src/ob_concurrent_seq_queue.h rename to tools/obcdc/src/ob_concurrent_seq_queue.h diff --git a/src/liboblog/src/ob_easy_hazard_map.h b/tools/obcdc/src/ob_easy_hazard_map.h similarity index 100% rename from src/liboblog/src/ob_easy_hazard_map.h rename to tools/obcdc/src/ob_easy_hazard_map.h diff --git a/src/liboblog/src/ob_log_adapt_string.cpp b/tools/obcdc/src/ob_log_adapt_string.cpp similarity index 100% rename from src/liboblog/src/ob_log_adapt_string.cpp rename to tools/obcdc/src/ob_log_adapt_string.cpp diff --git a/src/liboblog/src/ob_log_adapt_string.h b/tools/obcdc/src/ob_log_adapt_string.h similarity index 100% rename from src/liboblog/src/ob_log_adapt_string.h rename to tools/obcdc/src/ob_log_adapt_string.h diff --git a/src/liboblog/src/ob_log_all_svr_cache.cpp b/tools/obcdc/src/ob_log_all_svr_cache.cpp similarity index 100% rename from src/liboblog/src/ob_log_all_svr_cache.cpp rename to tools/obcdc/src/ob_log_all_svr_cache.cpp diff --git a/src/liboblog/src/ob_log_all_svr_cache.h b/tools/obcdc/src/ob_log_all_svr_cache.h similarity index 100% rename from src/liboblog/src/ob_log_all_svr_cache.h rename to tools/obcdc/src/ob_log_all_svr_cache.h diff --git a/src/liboblog/src/ob_log_binlog_record.cpp b/tools/obcdc/src/ob_log_binlog_record.cpp similarity index 97% rename from src/liboblog/src/ob_log_binlog_record.cpp rename to tools/obcdc/src/ob_log_binlog_record.cpp index f380e64f9..15004bdce 100644 --- a/src/liboblog/src/ob_log_binlog_record.cpp +++ b/tools/obcdc/src/ob_log_binlog_record.cpp @@ -205,7 +205,7 @@ int ObLogBR::init_data(const RecordType type, LOG_ERROR("ILogRecord has not been created"); ret = OB_NOT_INIT; } else if (OB_UNLIKELY(EUNKNOWN == type) - || OB_UNLIKELY(! is_valid_cluster_id(cluster_id)) + || OB_UNLIKELY(! is_valid_cluster_id_(cluster_id)) || OB_UNLIKELY(OB_INVALID_TENANT_ID == tenant_id) || OB_UNLIKELY(commit_version <= 0) || OB_UNLIKELY(OB_INVALID_TIMESTAMP == ddl_schema_version)) { @@ -333,6 +333,14 @@ int ObLogBR::init_binlog_record_second_(const RecordType type, return ret; } +bool ObLogBR::is_valid_cluster_id_(const uint64_t cluster_id) const +{ + bool bool_ret = false; + bool_ret = is_valid_cluster_id(cluster_id) + || (MIN_DRC_CLUSTER_ID <= cluster_id && MAX_DRC_CLUSTER_ID >= cluster_id); + return bool_ret; +} + int ObLogBR::put_old(ILogRecord *br, const bool is_changed) { int ret = OB_SUCCESS; diff --git a/src/liboblog/src/ob_log_binlog_record.h b/tools/obcdc/src/ob_log_binlog_record.h similarity index 94% rename from src/liboblog/src/ob_log_binlog_record.h rename to tools/obcdc/src/ob_log_binlog_record.h index 3b40d2836..d7ed3ce6a 100644 --- a/src/liboblog/src/ob_log_binlog_record.h +++ b/tools/obcdc/src/ob_log_binlog_record.h @@ -35,6 +35,8 @@ class ObLogBR : public ObLogResourceRecycleTask public: static const char *COLUMN_CHANGED_LABEL_PTR; static const char *COLUMN_UNCHANGED_LABEL_PTR; + static const uint64_t MIN_DRC_CLUSTER_ID = 4294901760; // 0xffff0000 + static const uint64_t MAX_DRC_CLUSTER_ID = 4294967295; // 0xffffffff public: ObLogBR(); @@ -139,6 +141,10 @@ private: const common::ObString &unique_id, const int64_t commit_version, const common::ObString *major_version_str = NULL); + // ob defined cluster id: 0x00000001~0xfffeffff. [1, 4294901759] + // drc defined cluster id: 0xffff0000-0xffffffff, [4294901760~4294967295] + // liboblog valid cluster_id: [0x00000001~0xffffffff] + bool is_valid_cluster_id_(const uint64_t cluster_id) const; private: ILogRecord *data_; ///< real BinlogRecord diff --git a/src/liboblog/src/ob_log_binlog_record_pool.cpp b/tools/obcdc/src/ob_log_binlog_record_pool.cpp similarity index 100% rename from src/liboblog/src/ob_log_binlog_record_pool.cpp rename to tools/obcdc/src/ob_log_binlog_record_pool.cpp diff --git a/src/liboblog/src/ob_log_binlog_record_pool.h b/tools/obcdc/src/ob_log_binlog_record_pool.h similarity index 100% rename from src/liboblog/src/ob_log_binlog_record_pool.h rename to tools/obcdc/src/ob_log_binlog_record_pool.h diff --git a/src/liboblog/src/ob_log_binlog_record_queue.cpp b/tools/obcdc/src/ob_log_binlog_record_queue.cpp similarity index 100% rename from src/liboblog/src/ob_log_binlog_record_queue.cpp rename to tools/obcdc/src/ob_log_binlog_record_queue.cpp diff --git a/src/liboblog/src/ob_log_binlog_record_queue.h b/tools/obcdc/src/ob_log_binlog_record_queue.h similarity index 99% rename from src/liboblog/src/ob_log_binlog_record_queue.h rename to tools/obcdc/src/ob_log_binlog_record_queue.h index 111b3a6af..3cdb7060e 100644 --- a/src/liboblog/src/ob_log_binlog_record_queue.h +++ b/tools/obcdc/src/ob_log_binlog_record_queue.h @@ -68,4 +68,3 @@ private: } // namespace liboblog } // namespace oceanbase #endif /* OCEANBASE_LIBOBLOG_OB_LOG_BINLOG_RECORD_QUEUE_ */ - diff --git a/src/liboblog/src/ob_log_cluster_id_filter.cpp b/tools/obcdc/src/ob_log_cluster_id_filter.cpp similarity index 100% rename from src/liboblog/src/ob_log_cluster_id_filter.cpp rename to tools/obcdc/src/ob_log_cluster_id_filter.cpp diff --git a/src/liboblog/src/ob_log_cluster_id_filter.h b/tools/obcdc/src/ob_log_cluster_id_filter.h similarity index 100% rename from src/liboblog/src/ob_log_cluster_id_filter.h rename to tools/obcdc/src/ob_log_cluster_id_filter.h diff --git a/src/liboblog/src/ob_log_committer.cpp b/tools/obcdc/src/ob_log_committer.cpp similarity index 100% rename from src/liboblog/src/ob_log_committer.cpp rename to tools/obcdc/src/ob_log_committer.cpp diff --git a/src/liboblog/src/ob_log_committer.h b/tools/obcdc/src/ob_log_committer.h similarity index 100% rename from src/liboblog/src/ob_log_committer.h rename to tools/obcdc/src/ob_log_committer.h diff --git a/src/liboblog/src/ob_log_common.h b/tools/obcdc/src/ob_log_common.h similarity index 100% rename from src/liboblog/src/ob_log_common.h rename to tools/obcdc/src/ob_log_common.h diff --git a/src/liboblog/src/ob_log_config.cpp b/tools/obcdc/src/ob_log_config.cpp similarity index 100% rename from src/liboblog/src/ob_log_config.cpp rename to tools/obcdc/src/ob_log_config.cpp diff --git a/src/liboblog/src/ob_log_config.h b/tools/obcdc/src/ob_log_config.h similarity index 98% rename from src/liboblog/src/ob_log_config.h rename to tools/obcdc/src/ob_log_config.h index 64ba0e9d8..65a0d3111 100644 --- a/src/liboblog/src/ob_log_config.h +++ b/tools/obcdc/src/ob_log_config.h @@ -127,8 +127,11 @@ public: "partition trans task pre-alloc count"); DEF_INT(part_trans_task_active_count_upper_bound, OB_CLUSTER_PARAMETER, "200000", "[1,]", "active partition trans task count upper bound"); - DEF_INT(log_entry_task_active_count_upper_bound, OB_CLUSTER_PARAMETER, "200000", "[1,]", - "active log entry task count upper bound"); + DEF_INT(storager_task_count_upper_bound, OB_CLUSTER_PARAMETER, "1000", "[1,]", + "storager task count upper bound"); + DEF_INT(storager_mem_percentage, OB_CLUSTER_PARAMETER, "2", "[1,]", + "storager memory percentage"); + T_DEF_BOOL(skip_recycle_data, OB_CLUSTER_PARAMETER, 0, "0:not_skip, 1:skip") DEF_INT(part_trans_task_reusable_count_upper_bound, OB_CLUSTER_PARAMETER, "10240", "[1,]", "reusable partition trans task count upper bound"); DEF_INT(ready_to_seq_task_upper_bound, OB_CLUSTER_PARAMETER, "20000", "[1,]", @@ -230,7 +233,8 @@ public: // liboblog support multiple working mode, default is storage // 1. storage: transaction data is stored, can support large transactions // 2. memory: transaction data is not stored, it means better performance, but may can not support large transactions - DEF_STR(working_mode, OB_CLUSTER_PARAMETER, "memory", "liboblog working mode"); + DEF_STR(working_mode, OB_CLUSTER_PARAMETER, "storage", "liboblog working mode"); + T_DEF_INT_INFT(rocksdb_write_buffer_size, OB_CLUSTER_PARAMETER, 64, 16, "write buffer size[M]"); T_DEF_BOOL(fetcher_mock_mode, OB_CLUSTER_PARAMETER, 0, "0:disabled, 1:enabled"); T_DEF_INT_INFT(io_thread_num, OB_CLUSTER_PARAMETER, 4, 1, "io thread number"); @@ -313,6 +317,8 @@ public: // Upper limit of progress difference between partitions, in seconds T_DEF_INT_INFT(progress_limit_sec_for_dml, OB_CLUSTER_PARAMETER, 3, 1, "dml progress limit in seconds"); + T_DEF_INT_INFT(progress_limit_sec_for_ddl, OB_CLUSTER_PARAMETER, 3600, 1, "ddl progress limit in seconds"); + // Partition timeout in seconds // If the logs are not fetched after a certain period of time, the stream will be cut diff --git a/src/liboblog/src/ob_log_data_processor.cpp b/tools/obcdc/src/ob_log_data_processor.cpp similarity index 100% rename from src/liboblog/src/ob_log_data_processor.cpp rename to tools/obcdc/src/ob_log_data_processor.cpp diff --git a/src/liboblog/src/ob_log_data_processor.h b/tools/obcdc/src/ob_log_data_processor.h similarity index 100% rename from src/liboblog/src/ob_log_data_processor.h rename to tools/obcdc/src/ob_log_data_processor.h diff --git a/src/liboblog/src/ob_log_ddl_handler.cpp b/tools/obcdc/src/ob_log_ddl_handler.cpp similarity index 100% rename from src/liboblog/src/ob_log_ddl_handler.cpp rename to tools/obcdc/src/ob_log_ddl_handler.cpp diff --git a/src/liboblog/src/ob_log_ddl_handler.h b/tools/obcdc/src/ob_log_ddl_handler.h similarity index 100% rename from src/liboblog/src/ob_log_ddl_handler.h rename to tools/obcdc/src/ob_log_ddl_handler.h diff --git a/src/liboblog/src/ob_log_ddl_parser.cpp b/tools/obcdc/src/ob_log_ddl_parser.cpp similarity index 100% rename from src/liboblog/src/ob_log_ddl_parser.cpp rename to tools/obcdc/src/ob_log_ddl_parser.cpp diff --git a/src/liboblog/src/ob_log_ddl_parser.h b/tools/obcdc/src/ob_log_ddl_parser.h similarity index 100% rename from src/liboblog/src/ob_log_ddl_parser.h rename to tools/obcdc/src/ob_log_ddl_parser.h diff --git a/src/liboblog/src/ob_log_dlist.h b/tools/obcdc/src/ob_log_dlist.h similarity index 100% rename from src/liboblog/src/ob_log_dlist.h rename to tools/obcdc/src/ob_log_dlist.h diff --git a/src/liboblog/src/ob_log_dml_parser.cpp b/tools/obcdc/src/ob_log_dml_parser.cpp similarity index 100% rename from src/liboblog/src/ob_log_dml_parser.cpp rename to tools/obcdc/src/ob_log_dml_parser.cpp diff --git a/src/liboblog/src/ob_log_dml_parser.h b/tools/obcdc/src/ob_log_dml_parser.h similarity index 100% rename from src/liboblog/src/ob_log_dml_parser.h rename to tools/obcdc/src/ob_log_dml_parser.h diff --git a/src/liboblog/src/ob_log_entry_task_pool.cpp b/tools/obcdc/src/ob_log_entry_task_pool.cpp similarity index 100% rename from src/liboblog/src/ob_log_entry_task_pool.cpp rename to tools/obcdc/src/ob_log_entry_task_pool.cpp diff --git a/src/liboblog/src/ob_log_entry_task_pool.h b/tools/obcdc/src/ob_log_entry_task_pool.h similarity index 100% rename from src/liboblog/src/ob_log_entry_task_pool.h rename to tools/obcdc/src/ob_log_entry_task_pool.h diff --git a/src/liboblog/src/ob_log_entry_wrapper.cpp b/tools/obcdc/src/ob_log_entry_wrapper.cpp similarity index 100% rename from src/liboblog/src/ob_log_entry_wrapper.cpp rename to tools/obcdc/src/ob_log_entry_wrapper.cpp diff --git a/src/liboblog/src/ob_log_entry_wrapper.h b/tools/obcdc/src/ob_log_entry_wrapper.h similarity index 100% rename from src/liboblog/src/ob_log_entry_wrapper.h rename to tools/obcdc/src/ob_log_entry_wrapper.h diff --git a/src/liboblog/src/ob_log_fake_common_config.h b/tools/obcdc/src/ob_log_fake_common_config.h similarity index 100% rename from src/liboblog/src/ob_log_fake_common_config.h rename to tools/obcdc/src/ob_log_fake_common_config.h diff --git a/src/liboblog/src/ob_log_fetch_log_rpc.cpp b/tools/obcdc/src/ob_log_fetch_log_rpc.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetch_log_rpc.cpp rename to tools/obcdc/src/ob_log_fetch_log_rpc.cpp diff --git a/src/liboblog/src/ob_log_fetch_log_rpc.h b/tools/obcdc/src/ob_log_fetch_log_rpc.h similarity index 100% rename from src/liboblog/src/ob_log_fetch_log_rpc.h rename to tools/obcdc/src/ob_log_fetch_log_rpc.h diff --git a/src/liboblog/src/ob_log_fetch_stat_info.cpp b/tools/obcdc/src/ob_log_fetch_stat_info.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetch_stat_info.cpp rename to tools/obcdc/src/ob_log_fetch_stat_info.cpp diff --git a/src/liboblog/src/ob_log_fetch_stat_info.h b/tools/obcdc/src/ob_log_fetch_stat_info.h similarity index 100% rename from src/liboblog/src/ob_log_fetch_stat_info.h rename to tools/obcdc/src/ob_log_fetch_stat_info.h diff --git a/src/liboblog/src/ob_log_fetch_stream.cpp b/tools/obcdc/src/ob_log_fetch_stream.cpp similarity index 99% rename from src/liboblog/src/ob_log_fetch_stream.cpp rename to tools/obcdc/src/ob_log_fetch_stream.cpp index e478d18db..f168ea898 100644 --- a/src/liboblog/src/ob_log_fetch_stream.cpp +++ b/tools/obcdc/src/ob_log_fetch_stream.cpp @@ -38,6 +38,7 @@ int64_t FetchStream::g_stream_life_time = ObLogConfig::default_stream_life_time_ int64_t FetchStream::g_rpc_timeout = ObLogConfig::default_fetch_log_rpc_timeout_sec * _SEC_; int64_t FetchStream::g_fetch_log_cnt_per_part_per_round = ObLogConfig::default_fetch_log_cnt_per_part_per_round; int64_t FetchStream::g_dml_progress_limit = ObLogConfig::default_progress_limit_sec_for_dml * _SEC_; +int64_t FetchStream::g_ddl_progress_limit = ObLogConfig::default_progress_limit_sec_for_ddl * _SEC_; int64_t FetchStream::g_blacklist_survival_time = ObLogConfig::default_blacklist_survival_time_sec * _SEC_; int64_t FetchStream::g_check_switch_server_interval = ObLogConfig::default_check_switch_server_interval_min * _MIN_; bool FetchStream::g_print_rpc_handle_info = ObLogConfig::default_print_rpc_handle_info; @@ -231,6 +232,7 @@ void FetchStream::configure(const ObLogConfig & config) int64_t fetch_log_rpc_timeout_sec = config.fetch_log_rpc_timeout_sec; int64_t fetch_log_cnt_per_part_per_round = config.fetch_log_cnt_per_part_per_round; int64_t dml_progress_limit_sec = config.progress_limit_sec_for_dml; + int64_t ddl_progress_limit_sec = config.progress_limit_sec_for_ddl; int64_t blacklist_survival_time_sec = config.blacklist_survival_time_sec; int64_t check_switch_server_interval_min = config.check_switch_server_interval_min; bool print_rpc_handle_info = config.print_rpc_handle_info; @@ -246,6 +248,8 @@ void FetchStream::configure(const ObLogConfig & config) LOG_INFO("[CONFIG]", K(fetch_log_cnt_per_part_per_round)); ATOMIC_STORE(&g_dml_progress_limit, dml_progress_limit_sec * _SEC_); LOG_INFO("[CONFIG]", K(dml_progress_limit_sec)); + ATOMIC_STORE(&g_ddl_progress_limit, ddl_progress_limit_sec * _SEC_); + LOG_INFO("[CONFIG]", K(ddl_progress_limit_sec)); ATOMIC_STORE(&g_blacklist_survival_time, blacklist_survival_time_sec * _SEC_); LOG_INFO("[CONFIG]", K(blacklist_survival_time_sec)); ATOMIC_STORE(&g_check_switch_server_interval, check_switch_server_interval_min * _MIN_); @@ -543,7 +547,7 @@ int FetchStream::get_upper_limit(int64_t &upper_limit_us) } else { // DDL partition is not limited by progress limit, here upper limit is set to a future value if (FETCH_STREAM_TYPE_DDL == stype_) { - upper_limit_us = min_progress + _YEAR_; + upper_limit_us = min_progress + ATOMIC_LOAD(&g_ddl_progress_limit); } else { // Other partition are limited by progress limit upper_limit_us = min_progress + ATOMIC_LOAD(&g_dml_progress_limit); diff --git a/src/liboblog/src/ob_log_fetch_stream.h b/tools/obcdc/src/ob_log_fetch_stream.h similarity index 99% rename from src/liboblog/src/ob_log_fetch_stream.h rename to tools/obcdc/src/ob_log_fetch_stream.h index 34f89e12b..09e873991 100644 --- a/src/liboblog/src/ob_log_fetch_stream.h +++ b/tools/obcdc/src/ob_log_fetch_stream.h @@ -70,6 +70,7 @@ public: static int64_t g_rpc_timeout; static int64_t g_fetch_log_cnt_per_part_per_round; static int64_t g_dml_progress_limit; + static int64_t g_ddl_progress_limit; // Survival time of server added to blacklist static int64_t g_blacklist_survival_time; static int64_t g_check_switch_server_interval; diff --git a/src/liboblog/src/ob_log_fetch_stream_container.cpp b/tools/obcdc/src/ob_log_fetch_stream_container.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetch_stream_container.cpp rename to tools/obcdc/src/ob_log_fetch_stream_container.cpp diff --git a/src/liboblog/src/ob_log_fetch_stream_container.h b/tools/obcdc/src/ob_log_fetch_stream_container.h similarity index 100% rename from src/liboblog/src/ob_log_fetch_stream_container.h rename to tools/obcdc/src/ob_log_fetch_stream_container.h diff --git a/src/liboblog/src/ob_log_fetch_stream_pool.cpp b/tools/obcdc/src/ob_log_fetch_stream_pool.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetch_stream_pool.cpp rename to tools/obcdc/src/ob_log_fetch_stream_pool.cpp diff --git a/src/liboblog/src/ob_log_fetch_stream_pool.h b/tools/obcdc/src/ob_log_fetch_stream_pool.h similarity index 100% rename from src/liboblog/src/ob_log_fetch_stream_pool.h rename to tools/obcdc/src/ob_log_fetch_stream_pool.h diff --git a/src/liboblog/src/ob_log_fetch_stream_type.cpp b/tools/obcdc/src/ob_log_fetch_stream_type.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetch_stream_type.cpp rename to tools/obcdc/src/ob_log_fetch_stream_type.cpp diff --git a/src/liboblog/src/ob_log_fetch_stream_type.h b/tools/obcdc/src/ob_log_fetch_stream_type.h similarity index 100% rename from src/liboblog/src/ob_log_fetch_stream_type.h rename to tools/obcdc/src/ob_log_fetch_stream_type.h diff --git a/src/liboblog/src/ob_log_fetcher.cpp b/tools/obcdc/src/ob_log_fetcher.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetcher.cpp rename to tools/obcdc/src/ob_log_fetcher.cpp diff --git a/src/liboblog/src/ob_log_fetcher.h b/tools/obcdc/src/ob_log_fetcher.h similarity index 100% rename from src/liboblog/src/ob_log_fetcher.h rename to tools/obcdc/src/ob_log_fetcher.h diff --git a/src/liboblog/src/ob_log_fetcher_dead_pool.cpp b/tools/obcdc/src/ob_log_fetcher_dead_pool.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetcher_dead_pool.cpp rename to tools/obcdc/src/ob_log_fetcher_dead_pool.cpp diff --git a/src/liboblog/src/ob_log_fetcher_dead_pool.h b/tools/obcdc/src/ob_log_fetcher_dead_pool.h similarity index 100% rename from src/liboblog/src/ob_log_fetcher_dead_pool.h rename to tools/obcdc/src/ob_log_fetcher_dead_pool.h diff --git a/src/liboblog/src/ob_log_fetcher_dispatcher.cpp b/tools/obcdc/src/ob_log_fetcher_dispatcher.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetcher_dispatcher.cpp rename to tools/obcdc/src/ob_log_fetcher_dispatcher.cpp diff --git a/src/liboblog/src/ob_log_fetcher_dispatcher.h b/tools/obcdc/src/ob_log_fetcher_dispatcher.h similarity index 100% rename from src/liboblog/src/ob_log_fetcher_dispatcher.h rename to tools/obcdc/src/ob_log_fetcher_dispatcher.h diff --git a/src/liboblog/src/ob_log_fetcher_heartbeat_worker.cpp b/tools/obcdc/src/ob_log_fetcher_heartbeat_worker.cpp similarity index 99% rename from src/liboblog/src/ob_log_fetcher_heartbeat_worker.cpp rename to tools/obcdc/src/ob_log_fetcher_heartbeat_worker.cpp index 9e9eccabb..2170cdcdc 100644 --- a/src/liboblog/src/ob_log_fetcher_heartbeat_worker.cpp +++ b/tools/obcdc/src/ob_log_fetcher_heartbeat_worker.cpp @@ -519,4 +519,3 @@ void ObLogFetcherHeartbeatWorker::WorkerData::destroy() } } - diff --git a/src/liboblog/src/ob_log_fetcher_heartbeat_worker.h b/tools/obcdc/src/ob_log_fetcher_heartbeat_worker.h similarity index 100% rename from src/liboblog/src/ob_log_fetcher_heartbeat_worker.h rename to tools/obcdc/src/ob_log_fetcher_heartbeat_worker.h diff --git a/src/liboblog/src/ob_log_fetcher_idle_pool.cpp b/tools/obcdc/src/ob_log_fetcher_idle_pool.cpp similarity index 100% rename from src/liboblog/src/ob_log_fetcher_idle_pool.cpp rename to tools/obcdc/src/ob_log_fetcher_idle_pool.cpp diff --git a/src/liboblog/src/ob_log_fetcher_idle_pool.h b/tools/obcdc/src/ob_log_fetcher_idle_pool.h similarity index 100% rename from src/liboblog/src/ob_log_fetcher_idle_pool.h rename to tools/obcdc/src/ob_log_fetcher_idle_pool.h diff --git a/src/liboblog/src/ob_log_formatter.cpp b/tools/obcdc/src/ob_log_formatter.cpp similarity index 100% rename from src/liboblog/src/ob_log_formatter.cpp rename to tools/obcdc/src/ob_log_formatter.cpp diff --git a/src/liboblog/src/ob_log_formatter.h b/tools/obcdc/src/ob_log_formatter.h similarity index 100% rename from src/liboblog/src/ob_log_formatter.h rename to tools/obcdc/src/ob_log_formatter.h diff --git a/src/liboblog/src/ob_log_hbase_mode.cpp b/tools/obcdc/src/ob_log_hbase_mode.cpp similarity index 100% rename from src/liboblog/src/ob_log_hbase_mode.cpp rename to tools/obcdc/src/ob_log_hbase_mode.cpp diff --git a/src/liboblog/src/ob_log_hbase_mode.h b/tools/obcdc/src/ob_log_hbase_mode.h similarity index 100% rename from src/liboblog/src/ob_log_hbase_mode.h rename to tools/obcdc/src/ob_log_hbase_mode.h diff --git a/src/liboblog/src/ob_log_instance.cpp b/tools/obcdc/src/ob_log_instance.cpp similarity index 98% rename from src/liboblog/src/ob_log_instance.cpp rename to tools/obcdc/src/ob_log_instance.cpp index 97ec31d13..5e254426b 100644 --- a/src/liboblog/src/ob_log_instance.cpp +++ b/tools/obcdc/src/ob_log_instance.cpp @@ -50,7 +50,7 @@ #include "ob_log_ddl_handler.h" // ObLogDDLHandler #include "ob_log_start_schema_matcher.h" // ObLogStartSchemaMatcher #include "ob_log_tenant_mgr.h" // IObLogTenantMgr -#include "ob_log_mock_store_service.h" // MockObLogStoreService +#include "ob_log_rocksdb_store_service.h" // RocksDbStoreService #include "ob_log_trace_id.h" @@ -398,12 +398,12 @@ int ObLogInstance::init_logger_() } } - _LOG_INFO("====================liboblog start===================="); - _LOG_INFO("liboblog CE %s %s", PACKAGE_VERSION, RELEASEID); + _LOG_INFO("====================libobcdc start===================="); + _LOG_INFO("libobcdc CE %s %s", PACKAGE_VERSION, RELEASEID); _LOG_INFO("BUILD_VERSION: %s", build_version()); _LOG_INFO("BUILD_TIME: %s %s", build_date(), build_time()); _LOG_INFO("BUILD_FLAGS: %s", build_flags()); - _LOG_INFO("Copyright (c) 2021 Ant Group Co., Ltd."); + _LOG_INFO("Copyright (c) 2022 Ant Group Co., Ltd."); _LOG_INFO("======================================================"); _LOG_INFO("\n"); } @@ -415,11 +415,11 @@ int ObLogInstance::init_logger_() void ObLogInstance::print_version() { - MPRINT("liboblog CE %s %s", PACKAGE_VERSION, RELEASEID); + MPRINT("libobcdc CE %s %s", PACKAGE_VERSION, RELEASEID); MPRINT("REVISION: %s", build_version()); MPRINT("BUILD_TIME: %s %s", build_date(), build_time()); MPRINT("BUILD_FLAGS: %s\n", build_flags()); - MPRINT("Copyright (c) 2021 Ant Group Co., Ltd."); + MPRINT("Copyright (c) 2022 Ant Group Co., Ltd."); MPRINT(); } @@ -790,7 +790,7 @@ int ObLogInstance::init_components_(const uint64_t start_tstamp_usec) INIT(log_entry_task_pool_, ObLogEntryTaskPool, TCONF.log_entry_task_prealloc_count); - INIT(store_service_, MockObLogStoreService, store_service_path); + INIT(store_service_, RocksDbStoreService, store_service_path); INIT(br_pool_, ObLogBRPool, TCONF.binlog_record_prealloc_count); @@ -1038,7 +1038,7 @@ void ObLogInstance::destroy_components_() DESTROY(br_pool_, ObLogBRPool); DESTROY(storager_, ObLogStorager); DESTROY(data_processor_, ObLogDataProcessor); - DESTROY(store_service_, MockObLogStoreService); + DESTROY(store_service_, RocksDbStoreService); LOG_INFO("destroy all components end"); } @@ -2015,8 +2015,10 @@ void ObLogInstance::global_flow_control_() TCONF.part_trans_task_reusable_count_upper_bound; int64_t ready_to_seq_task_upper_bound = TCONF.ready_to_seq_task_upper_bound; - int64_t log_entry_task_active_count_upper_bound = - TCONF.log_entry_task_active_count_upper_bound; + int64_t storager_task_count_upper_bound = + TCONF.storager_task_count_upper_bound; + int64_t storager_mem_percentage = + TCONF.storager_mem_percentage; double system_memory_avail_percentage_lower_bound = static_cast(TCONF.system_memory_avail_percentage_lower_bound) / 100; int64_t memory_limit = TCONF.memory_limit.get(); @@ -2052,6 +2054,9 @@ void ObLogInstance::global_flow_control_() } else if (OB_FAIL(dml_parser_->get_log_entry_task_count(dml_parser_part_trans_task_count))) { LOG_ERROR("DML parser get_log_entry_task_count fail", KR(ret), K(dml_parser_part_trans_task_count)); } else { + int64_t storager_task_count = 0; + storager_->get_task_count(storager_task_count); + // Use the following policy for global traffic control: // need_slow_down = (active partitioned transaction tasks exceed the upper limit || liboblog takes up more memory than the upper limit || system free memory is less than a certain percentage) // && (reusable transaction tasks exceeds limit || Parser and Sequencer module cache tasks exceeds limit) @@ -2060,7 +2065,7 @@ void ObLogInstance::global_flow_control_() || (system_memory_avail < system_memory_avail_lower_bound); bool condition2 = (reusable_part_trans_task_count >= part_trans_task_reusable_count_upper_bound) || (ready_to_seq_task_count > ready_to_seq_task_upper_bound); - bool condition3 = (active_log_entry_task_count >= log_entry_task_active_count_upper_bound); + bool condition3 = (storager_task_count > storager_task_count_upper_bound) && (memory_hold >= storager_mem_percentage * memory_limit); need_slow_down_fetcher = (condition1 && condition2) || (condition3); @@ -2081,7 +2086,8 @@ void ObLogInstance::global_flow_control_() "AVAIL_MEM=%s/%s " "READY_TO_SEQ=%ld/%ld " "PART_TRANS(TOTAL=%ld,ACTIVE=%ld/%ld,REUSABLE=%ld/%ld) " - "LOG_TASK(ACTIVE=%ld/%ld) " + "LOG_TASK(ACTIVE=%ld) " + "STORE(%ld/%ld) " "[FETCHER=%ld DML_PARSER=%ld " "COMMITER=%ld USER_QUEUE=%ld OUT=%ld RC=%ld] " "DIST_TRANS(SEQ=%ld,COMMITTED=%ld)", @@ -2092,7 +2098,8 @@ void ObLogInstance::global_flow_control_() total_part_trans_task_count, active_part_trans_task_count, part_trans_task_active_count_upper_bound, reusable_part_trans_task_count, part_trans_task_reusable_count_upper_bound, - active_log_entry_task_count, log_entry_task_active_count_upper_bound, + active_log_entry_task_count, + storager_task_count, storager_task_count_upper_bound, fetcher_part_trans_task_count, dml_parser_part_trans_task_count, committer_ddl_part_trans_task_count + committer_dml_part_trans_task_count, br_queue_part_trans_task_count, out_part_trans_task_count, @@ -2546,7 +2553,7 @@ int ObLogInstance::check_observer_version_valid_() uint32_t ob_major = 0; uint16_t ob_minor = 0; uint16_t ob_patch = 0; - cal_version_components_(ob_version, ob_major, ob_minor, ob_patch); + cal_version_components(ob_version, ob_major, ob_minor, ob_patch); if (0 != TCONF.skip_ob_version_compat_check) { _LOG_INFO("skip_ob_version_compat_check is true, skip check, observer_version(%u.%hu.%hu)", ob_major, ob_minor, ob_patch); @@ -2597,7 +2604,7 @@ int ObLogInstance::init_oblog_version_components_() if (OB_FAIL(ObClusterVersion::get_version(PACKAGE_VERSION, oblog_version))) { LOG_ERROR("get_version fail", KR(ret), K(PACKAGE_VERSION), K(oblog_version)); } else { - cal_version_components_(oblog_version, oblog_major_, oblog_minor_, oblog_patch_); + cal_version_components(oblog_version, oblog_major_, oblog_minor_, oblog_patch_); } if (OB_SUCC(ret)) { @@ -2607,16 +2614,6 @@ int ObLogInstance::init_oblog_version_components_() return ret; } -void ObLogInstance::cal_version_components_(const uint64_t version, - uint32_t &major, - uint16_t &minor, - uint16_t &patch) -{ - major = OB_VSN_MAJOR(version); - minor = OB_VSN_MINOR(version); - patch = OB_VSN_PATCH(version); -} - int ObLogInstance::get_tenant_guard(const uint64_t tenant_id, ObLogTenantGuard &guard) { int ret = OB_SUCCESS; diff --git a/src/liboblog/src/ob_log_instance.h b/tools/obcdc/src/ob_log_instance.h similarity index 99% rename from src/liboblog/src/ob_log_instance.h rename to tools/obcdc/src/ob_log_instance.h index 480fa0795..bd111a59c 100644 --- a/src/liboblog/src/ob_log_instance.h +++ b/tools/obcdc/src/ob_log_instance.h @@ -13,7 +13,7 @@ #ifndef OCEANBASE_LIBOBLOG_INSTANCE_H__ #define OCEANBASE_LIBOBLOG_INSTANCE_H__ -#include "liboblog.h" +#include "libobcdc.h" #include "lib/allocator/ob_concurrent_fifo_allocator.h" // ObConcurrentFIFOAllocator #include "lib/alloc/memory_dump.h" // memory_meta_dump @@ -248,7 +248,6 @@ private: int check_observer_version_valid_(); int init_ob_cluster_version_(); int init_oblog_version_components_(); - void cal_version_components_(const uint64_t version, uint32_t &major, uint16_t &minor, uint16_t &patch); int query_cluster_min_observer_version_(uint64_t &min_observer_version); // Initialize global variables for compatibility with GCTX dependencies void init_global_context_(); diff --git a/src/liboblog/src/ob_log_lighty_list.h b/tools/obcdc/src/ob_log_lighty_list.h similarity index 100% rename from src/liboblog/src/ob_log_lighty_list.h rename to tools/obcdc/src/ob_log_lighty_list.h diff --git a/src/liboblog/src/ob_log_main.c b/tools/obcdc/src/ob_log_main.c similarity index 89% rename from src/liboblog/src/ob_log_main.c rename to tools/obcdc/src/ob_log_main.c index fb2c5a72e..64727a804 100644 --- a/src/liboblog/src/ob_log_main.c +++ b/tools/obcdc/src/ob_log_main.c @@ -25,10 +25,10 @@ int so_main() { fprintf(stdout, "\n"); - fprintf(stdout, "liboblog (%s %s)\n", PACKAGE_STRING, RELEASEID); + fprintf(stdout, "libobcdc (%s %s)\n", PACKAGE_STRING, RELEASEID); fprintf(stdout, "\n"); - fprintf(stdout, "BUILD_VERSION: %s\n", build_version()); + fprintf(stdout, "BUILD_VERSION: %s\n", build_version()); fprintf(stdout, "BUILD_TIME: %s %s\n", build_date(), build_time()); fprintf(stdout, "BUILD_FLAGS: %s\n", build_flags()); exit(0); diff --git a/src/liboblog/src/ob_log_meta_manager.cpp b/tools/obcdc/src/ob_log_meta_manager.cpp similarity index 100% rename from src/liboblog/src/ob_log_meta_manager.cpp rename to tools/obcdc/src/ob_log_meta_manager.cpp diff --git a/src/liboblog/src/ob_log_meta_manager.h b/tools/obcdc/src/ob_log_meta_manager.h similarity index 100% rename from src/liboblog/src/ob_log_meta_manager.h rename to tools/obcdc/src/ob_log_meta_manager.h diff --git a/src/liboblog/src/ob_log_mysql_connector.cpp b/tools/obcdc/src/ob_log_mysql_connector.cpp similarity index 100% rename from src/liboblog/src/ob_log_mysql_connector.cpp rename to tools/obcdc/src/ob_log_mysql_connector.cpp diff --git a/src/liboblog/src/ob_log_mysql_connector.h b/tools/obcdc/src/ob_log_mysql_connector.h similarity index 100% rename from src/liboblog/src/ob_log_mysql_connector.h rename to tools/obcdc/src/ob_log_mysql_connector.h diff --git a/src/liboblog/src/ob_log_mysql_proxy.cpp b/tools/obcdc/src/ob_log_mysql_proxy.cpp similarity index 100% rename from src/liboblog/src/ob_log_mysql_proxy.cpp rename to tools/obcdc/src/ob_log_mysql_proxy.cpp diff --git a/src/liboblog/src/ob_log_mysql_proxy.h b/tools/obcdc/src/ob_log_mysql_proxy.h similarity index 100% rename from src/liboblog/src/ob_log_mysql_proxy.h rename to tools/obcdc/src/ob_log_mysql_proxy.h diff --git a/src/liboblog/src/ob_log_part_callback.h b/tools/obcdc/src/ob_log_part_callback.h similarity index 100% rename from src/liboblog/src/ob_log_part_callback.h rename to tools/obcdc/src/ob_log_part_callback.h diff --git a/src/liboblog/src/ob_log_part_fetch_ctx.cpp b/tools/obcdc/src/ob_log_part_fetch_ctx.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_fetch_ctx.cpp rename to tools/obcdc/src/ob_log_part_fetch_ctx.cpp diff --git a/src/liboblog/src/ob_log_part_fetch_ctx.h b/tools/obcdc/src/ob_log_part_fetch_ctx.h similarity index 100% rename from src/liboblog/src/ob_log_part_fetch_ctx.h rename to tools/obcdc/src/ob_log_part_fetch_ctx.h diff --git a/src/liboblog/src/ob_log_part_fetch_mgr.cpp b/tools/obcdc/src/ob_log_part_fetch_mgr.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_fetch_mgr.cpp rename to tools/obcdc/src/ob_log_part_fetch_mgr.cpp diff --git a/src/liboblog/src/ob_log_part_fetch_mgr.h b/tools/obcdc/src/ob_log_part_fetch_mgr.h similarity index 100% rename from src/liboblog/src/ob_log_part_fetch_mgr.h rename to tools/obcdc/src/ob_log_part_fetch_mgr.h diff --git a/src/liboblog/src/ob_log_part_info.cpp b/tools/obcdc/src/ob_log_part_info.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_info.cpp rename to tools/obcdc/src/ob_log_part_info.cpp diff --git a/src/liboblog/src/ob_log_part_info.h b/tools/obcdc/src/ob_log_part_info.h similarity index 100% rename from src/liboblog/src/ob_log_part_info.h rename to tools/obcdc/src/ob_log_part_info.h diff --git a/src/liboblog/src/ob_log_part_mgr.cpp b/tools/obcdc/src/ob_log_part_mgr.cpp similarity index 99% rename from src/liboblog/src/ob_log_part_mgr.cpp rename to tools/obcdc/src/ob_log_part_mgr.cpp index 14ad654ad..5233d0564 100644 --- a/src/liboblog/src/ob_log_part_mgr.cpp +++ b/tools/obcdc/src/ob_log_part_mgr.cpp @@ -3449,7 +3449,7 @@ int ObLogPartMgr::add_partition_(const ObPartitionKey& pkey, return ret; } -// ensure_recycled_when_offlined: Whether recycling is guaranteed to be successful in the event of going offline, +// ensure_recycled_when_offlined: Whether recycling is guaranteed to be successful in the event of going offline, // i.e. whether the number of transactions left behind is 0 int ObLogPartMgr::offline_partition_(const ObPartitionKey &pkey, const bool ensure_recycled_when_offlined) diff --git a/src/liboblog/src/ob_log_part_mgr.h b/tools/obcdc/src/ob_log_part_mgr.h similarity index 100% rename from src/liboblog/src/ob_log_part_mgr.h rename to tools/obcdc/src/ob_log_part_mgr.h diff --git a/src/liboblog/src/ob_log_part_progress_controller.cpp b/tools/obcdc/src/ob_log_part_progress_controller.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_progress_controller.cpp rename to tools/obcdc/src/ob_log_part_progress_controller.cpp diff --git a/src/liboblog/src/ob_log_part_progress_controller.h b/tools/obcdc/src/ob_log_part_progress_controller.h similarity index 100% rename from src/liboblog/src/ob_log_part_progress_controller.h rename to tools/obcdc/src/ob_log_part_progress_controller.h diff --git a/src/liboblog/src/ob_log_part_serve_info.h b/tools/obcdc/src/ob_log_part_serve_info.h similarity index 100% rename from src/liboblog/src/ob_log_part_serve_info.h rename to tools/obcdc/src/ob_log_part_serve_info.h diff --git a/src/liboblog/src/ob_log_part_svr_list.cpp b/tools/obcdc/src/ob_log_part_svr_list.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_svr_list.cpp rename to tools/obcdc/src/ob_log_part_svr_list.cpp diff --git a/src/liboblog/src/ob_log_part_svr_list.h b/tools/obcdc/src/ob_log_part_svr_list.h similarity index 100% rename from src/liboblog/src/ob_log_part_svr_list.h rename to tools/obcdc/src/ob_log_part_svr_list.h diff --git a/src/liboblog/src/ob_log_part_trans_dispatcher.cpp b/tools/obcdc/src/ob_log_part_trans_dispatcher.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_trans_dispatcher.cpp rename to tools/obcdc/src/ob_log_part_trans_dispatcher.cpp diff --git a/src/liboblog/src/ob_log_part_trans_dispatcher.h b/tools/obcdc/src/ob_log_part_trans_dispatcher.h similarity index 100% rename from src/liboblog/src/ob_log_part_trans_dispatcher.h rename to tools/obcdc/src/ob_log_part_trans_dispatcher.h diff --git a/src/liboblog/src/ob_log_part_trans_parser.cpp b/tools/obcdc/src/ob_log_part_trans_parser.cpp similarity index 97% rename from src/liboblog/src/ob_log_part_trans_parser.cpp rename to tools/obcdc/src/ob_log_part_trans_parser.cpp index 059875da3..61b8cef63 100644 --- a/src/liboblog/src/ob_log_part_trans_parser.cpp +++ b/tools/obcdc/src/ob_log_part_trans_parser.cpp @@ -349,16 +349,16 @@ int ObLogPartTransParser::handle_ddl_part_rollback_savepoint_(const uint64_t row { int ret = OB_SUCCESS; const int32_t flag = row.flag_; - const int32_t sql_no = row.sql_no_; + const int32_t rollback_to_seq = get_row_seq_(task, row); if (OB_UNLIKELY(! task.is_ddl_trans())) { LOG_ERROR("task is not ddl trans, unexcepted", K(row_index), K(task), K(row)); ret = OB_ERR_UNEXPECTED; - } else if (OB_UNLIKELY(1 != flag) || OB_UNLIKELY(sql_no < 0) || OB_UNLIKELY(OB_INVALID_ID == row_index)) { - LOG_ERROR("invalid argument", K(flag), K(sql_no), K(row_index), K(row)); + } else if (OB_UNLIKELY(1 != flag) || OB_UNLIKELY(rollback_to_seq < 0) || OB_UNLIKELY(OB_INVALID_ID == row_index)) { + LOG_ERROR("invalid argument", K(flag), K(rollback_to_seq), K(row_index), K(row)); ret = OB_INVALID_ARGUMENT; - } else if (OB_FAIL(task.revert_by_rollback_savepoint(row_index, sql_no))) { - LOG_ERROR("task revert_stmt_by_rollback_savepoint failed", KR(ret), K(sql_no), K(task)); + } else if (OB_FAIL(task.revert_by_rollback_savepoint(row_index, rollback_to_seq))) { + LOG_ERROR("task revert_stmt_by_rollback_savepoint failed", KR(ret), K(rollback_to_seq), K(task)); } else { // succ LOG_DEBUG("handle rollback savepoint succ", K(row), K(task)); @@ -609,7 +609,7 @@ int ObLogPartTransParser::parse_dml_stmts_(const uint64_t row_index, const char *participant_key_str = task.get_participant_key_str(); const uint64_t log_id = redo_log_entry_task.get_log_id(); const int32_t log_offset = redo_log_entry_task.get_log_offset(); - const int32_t row_sql_no = row.sql_no_; + const int32_t row_seq_no = get_row_seq_(task, row); if (OB_ISNULL(stmt_task) || OB_ISNULL(row_data_index)) { LOG_ERROR("allocate memory for DmlStmtTask or ObLogRowDataIndex fail", "Dmlsize", sizeof(DmlStmtTask), @@ -618,9 +618,9 @@ int ObLogPartTransParser::parse_dml_stmts_(const uint64_t row_index, } else { new (row_data_index) ObLogRowDataIndex(); - if (OB_FAIL(row_data_index->init(tenant_id, participant_key_str, log_id, log_offset, row_index, is_rollback, row_sql_no))) { + if (OB_FAIL(row_data_index->init(tenant_id, participant_key_str, log_id, log_offset, row_index, is_rollback, row_seq_no))) { LOG_ERROR("row_data_index init fail", KR(ret), K(tenant_id), K(row_data_index), - K(participant_key_str), K(log_id), K(log_offset), K(row_index), K(is_rollback), K(row_sql_no), + K(participant_key_str), K(log_id), K(log_offset), K(row_index), K(is_rollback), K(row_seq_no), K(task), K(redo_log_entry_task)); } else { new (stmt_task) DmlStmtTask(task, redo_log_entry_task, *row_data_index, row); @@ -654,5 +654,13 @@ int ObLogPartTransParser::parse_dml_stmts_(const uint64_t row_index, return ret; } + +int64_t ObLogPartTransParser::get_row_seq_(PartTransTask &task, MutatorRow &row) const +{ + // only has sql_no + UNUSED(task); + return row.sql_no_; +} + } } diff --git a/src/liboblog/src/ob_log_part_trans_parser.h b/tools/obcdc/src/ob_log_part_trans_parser.h similarity index 98% rename from src/liboblog/src/ob_log_part_trans_parser.h rename to tools/obcdc/src/ob_log_part_trans_parser.h index a5ac00fd2..185077610 100644 --- a/src/liboblog/src/ob_log_part_trans_parser.h +++ b/tools/obcdc/src/ob_log_part_trans_parser.h @@ -98,6 +98,7 @@ private: ObLogEntryTask &redo_log_entry_task, PartTransTask &part_trans_task, const bool is_rollback = false); + int64_t get_row_seq_(PartTransTask &task, MutatorRow &row) const; private: bool inited_; diff --git a/src/liboblog/src/ob_log_part_trans_resolver.cpp b/tools/obcdc/src/ob_log_part_trans_resolver.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_trans_resolver.cpp rename to tools/obcdc/src/ob_log_part_trans_resolver.cpp diff --git a/src/liboblog/src/ob_log_part_trans_resolver.h b/tools/obcdc/src/ob_log_part_trans_resolver.h similarity index 100% rename from src/liboblog/src/ob_log_part_trans_resolver.h rename to tools/obcdc/src/ob_log_part_trans_resolver.h diff --git a/src/liboblog/src/ob_log_part_trans_resolver_factory.cpp b/tools/obcdc/src/ob_log_part_trans_resolver_factory.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_trans_resolver_factory.cpp rename to tools/obcdc/src/ob_log_part_trans_resolver_factory.cpp diff --git a/src/liboblog/src/ob_log_part_trans_resolver_factory.h b/tools/obcdc/src/ob_log_part_trans_resolver_factory.h similarity index 100% rename from src/liboblog/src/ob_log_part_trans_resolver_factory.h rename to tools/obcdc/src/ob_log_part_trans_resolver_factory.h diff --git a/src/liboblog/src/ob_log_part_trans_task.cpp b/tools/obcdc/src/ob_log_part_trans_task.cpp similarity index 99% rename from src/liboblog/src/ob_log_part_trans_task.cpp rename to tools/obcdc/src/ob_log_part_trans_task.cpp index 143837259..4ff21aa2b 100644 --- a/src/liboblog/src/ob_log_part_trans_task.cpp +++ b/tools/obcdc/src/ob_log_part_trans_task.cpp @@ -718,6 +718,12 @@ DdlStmtTask::~DdlStmtTask() reset(); } +int64_t DdlStmtTask::get_row_seq_for_rollback() const +{ + // only has sql_no in obce + return get_row_sql_no(); +} + bool DdlStmtTask::is_recyclebin_database_id(const uint64_t tenant_id, const uint64_t database_id) { return (combine_id(tenant_id, OB_RECYCLEBIN_SCHEMA_ID) == database_id); @@ -3211,20 +3217,20 @@ int PartTransTask::to_string_trans_id() // // 2. rollback stmt_list task row.sql_no for stmt greater than the rollback condition // -int PartTransTask::revert_by_rollback_savepoint(const uint64_t row_index, const int32_t sql_no) +int PartTransTask::revert_by_rollback_savepoint(const uint64_t row_index, const int64_t rollback_to_seq) { int ret = OB_SUCCESS; const bool is_ddl = is_ddl_trans(); - if (OB_UNLIKELY(OB_INVALID_ID == row_index) || OB_UNLIKELY(sql_no < 0)) { - LOG_ERROR("invalid argument", K(row_index), K(sql_no)); + if (OB_UNLIKELY(OB_INVALID_ID == row_index || OB_UNLIKELY(rollback_to_seq < 0))) { + LOG_ERROR("invalid argument", K(row_index), K(rollback_to_seq)); ret = OB_INVALID_ARGUMENT; } else if (OB_UNLIKELY(! is_ddl)) { LOG_ERROR("is not ddl, unexcepted", K(*this)); ret = OB_ERR_UNEXPECTED; // rollabck ddl trans - } else if (OB_FAIL(revert_ddl_stmt_(sql_no))) { - LOG_ERROR("revert ddl stmt by rollback savepoint failed", KR(ret), K(is_ddl), K(sql_no)); + } else if (OB_FAIL(revert_ddl_stmt_(rollback_to_seq))) { + LOG_ERROR("revert ddl stmt by rollback savepoint failed", KR(ret), K(is_ddl), K(rollback_to_seq)); } else { // succ } @@ -3234,26 +3240,30 @@ int PartTransTask::revert_by_rollback_savepoint(const uint64_t row_index, const // DDL transactions stmt order is dependent on schema version and cannot be guaranteed to be strictly incremented by sql no // need to traverse stmt list -int PartTransTask::revert_ddl_stmt_(const int32_t rollback_sql_no) +int PartTransTask::revert_ddl_stmt_(const int32_t rollback_to_seq) { int ret = OB_SUCCESS; + uint32_t major_version = 0; + uint16_t minor_version = 0; + uint16_t patch_version = 0; + const int64_t total_stmt_num = stmt_list_.num_; int64_t stmt_num = 0; IStmtTask *stmt_task = stmt_list_.head_; IStmtTask *dummy_task = NULL; IStmtTask *pre_task = NULL; - while (OB_SUCC(ret) && NULL != stmt_task) { DdlStmtTask *ddl_task = dynamic_cast(stmt_task); if (OB_ISNULL(ddl_task)) { LOG_ERROR("dynamic cast to DdlStmtTask fail", K(stmt_task), K(ddl_task)); ret = OB_ERR_UNEXPECTED; } else { - const int32_t stmt_sql_no = ddl_task->get_row_sql_no(); + const int32_t stmt_seq_for_rollback = ddl_task->get_row_seq_for_rollback(); IStmtTask *next = stmt_task->get_next(); + const bool need_not_rollback = stmt_seq_for_rollback <= rollback_to_seq; // stmt less than or equal to the sql_no specified by the rollback savepoint is not processed - if (stmt_sql_no <= rollback_sql_no) { + if (need_not_rollback) { // dummy points to the first matching stmt if (NULL == dummy_task) { dummy_task = stmt_task; @@ -3261,8 +3271,8 @@ int PartTransTask::revert_ddl_stmt_(const int32_t rollback_sql_no) pre_task = stmt_task; stmt_num++; _LOG_DEBUG("[SAVEPOINT][DDL] ddl_stmt need not revert, schema_version=%ld," - "rollback_sql_no=%d, stmt_sql_no=%d", ddl_task->get_op_schema_version(), - rollback_sql_no, stmt_sql_no); + "rollback_to_seq=%d, stmt_sql_no=%d", ddl_task->get_op_schema_version(), + rollback_to_seq, stmt_seq_for_rollback); } else { if (NULL != pre_task) { pre_task->set_next(stmt_task->get_next()); @@ -3283,8 +3293,8 @@ int PartTransTask::revert_ddl_stmt_(const int32_t rollback_sql_no) } if (OB_SUCC(ret)) { - _LOG_INFO("[SAVEPOINT][DDL] ROLLBACK_SQL_NO=%d STMT_CNT=%ld/%ld", - rollback_sql_no, total_stmt_num, stmt_num); + _LOG_INFO("[SAVEPOINT][DDL] ROLLBACK_TO_SEQ=%d STMT_CNT=%ld/%ld", + rollback_to_seq, total_stmt_num, stmt_num); } return ret; diff --git a/src/liboblog/src/ob_log_part_trans_task.h b/tools/obcdc/src/ob_log_part_trans_task.h similarity index 99% rename from src/liboblog/src/ob_log_part_trans_task.h rename to tools/obcdc/src/ob_log_part_trans_task.h index 8e560c41f..e808dad5f 100644 --- a/src/liboblog/src/ob_log_part_trans_task.h +++ b/tools/obcdc/src/ob_log_part_trans_task.h @@ -399,6 +399,9 @@ public: uint64_t get_exec_tenant_id() const { return ddl_exec_tenant_id_; } int64_t get_cluster_id() const { return cluster_id_; } int32_t get_row_sql_no() const { return row_.sql_no_; } + // get row seq info for rollback to savepoint feature, use seq_no if cluster_version + // is greater than 320, otherwise use sql_no + int64_t get_row_seq_for_rollback() const; ObLogBR *get_binlog_record() { return br_; } const ObLogBR *get_binlog_record() const { return br_; } @@ -829,6 +832,7 @@ public: uint64_t get_prepare_log_id() const { return prepare_log_id_; } uint64_t get_cluster_id() const { return cluster_id_; } + const common::ObVersion &get_freeze_version() const { return freeze_version_; } void set_partition(const common::ObPartitionKey &partition) { partition_ = partition; } @@ -938,7 +942,7 @@ public: uint64_t &get_row_no() { return row_no_; } int to_string_trans_id(); - int revert_by_rollback_savepoint(const uint64_t row_index, const int32_t sql_no); + int revert_by_rollback_savepoint(const uint64_t row_index, const int64_t rollback_no); bool is_served() const { return SERVED == serve_state_; } TO_STRING_KV("state", serve_state_, diff --git a/src/liboblog/src/ob_log_part_trans_task_queue.cpp b/tools/obcdc/src/ob_log_part_trans_task_queue.cpp similarity index 100% rename from src/liboblog/src/ob_log_part_trans_task_queue.cpp rename to tools/obcdc/src/ob_log_part_trans_task_queue.cpp diff --git a/src/liboblog/src/ob_log_part_trans_task_queue.h b/tools/obcdc/src/ob_log_part_trans_task_queue.h similarity index 100% rename from src/liboblog/src/ob_log_part_trans_task_queue.h rename to tools/obcdc/src/ob_log_part_trans_task_queue.h diff --git a/src/liboblog/src/ob_log_reader_plug_in.cpp b/tools/obcdc/src/ob_log_reader_plug_in.cpp similarity index 100% rename from src/liboblog/src/ob_log_reader_plug_in.cpp rename to tools/obcdc/src/ob_log_reader_plug_in.cpp diff --git a/src/liboblog/src/ob_log_reader_plug_in.h b/tools/obcdc/src/ob_log_reader_plug_in.h similarity index 100% rename from src/liboblog/src/ob_log_reader_plug_in.h rename to tools/obcdc/src/ob_log_reader_plug_in.h diff --git a/src/liboblog/src/ob_log_ref_state.cpp b/tools/obcdc/src/ob_log_ref_state.cpp similarity index 100% rename from src/liboblog/src/ob_log_ref_state.cpp rename to tools/obcdc/src/ob_log_ref_state.cpp diff --git a/src/liboblog/src/ob_log_ref_state.h b/tools/obcdc/src/ob_log_ref_state.h similarity index 100% rename from src/liboblog/src/ob_log_ref_state.h rename to tools/obcdc/src/ob_log_ref_state.h diff --git a/src/liboblog/src/ob_log_resource_collector.cpp b/tools/obcdc/src/ob_log_resource_collector.cpp similarity index 94% rename from src/liboblog/src/ob_log_resource_collector.cpp rename to tools/obcdc/src/ob_log_resource_collector.cpp index e15243dfd..131ab6291 100644 --- a/src/liboblog/src/ob_log_resource_collector.cpp +++ b/tools/obcdc/src/ob_log_resource_collector.cpp @@ -549,8 +549,11 @@ int ObLogResourceCollector::revert_dml_binlog_record_(ObLogBR &br) LOG_ERROR("part_trans_task is NULL", KPC(row_data_index)); ret = OB_ERR_UNEXPECTED; } else if (is_serilized) { - if (OB_FAIL(del_store_service_data_(*row_data_index))) { - LOG_ERROR("del_store_service_data_ fail", KR(ret), KPC(row_data_index)); + const bool skip_recycle_data = TCONF.skip_recycle_data != 0; + if (! skip_recycle_data) { + if (OB_FAIL(del_store_service_data_(*row_data_index))) { + LOG_ERROR("del_store_service_data_ fail", KR(ret), KPC(row_data_index)); + } } } else { if (OB_FAIL(dec_ref_cnt_and_try_to_recycle_log_entry_task_(br))) { @@ -607,6 +610,38 @@ int ObLogResourceCollector::del_store_service_data_(ObLogRowDataIndex &row_data_ return ret; } +int ObLogResourceCollector::del_trans_(const uint64_t tenant_id, + const ObString &trans_id_str) +{ + int ret = OB_SUCCESS; + std::string begin_key; + std::string end_key; + begin_key.append(trans_id_str.ptr()); + begin_key.append("_"); + end_key.append(trans_id_str.ptr()); + end_key.append("_"); + end_key.append("}"); + ObLogTenantGuard guard; + ObLogTenant *tenant = NULL; + void *column_family_handle = NULL; + if (OB_FAIL(TCTX.get_tenant_guard(tenant_id, guard))) { + LOG_ERROR("get_tenant_guard fail", KR(ret), K(tenant_id)); + } else { + tenant = guard.get_tenant(); + column_family_handle = tenant->get_cf(); + } + if (OB_SUCC(ret)) { + if (OB_FAIL(store_service_->del_range(column_family_handle, begin_key, end_key))) { + LOG_ERROR("store_service_ del fail", KR(ret), "begin_key", begin_key.c_str(), + "end_key", end_key.c_str()); + } else { + LOG_INFO("store_service_ del succ", KR(ret), "begin_key", begin_key.c_str(), + "end_key", end_key.c_str()); + } + } + return ret; +} + int ObLogResourceCollector::dec_ref_cnt_and_try_to_recycle_log_entry_task_(ObLogBR &br) { int ret = OB_SUCCESS; diff --git a/src/liboblog/src/ob_log_resource_collector.h b/tools/obcdc/src/ob_log_resource_collector.h similarity index 98% rename from src/liboblog/src/ob_log_resource_collector.h rename to tools/obcdc/src/ob_log_resource_collector.h index 774c5a5f4..a0e9d51f6 100644 --- a/src/liboblog/src/ob_log_resource_collector.h +++ b/tools/obcdc/src/ob_log_resource_collector.h @@ -109,6 +109,9 @@ private: int revert_dml_binlog_record_(ObLogBR &br); int dec_ref_cnt_and_try_to_revert_task_(PartTransTask *part_trans_task); int del_store_service_data_(ObLogRowDataIndex &row_data_index); + int del_trans_(const uint64_t tenant_id, + const ObString &trans_id_str); + int dec_ref_cnt_and_try_to_recycle_log_entry_task_(ObLogBR &br); int revert_log_entry_task_(ObLogEntryTask *log_entry_task); diff --git a/src/liboblog/src/ob_log_resource_recycle_task.h b/tools/obcdc/src/ob_log_resource_recycle_task.h similarity index 100% rename from src/liboblog/src/ob_log_resource_recycle_task.h rename to tools/obcdc/src/ob_log_resource_recycle_task.h diff --git a/tools/obcdc/src/ob_log_rocksdb_store_service.cpp b/tools/obcdc/src/ob_log_rocksdb_store_service.cpp new file mode 100644 index 000000000..eb99c132c --- /dev/null +++ b/tools/obcdc/src/ob_log_rocksdb_store_service.cpp @@ -0,0 +1,439 @@ +/** + * Copyright (c) 2021 OceanBase + * OceanBase CE is licensed under Mulan PubL v2. + * You can use this software according to the terms and conditions of the Mulan PubL v2. + * You may obtain a copy of Mulan PubL v2 at: + * http://license.coscl.org.cn/MulanPubL-2.0 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PubL v2 for more details. + */ + +// Copyright 2020-2030 Alibaba Inc. All Rights Reserved. + +#define USING_LOG_PREFIX OBLOG + +#include "ob_log_rocksdb_store_service.h" +#include "ob_log_utils.h" +#include "ob_log_config.h" +#include "lib/utility/ob_print_utils.h" // databuff_printf +#include "lib/file/file_directory_utils.h" // FileDirectoryUtils +#include "lib/oblog/ob_log.h" // ObLogger +#include "lib/oblog/ob_log_module.h" // LOG_* +#include "lib/ob_errno.h" + +namespace oceanbase +{ +namespace liboblog +{ +RocksDbStoreService::RocksDbStoreService() +{ + is_inited_ = false; + m_db_ = NULL; + m_db_path_.clear(); +} + +RocksDbStoreService::~RocksDbStoreService() +{ + destroy(); +} + +int RocksDbStoreService::init(const std::string &path) +{ + int ret = OB_SUCCESS; + UNUSED(path); + + if (OB_UNLIKELY(is_inited_)) { + LOG_ERROR("RocksDbStoreService has inited twice"); + ret = OB_INIT_TWICE; + } else if (OB_FAIL(init_dir_(path.c_str()))) { + LOG_ERROR("init_dir_ fail", K(ret)); + } else { + m_db_path_ = path; + m_options_.create_if_missing = true; + const int total_threads = 32; + // By default, RocksDB uses only one background thread for flush and + // compaction. Calling this function will set it up such that total of + // `total_threads` is used. Good value for `total_threads` is the number of + // cores. You almost definitely want to call this function if your system is + // bottlenecked by RocksDB. + m_options_.IncreaseParallelism(total_threads); + // Maximum number of concurrent background compaction jobs, submitted to the default LOW priority thread pool. + m_options_.max_background_compactions = 16; + m_options_.max_background_flushes = 16; + // 2G + m_options_.db_write_buffer_size = 2 << 30; + m_options_.max_open_files = 100; + + rocksdb::Status s = rocksdb::DB::Open(m_options_, m_db_path_, &m_db_); + if (!s.ok()) { + _LOG_ERROR("first open rocks db failed, path is %s, status is %s", + m_db_path_.c_str(), s.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } else { + _LOG_INFO("RocksDbStoreService init success, path:%s, total_threads=%d", m_db_path_.c_str(), total_threads); + is_inited_ = true; + } + + } + + return ret; +} + +int RocksDbStoreService::close() +{ + int ret = OB_SUCCESS; + + if (NULL != m_db_) { + rocksdb::Status status = m_db_->Close(); + + if (! status.ok()) { + _LOG_ERROR("rocksdb close failed, error %s", status.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } else { + LOG_INFO("rocksdb close succ"); + } + } + + return ret; +} + +int RocksDbStoreService::init_dir_(const char *dir_path) +{ + int ret = OB_SUCCESS; + const static int64_t CMD_BUF_SIZE = 1024; + static char cmd_buf[CMD_BUF_SIZE]; + int64_t cmd_pos = 0; + + if (OB_FAIL(common::databuff_printf(cmd_buf, CMD_BUF_SIZE, cmd_pos, "rm -rf %s", dir_path))) { + LOG_ERROR("databuff_printf fail", K(ret), K(cmd_buf), K(cmd_pos), K(dir_path)); + } else { + (void)system(cmd_buf); + LOG_INFO("system succ", K(cmd_buf), K(cmd_pos), K(dir_path)); + } + + if (OB_SUCC(ret)) { + if (OB_FAIL(common::FileDirectoryUtils::create_full_path(dir_path))) { + LOG_ERROR("FileDirectoryUtils create_full_path fail", K(ret), K(dir_path)); + } else { + // succ + } + } + + return ret; +} + +void RocksDbStoreService::destroy() +{ + if (is_inited_) { + close(); + + if (OB_NOT_NULL(m_db_)) { + delete m_db_; + m_db_ = NULL; + } + is_inited_ = false; + } +} + +int RocksDbStoreService::put(const std::string &key, const ObSlice &value) +{ + int ret = OB_SUCCESS; + rocksdb::WriteOptions writer_options; + writer_options.disableWAL = true; + + // find column family handle for cf + rocksdb::Status s = m_db_->Put(writer_options, rocksdb::Slice(key.c_str(), key.size()), + rocksdb::Slice(value.buf_, value.buf_len_)); + + if (!s.ok()) { + _LOG_ERROR("RocksDbStoreService put value into rocksdb failed, error %s", s.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } + + return ret; +} + +int RocksDbStoreService::put(void *cf_handle, const std::string &key, const ObSlice &value) +{ + int ret = OB_SUCCESS; + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handle); + rocksdb::WriteOptions writer_options; + writer_options.disableWAL = true; + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_ERR_UNEXPECTED; + } else { + rocksdb::Status s = m_db_->Put(writer_options, column_family_handle, rocksdb::Slice(key), + rocksdb::Slice(value.buf_, value.buf_len_)); + + if (!s.ok()) { + _LOG_ERROR("RocksDbStoreService put value into rocksdb failed, error %s", s.ToString().c_str()); + ret = OB_IO_ERROR; + } + } + + return ret; +} + +int RocksDbStoreService::batch_write(void *cf_handle, + const std::vector &keys, + const std::vector &values) +{ + int ret = OB_SUCCESS; + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handle); + rocksdb::WriteOptions writer_options; + writer_options.disableWAL = true; + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_ERR_UNEXPECTED; + } else { + rocksdb::WriteBatch batch; + + for (int64_t idx = 0; OB_SUCC(ret) && idx < keys.size(); ++idx) { + batch.Put(column_family_handle, rocksdb::Slice(keys[idx]), rocksdb::Slice(values[idx].buf_, values[idx].buf_len_)); + } + + rocksdb::Status s = m_db_->Write(writer_options, &batch); + + if (!s.ok()) { + _LOG_ERROR("RocksDbStoreService WriteBatch put value into rocksdb failed, error %s", s.ToString().c_str()); + ret = OB_IO_ERROR; + } + } + + return ret; +} + +int RocksDbStoreService::get(const std::string &key, std::string &value) +{ + int ret = OB_SUCCESS; + //rocksdb::PinnableSlice slice(&value); + rocksdb::Status s = m_db_->Get(rocksdb::ReadOptions(), key, &value); + + if (!s.ok()) { + _LOG_ERROR("RocksDbStoreService get value from rocksdb failed, error %s, key:%s", + s.ToString().c_str(), key.c_str()); + ret = OB_ERR_UNEXPECTED; + } + + return ret; +} + +int RocksDbStoreService::get(void *cf_handle, const std::string &key, std::string &value) +{ + int ret = OB_SUCCESS; + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handle); + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_ERR_UNEXPECTED; + } else { + rocksdb::Status s = m_db_->Get(rocksdb::ReadOptions(), column_family_handle, key, &value); + + if (!s.ok()) { + _LOG_ERROR("RocksDbStoreService get value from rocksdb failed, error %s, key:%s", + s.ToString().c_str(), key.c_str()); + ret = OB_ERR_UNEXPECTED; + } + } + + return ret; +} + +int RocksDbStoreService::del(const std::string &key) +{ + int ret = OB_SUCCESS; + // find column family handle for cf + rocksdb::Status s = m_db_->Delete(rocksdb::WriteOptions(), key); + if (!s.ok()) { + LOG_ERROR("delete %s from rocksdb failed, error %s", key.c_str(), s.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } + + return ret; +} + +int RocksDbStoreService::del(void *cf_handle, const std::string &key) +{ + int ret = OB_SUCCESS; + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handle); + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_ERR_UNEXPECTED; + } else { + rocksdb::Status s = m_db_->Delete(rocksdb::WriteOptions(), column_family_handle, key); + + if (!s.ok()) { + LOG_ERROR("delete %s from rocksdb failed, error %s", key.c_str(), s.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } + } + + return ret; +} + +int RocksDbStoreService::del_range(void *cf_handle, const std::string &begin_key, const std::string &end_key) +{ + int ret = OB_SUCCESS; + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handle); + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_ERR_UNEXPECTED; + } else { + rocksdb::Status s = m_db_->DeleteRange(rocksdb::WriteOptions(), column_family_handle, + begin_key, end_key); + + if (!s.ok()) { + LOG_ERROR("DeleteRange %s from rocksdb failed, error %s", begin_key.c_str(), s.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } + } + + return ret; +} + +int RocksDbStoreService::create_column_family(const std::string& column_family_name, + void *&cf_handle) +{ + int ret = OB_SUCCESS; + const int64_t rocksdb_write_buffer_size = TCONF.rocksdb_write_buffer_size; + rocksdb::ColumnFamilyHandle *column_family_handle = NULL; + rocksdb::ColumnFamilyOptions cf_options; + + cf_options.OptimizeLevelStyleCompaction(); + cf_options.level0_slowdown_writes_trigger = 32; + // The maximum number of write buffers that are built up in memory. + // The default and the minimum number is 2, so that when 1 write buffer + // is being flushed to storage, new writes can continue to the other + // write buffer. + // If max_write_buffer_number > 3, writing will be slowed down to + // options.delayed_write_rate if we are writing to the last write buffer + // allowed. + // + // Default: 2 + cf_options.max_write_buffer_number = 9; + // Column Family's default memtable size is 64M, when the maximum limit is exceeded, memtable -> immutable memtable, increase write_buffer_size, can reduce write amplification + cf_options.write_buffer_size = rocksdb_write_buffer_size << 20; + + rocksdb::Status status = m_db_->CreateColumnFamily(cf_options, column_family_name, &column_family_handle); + + if (! status.ok()) { + _LOG_ERROR("rocksdb CreateColumnFamily [%s] failed, error %s", column_family_name.c_str(), status.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } else { + cf_handle = reinterpret_cast(column_family_handle); + + LOG_INFO("rocksdb CreateColumnFamily succ", "column_family_name", column_family_name.c_str(), + K(column_family_handle), K(cf_handle), K(rocksdb_write_buffer_size)); + } + + return ret; +} + +int RocksDbStoreService::drop_column_family(void *cf_handle) +{ + int ret = OB_SUCCESS; + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handle); + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_INVALID_ARGUMENT; + } else { + rocksdb::Status status = m_db_->DropColumnFamily(column_family_handle); + + if (! status.ok()) { + _LOG_ERROR("rocksdb DropColumnFamily failed, error %s", status.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } else { + LOG_INFO("rocksdb DropColumnFamily succ"); + } + } + + return ret; +} + +int RocksDbStoreService::destory_column_family(void *cf_handle) +{ + int ret = OB_SUCCESS; + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handle); + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_INVALID_ARGUMENT; + } else { + rocksdb::Status status = m_db_->DestroyColumnFamilyHandle(column_family_handle); + + if (! status.ok()) { + _LOG_ERROR("rocksdb DestroyColumnFamilyHandle failed, error %s", status.ToString().c_str()); + ret = OB_ERR_UNEXPECTED; + } else { + LOG_INFO("rocksdb DestroyColumnFamilyHandle succ"); + } + } + + return ret; +} + +void RocksDbStoreService::get_mem_usage(const std::vector ids, + const std::vector cf_handles) +{ + int ret = OB_SUCCESS; + int64_t total_memtable_usage = 0; + int64_t total_block_cache_usage = 0; + int64_t total_table_readers_usage = 0; + int64_t total_block_cache_pinned_usage = 0; + + for (int64_t idx = 0; OB_SUCC(ret) && idx < cf_handles.size(); ++idx) { + rocksdb::ColumnFamilyHandle *column_family_handle = static_cast(cf_handles[idx]); + + if (OB_ISNULL(column_family_handle)) { + LOG_ERROR("column_family_handle is NULL"); + ret = OB_INVALID_ARGUMENT; + } else { + std::string memtable_usage; + std::string block_cache_usage; + std::string table_readers_usage; + std::string block_cache_pinned_usage; + int64_t int64_memtable_usage = 0; + int64_t int64_block_cache_usage = 0; + int64_t int64_table_readers_usage = 0; + int64_t int64_block_cache_pinned_usage = 0; + + m_db_->GetProperty(column_family_handle, "rocksdb.cur-size-all-mem-tables", &memtable_usage); + m_db_->GetProperty(column_family_handle, "rocksdb.block-cache-usage", &block_cache_usage); + m_db_->GetProperty(column_family_handle, "rocksdb.estimate-table-readers-mem", &table_readers_usage); + m_db_->GetProperty(column_family_handle, "rocksdb.block-cache-pinned-usage", &block_cache_pinned_usage); + + c_str_to_int(memtable_usage.c_str(), int64_memtable_usage); + c_str_to_int(block_cache_usage.c_str(), int64_block_cache_usage); + c_str_to_int(table_readers_usage.c_str(), int64_table_readers_usage); + c_str_to_int(block_cache_pinned_usage.c_str(), int64_block_cache_pinned_usage); + + total_memtable_usage += int64_memtable_usage; + total_block_cache_usage += int64_block_cache_usage; + total_table_readers_usage += int64_table_readers_usage; + total_block_cache_pinned_usage += int64_block_cache_pinned_usage; + + LOG_INFO("[ROCKSDB] [MEM]", "tenant_id", ids[idx], + "memtable", memtable_usage.c_str(), + "block_cache", block_cache_usage.c_str(), + "table_readers", table_readers_usage.c_str(), + "block_cache_pinned", block_cache_pinned_usage.c_str()); + } + } // for + + LOG_INFO("[ROCKSDB] [TOTAL_MEM]", + "memtable", SIZE_TO_STR(total_memtable_usage), + "block_cache", SIZE_TO_STR(total_block_cache_usage), + "table_readers", SIZE_TO_STR(total_table_readers_usage), + "block_cache_pinned", SIZE_TO_STR(total_block_cache_pinned_usage)); +} + +} +} diff --git a/tools/obcdc/src/ob_log_rocksdb_store_service.h b/tools/obcdc/src/ob_log_rocksdb_store_service.h new file mode 100644 index 000000000..0974a1c97 --- /dev/null +++ b/tools/obcdc/src/ob_log_rocksdb_store_service.h @@ -0,0 +1,74 @@ +/** + * Copyright (c) 2021 OceanBase + * OceanBase CE is licensed under Mulan PubL v2. + * You can use this software according to the terms and conditions of the Mulan PubL v2. + * You may obtain a copy of Mulan PubL v2 at: + * http://license.coscl.org.cn/MulanPubL-2.0 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PubL v2 for more details. + */ + +// Copyright 2020-2030 Alibaba Inc. All Rights Reserved. + +#ifndef OCEANBASE_LIBOBLOG_OB_LOG_ROCKSDB_IMPL_H_ +#define OCEANBASE_LIBOBLOG_OB_LOG_ROCKSDB_IMPL_H_ + +#include "ob_log_store_service.h" +#include "rocksdb/db.h" +#include "rocksdb/options.h" +#include "rocksdb/slice.h" +#include "rocksdb/iostats_context.h" +#include "rocksdb/perf_context.h" + +namespace oceanbase +{ +namespace liboblog +{ +class RocksDbStoreService : public IObStoreService +{ +public: + RocksDbStoreService(); + virtual ~RocksDbStoreService(); + int init(const std::string &path); + void destroy(); + +public: + // Default ColumnFamily put/get/del + // Assign ColumnFamily put/get/del + virtual int put(const std::string &key, const ObSlice &value); + virtual int put(void *cf_handle, const std::string &key, const ObSlice &value); + + virtual int batch_write(void *cf_handle, const std::vector &keys, const std::vector &values); + + virtual int get(const std::string &key, std::string &value); + virtual int get(void *cf_handle, const std::string &key, std::string &value); + + virtual int del(const std::string &key); + virtual int del(void *cf_handle, const std::string &key); + virtual int del_range(void *cf_handle, const std::string &begin_key, const std::string &end_key); + + virtual int create_column_family(const std::string& column_family_name, + void *&cf_handle); + virtual int drop_column_family(void *cf_handle); + virtual int destory_column_family(void *cf_handle); + + virtual int close(); + virtual void get_mem_usage(const std::vector ids, + const std::vector cf_handles); + +private: + int init_dir_(const char *dir_path); + +private: + bool is_inited_; + rocksdb::DB *m_db_; + rocksdb::Options m_options_; + std::string m_db_path_; +}; + +} +} + +#endif diff --git a/src/liboblog/src/ob_log_row_data_index.cpp b/tools/obcdc/src/ob_log_row_data_index.cpp similarity index 96% rename from src/liboblog/src/ob_log_row_data_index.cpp rename to tools/obcdc/src/ob_log_row_data_index.cpp index f1b5f92d8..64faf93d6 100644 --- a/src/liboblog/src/ob_log_row_data_index.cpp +++ b/tools/obcdc/src/ob_log_row_data_index.cpp @@ -31,7 +31,7 @@ ObLogRowDataIndex::ObLogRowDataIndex() : log_offset_(0), row_no_(OB_INVALID_ID), is_rollback_(false), - row_sql_no_(0), + row_seq_no_(0), br_commit_seq_(0), trans_ctx_host_(NULL), next_(NULL) @@ -53,7 +53,7 @@ void ObLogRowDataIndex::reset() log_offset_ = 0; row_no_ = OB_INVALID_ID; is_rollback_ = false; - row_sql_no_ = 0; + row_seq_no_ = 0; br_commit_seq_ = 0; trans_ctx_host_ = NULL; next_ = NULL; @@ -65,7 +65,7 @@ int ObLogRowDataIndex::init(const uint64_t tenant_id, const int32_t log_offset, const uint64_t row_no, const bool is_rollback, - const int32_t row_sql_no) + const int32_t row_seq_no) { int ret = OB_SUCCESS; @@ -85,7 +85,7 @@ int ObLogRowDataIndex::init(const uint64_t tenant_id, log_offset_ = log_offset; row_no_ = row_no; is_rollback_ = is_rollback; - row_sql_no_ = row_sql_no; + row_seq_no_ = row_seq_no; set_next(NULL); } @@ -223,7 +223,7 @@ int64_t ObLogRowDataIndex::to_string(char* buf, const int64_t buf_len) const (void)common::databuff_printf(buf, buf_len, pos, "%d_", log_offset_); (void)common::databuff_printf(buf, buf_len, pos, "%lu,", row_no_); (void)common::databuff_printf(buf, buf_len, pos, "is_rollback=%d,", is_rollback_); - (void)common::databuff_printf(buf, buf_len, pos, "row_sql_no=%d,", row_sql_no_); + (void)common::databuff_printf(buf, buf_len, pos, "row_seq_no=%d,", row_seq_no_); (void)common::databuff_printf(buf, buf_len, pos, "br_seq=%ld", br_commit_seq_); } diff --git a/src/liboblog/src/ob_log_row_data_index.h b/tools/obcdc/src/ob_log_row_data_index.h similarity index 93% rename from src/liboblog/src/ob_log_row_data_index.h rename to tools/obcdc/src/ob_log_row_data_index.h index 3bf1423df..5c434fa23 100644 --- a/src/liboblog/src/ob_log_row_data_index.h +++ b/tools/obcdc/src/ob_log_row_data_index.h @@ -34,7 +34,7 @@ public: const int32_t log_offset, const uint64_t row_no, const bool is_rollback, - const int32_t row_sql_no); + const int32_t row_seq_no); bool is_valid() const; ObLogBR *get_binlog_record() { return br_; } @@ -51,7 +51,7 @@ public: int32_t get_log_offset() const {return log_offset_; } uint64_t get_row_no() const { return row_no_; } bool is_rollback() const { return is_rollback_; } - int32_t get_row_sql_no() const { return row_sql_no_; } + int32_t get_row_seq_no() const { return row_seq_no_; } bool before(const ObLogRowDataIndex &row_index, const bool is_single_row); bool equal(const ObLogRowDataIndex &row_index, const bool is_single_row); @@ -94,7 +94,9 @@ private: uint64_t row_no_; bool is_rollback_; - int32_t row_sql_no_; + // set row_sql_no if cluster_version(get by ObTransLog::get_cluster_version) is less than 3_2_0 + // otherwise use row_seq_no + int32_t row_seq_no_; int64_t br_commit_seq_; // Streaming commit model - seq void *trans_ctx_host_; diff --git a/src/liboblog/src/ob_log_row_list.cpp b/tools/obcdc/src/ob_log_row_list.cpp similarity index 89% rename from src/liboblog/src/ob_log_row_list.cpp rename to tools/obcdc/src/ob_log_row_list.cpp index 5f2f7d7af..ef036c0f8 100644 --- a/src/liboblog/src/ob_log_row_list.cpp +++ b/tools/obcdc/src/ob_log_row_list.cpp @@ -116,10 +116,8 @@ int SortedDmlRowList::push_when_contain_rollback_row_(ObLogRowDataIndex *row_hea LOG_ERROR("push_ fail", KR(ret), KPC(cur_row_index), K(is_single_row)); } } else { - const int32_t rollback_sql_no = cur_row_index->get_row_sql_no(); - - if (OB_FAIL(rollback_row_(rollback_sql_no, *cur_row_index))) { - LOG_ERROR("rollback_row_ fail", KR(ret), K(rollback_sql_no), KPC(cur_row_index)); + if (OB_FAIL(rollback_row_(*cur_row_index))) { + LOG_ERROR("rollback_row_ fail", KR(ret), KPC(cur_row_index)); } } @@ -188,11 +186,11 @@ int SortedDmlRowList::push_(ObLogRowDataIndex *row_head, return ret; } -int SortedDmlRowList::rollback_row_(const int32_t rollback_sql_no, - ObLogRowDataIndex &rollback_row_data_index) +int SortedDmlRowList::rollback_row_(ObLogRowDataIndex &rollback_row_data_index) { int ret = OB_SUCCESS; const int64_t total_row_num = row_num_; + const int64_t rollback_to_seq = rollback_row_data_index.get_row_seq_no(); int64_t save_row_num = 0; bool found = false; ObLogRowDataIndex *pre_row_index = NULL; @@ -204,11 +202,13 @@ int SortedDmlRowList::rollback_row_(const int32_t rollback_sql_no, ret = OB_ERR_UNEXPECTED; } - // 1. stmt with seq_no less than or equal to the sql_no specified by rollback savepoint is not processed, find the first sql_no greater than rollback_sql_no + // 1. If seq_no is not valid(in 22x and 31x), rollback dml stmt by sql_no, otherwise rollback by seq_no + // 2. Stmt with seq_no/sql_no less than or equal to the seq_no/sql_no specified by rollback savepoint + // is not processed, find the first seq_no/sql_no greater than rollback_seq_no/rollback_sql_no. while (OB_SUCC(ret) && NULL != cur_row_index && !found) { - const int32_t cur_row_sql_no = cur_row_index->get_row_sql_no(); + const int32_t cur_row_seq = cur_row_index->get_row_seq_no(); - if (cur_row_sql_no <= rollback_sql_no) { + if (cur_row_seq <= rollback_to_seq) { pre_row_index = cur_row_index; cur_row_index = cur_row_index->get_next(); ++save_row_num; @@ -254,8 +254,8 @@ int SortedDmlRowList::rollback_row_(const int32_t rollback_sql_no, } if (OB_SUCC(ret)) { - _LOG_INFO("[SAVEPOINT][DML] ROLLBACK_SQL_NO=%d STMT_CNT=%ld/%ld", - rollback_sql_no, total_row_num, save_row_num); + _LOG_INFO("[SAVEPOINT][DML] ROLLBACK_TO_SEQ=%ld STMT_CNT=%ld/%ld", + rollback_to_seq, total_row_num, save_row_num); } return ret; diff --git a/src/liboblog/src/ob_log_row_list.h b/tools/obcdc/src/ob_log_row_list.h similarity index 95% rename from src/liboblog/src/ob_log_row_list.h rename to tools/obcdc/src/ob_log_row_list.h index 77d7f4ddf..079832ad5 100644 --- a/src/liboblog/src/ob_log_row_list.h +++ b/tools/obcdc/src/ob_log_row_list.h @@ -58,8 +58,7 @@ private: const int64_t row_num, const bool is_single_row); // dml stmt is strictly incremented by sql_no, just find the first statement that is greater than sql_no and roll back that and subsequent statements - int rollback_row_(const int32_t rollback_sql_no, - ObLogRowDataIndex &rollback_row_data_index); + int rollback_row_(ObLogRowDataIndex &rollback_row_data_index); private: int64_t row_num_; diff --git a/src/liboblog/src/ob_log_rpc.cpp b/tools/obcdc/src/ob_log_rpc.cpp similarity index 100% rename from src/liboblog/src/ob_log_rpc.cpp rename to tools/obcdc/src/ob_log_rpc.cpp diff --git a/src/liboblog/src/ob_log_rpc.h b/tools/obcdc/src/ob_log_rpc.h similarity index 100% rename from src/liboblog/src/ob_log_rpc.h rename to tools/obcdc/src/ob_log_rpc.h diff --git a/src/liboblog/src/ob_log_schema_cache_info.cpp b/tools/obcdc/src/ob_log_schema_cache_info.cpp similarity index 100% rename from src/liboblog/src/ob_log_schema_cache_info.cpp rename to tools/obcdc/src/ob_log_schema_cache_info.cpp diff --git a/src/liboblog/src/ob_log_schema_cache_info.h b/tools/obcdc/src/ob_log_schema_cache_info.h similarity index 100% rename from src/liboblog/src/ob_log_schema_cache_info.h rename to tools/obcdc/src/ob_log_schema_cache_info.h diff --git a/src/liboblog/src/ob_log_schema_getter.cpp b/tools/obcdc/src/ob_log_schema_getter.cpp similarity index 100% rename from src/liboblog/src/ob_log_schema_getter.cpp rename to tools/obcdc/src/ob_log_schema_getter.cpp diff --git a/src/liboblog/src/ob_log_schema_getter.h b/tools/obcdc/src/ob_log_schema_getter.h similarity index 100% rename from src/liboblog/src/ob_log_schema_getter.h rename to tools/obcdc/src/ob_log_schema_getter.h diff --git a/src/liboblog/src/ob_log_sequencer1.cpp b/tools/obcdc/src/ob_log_sequencer1.cpp similarity index 99% rename from src/liboblog/src/ob_log_sequencer1.cpp rename to tools/obcdc/src/ob_log_sequencer1.cpp index 4ca92b705..97b476dfa 100644 --- a/src/liboblog/src/ob_log_sequencer1.cpp +++ b/tools/obcdc/src/ob_log_sequencer1.cpp @@ -861,7 +861,7 @@ int ObLogSequencer::handle_br_of_part_trans_task_(TransCtx &trans_ctx, if (OB_FAIL(add_dml_br_to_binlog_record_list_(trans_ctx, row_data_index, br_head, br_tail))) { LOG_ERROR("add_dml_br_to_binlog_record_list_ fail", KR(ret), KPC(row_data_index), KPC(part), "binlog_record:", row_data_index->get_binlog_record(), - "sql_no", row_data_index->get_row_sql_no(), + "sql_no", row_data_index->get_row_seq_no(), K(br_head), K(br_tail), K(valid_br_num)); } else { valid_br_num++; @@ -964,12 +964,12 @@ int ObLogSequencer::add_br_to_br_list_and_statics_(TransCtx &trans_ctx, } else if (OB_FAIL(add_dml_br_to_binlog_record_list_(trans_ctx, row_data_index, br_head, br_tail))) { LOG_ERROR("add_dml_br_to_binlog_record_list_ fail", KR(ret), KPC(row_data_index), KPC(part_trans_task), "binlog_record:", row_data_index->get_binlog_record(), - "sql_no", row_data_index->get_row_sql_no(), + "sql_no", row_data_index->get_row_seq_no(), K(br_head), K(br_tail), K(valid_br_num), K(valid_part_trans_task_count)); } else { const bool is_test_mode_on = TCONF.test_mode_on != 0; if (is_test_mode_on) { - LOG_DEBUG("log dml stmt info under test mode ", K(part_trans_task), "sql_no:", row_data_index->get_row_sql_no()); + LOG_DEBUG("log dml stmt info under test mode ", K(part_trans_task), "sql_no:", row_data_index->get_row_seq_no()); } valid_br_num++; @@ -1011,7 +1011,7 @@ int ObLogSequencer::add_dml_br_to_binlog_record_list_(TransCtx &trans_ctx, return ret; } -// Consider a scenario that dec_part_trans_count after sequence +// Consider a scenario that dec_part_trans_count after sequence // 1. create table ... pk hash 100 // 2. liboblog has opened a transaction on the partition // 3. drop table ... When deleting the partition, because the PartMgr reference count is not 0, mark Offline diff --git a/src/liboblog/src/ob_log_sequencer1.h b/tools/obcdc/src/ob_log_sequencer1.h similarity index 99% rename from src/liboblog/src/ob_log_sequencer1.h rename to tools/obcdc/src/ob_log_sequencer1.h index 7ebfa9555..e9a647f84 100644 --- a/src/liboblog/src/ob_log_sequencer1.h +++ b/tools/obcdc/src/ob_log_sequencer1.h @@ -212,7 +212,7 @@ private: // Statement sort operator: current sort based on sql_no, used to find the minimum value of the heap, used only for sorting DML statements bool operator()(const ObLogRowDataIndex *task1, const ObLogRowDataIndex *task2) { - return task1->get_row_sql_no() > task2->get_row_sql_no(); + return task1->get_row_seq_no() > task2->get_row_seq_no(); } }; diff --git a/src/liboblog/src/ob_log_server_priority.cpp b/tools/obcdc/src/ob_log_server_priority.cpp similarity index 100% rename from src/liboblog/src/ob_log_server_priority.cpp rename to tools/obcdc/src/ob_log_server_priority.cpp diff --git a/src/liboblog/src/ob_log_server_priority.h b/tools/obcdc/src/ob_log_server_priority.h similarity index 100% rename from src/liboblog/src/ob_log_server_priority.h rename to tools/obcdc/src/ob_log_server_priority.h diff --git a/src/liboblog/src/ob_log_sql_server_provider.cpp b/tools/obcdc/src/ob_log_sql_server_provider.cpp similarity index 100% rename from src/liboblog/src/ob_log_sql_server_provider.cpp rename to tools/obcdc/src/ob_log_sql_server_provider.cpp diff --git a/src/liboblog/src/ob_log_sql_server_provider.h b/tools/obcdc/src/ob_log_sql_server_provider.h similarity index 100% rename from src/liboblog/src/ob_log_sql_server_provider.h rename to tools/obcdc/src/ob_log_sql_server_provider.h diff --git a/src/liboblog/src/ob_log_start_log_id_locator.cpp b/tools/obcdc/src/ob_log_start_log_id_locator.cpp similarity index 99% rename from src/liboblog/src/ob_log_start_log_id_locator.cpp rename to tools/obcdc/src/ob_log_start_log_id_locator.cpp index 1d25a1dea..c5ecba273 100644 --- a/src/liboblog/src/ob_log_start_log_id_locator.cpp +++ b/tools/obcdc/src/ob_log_start_log_id_locator.cpp @@ -246,7 +246,7 @@ void ObLogStartLogIdLocator::run(const int64_t thread_index) LOG_ERROR("retrieve request fail", KR(ret), K(thread_index)); } else if (OB_FAIL(do_request_(data))) { if (OB_IN_STOP_STATE != ret) { - LOG_ERROR("do request fail", KR(ret)); + LOG_ERROR("do request fail", KR(ret)); } } else { cond_timedwait(thread_index, DATA_OP_TIMEOUT); diff --git a/src/liboblog/src/ob_log_start_log_id_locator.h b/tools/obcdc/src/ob_log_start_log_id_locator.h similarity index 100% rename from src/liboblog/src/ob_log_start_log_id_locator.h rename to tools/obcdc/src/ob_log_start_log_id_locator.h diff --git a/src/liboblog/src/ob_log_start_schema_matcher.cpp b/tools/obcdc/src/ob_log_start_schema_matcher.cpp similarity index 100% rename from src/liboblog/src/ob_log_start_schema_matcher.cpp rename to tools/obcdc/src/ob_log_start_schema_matcher.cpp diff --git a/src/liboblog/src/ob_log_start_schema_matcher.h b/tools/obcdc/src/ob_log_start_schema_matcher.h similarity index 100% rename from src/liboblog/src/ob_log_start_schema_matcher.h rename to tools/obcdc/src/ob_log_start_schema_matcher.h diff --git a/src/liboblog/src/ob_log_storager.cpp b/tools/obcdc/src/ob_log_storager.cpp similarity index 100% rename from src/liboblog/src/ob_log_storager.cpp rename to tools/obcdc/src/ob_log_storager.cpp diff --git a/src/liboblog/src/ob_log_storager.h b/tools/obcdc/src/ob_log_storager.h similarity index 100% rename from src/liboblog/src/ob_log_storager.h rename to tools/obcdc/src/ob_log_storager.h diff --git a/src/liboblog/src/ob_log_store_service.h b/tools/obcdc/src/ob_log_store_service.h similarity index 95% rename from src/liboblog/src/ob_log_store_service.h rename to tools/obcdc/src/ob_log_store_service.h index 3f885f5f6..7269f7819 100644 --- a/src/liboblog/src/ob_log_store_service.h +++ b/tools/obcdc/src/ob_log_store_service.h @@ -58,6 +58,7 @@ public: virtual int del(const std::string &key) = 0; virtual int del(void *cf_handle, const std::string &key) = 0; + virtual int del_range(void *cf_handle, const std::string &begin_key, const std::string &end_key) = 0; virtual int create_column_family(const std::string& column_family_name, void *&cf_handle) = 0; diff --git a/src/liboblog/src/ob_log_store_service_stat.cpp b/tools/obcdc/src/ob_log_store_service_stat.cpp similarity index 100% rename from src/liboblog/src/ob_log_store_service_stat.cpp rename to tools/obcdc/src/ob_log_store_service_stat.cpp diff --git a/src/liboblog/src/ob_log_store_service_stat.h b/tools/obcdc/src/ob_log_store_service_stat.h similarity index 100% rename from src/liboblog/src/ob_log_store_service_stat.h rename to tools/obcdc/src/ob_log_store_service_stat.h diff --git a/src/liboblog/src/ob_log_stream_worker.cpp b/tools/obcdc/src/ob_log_stream_worker.cpp similarity index 100% rename from src/liboblog/src/ob_log_stream_worker.cpp rename to tools/obcdc/src/ob_log_stream_worker.cpp diff --git a/src/liboblog/src/ob_log_stream_worker.h b/tools/obcdc/src/ob_log_stream_worker.h similarity index 100% rename from src/liboblog/src/ob_log_stream_worker.h rename to tools/obcdc/src/ob_log_stream_worker.h diff --git a/src/liboblog/src/ob_log_svr_blacklist.cpp b/tools/obcdc/src/ob_log_svr_blacklist.cpp similarity index 100% rename from src/liboblog/src/ob_log_svr_blacklist.cpp rename to tools/obcdc/src/ob_log_svr_blacklist.cpp diff --git a/src/liboblog/src/ob_log_svr_blacklist.h b/tools/obcdc/src/ob_log_svr_blacklist.h similarity index 100% rename from src/liboblog/src/ob_log_svr_blacklist.h rename to tools/obcdc/src/ob_log_svr_blacklist.h diff --git a/src/liboblog/src/ob_log_svr_finder.cpp b/tools/obcdc/src/ob_log_svr_finder.cpp similarity index 100% rename from src/liboblog/src/ob_log_svr_finder.cpp rename to tools/obcdc/src/ob_log_svr_finder.cpp diff --git a/src/liboblog/src/ob_log_svr_finder.h b/tools/obcdc/src/ob_log_svr_finder.h similarity index 100% rename from src/liboblog/src/ob_log_svr_finder.h rename to tools/obcdc/src/ob_log_svr_finder.h diff --git a/src/liboblog/src/ob_log_svr_stream.cpp b/tools/obcdc/src/ob_log_svr_stream.cpp similarity index 100% rename from src/liboblog/src/ob_log_svr_stream.cpp rename to tools/obcdc/src/ob_log_svr_stream.cpp diff --git a/src/liboblog/src/ob_log_svr_stream.h b/tools/obcdc/src/ob_log_svr_stream.h similarity index 100% rename from src/liboblog/src/ob_log_svr_stream.h rename to tools/obcdc/src/ob_log_svr_stream.h diff --git a/src/liboblog/src/ob_log_systable_helper.cpp b/tools/obcdc/src/ob_log_systable_helper.cpp similarity index 100% rename from src/liboblog/src/ob_log_systable_helper.cpp rename to tools/obcdc/src/ob_log_systable_helper.cpp diff --git a/src/liboblog/src/ob_log_systable_helper.h b/tools/obcdc/src/ob_log_systable_helper.h similarity index 100% rename from src/liboblog/src/ob_log_systable_helper.h rename to tools/obcdc/src/ob_log_systable_helper.h diff --git a/src/liboblog/src/ob_log_table_id_cache.cpp b/tools/obcdc/src/ob_log_table_id_cache.cpp similarity index 100% rename from src/liboblog/src/ob_log_table_id_cache.cpp rename to tools/obcdc/src/ob_log_table_id_cache.cpp diff --git a/src/liboblog/src/ob_log_table_id_cache.h b/tools/obcdc/src/ob_log_table_id_cache.h similarity index 100% rename from src/liboblog/src/ob_log_table_id_cache.h rename to tools/obcdc/src/ob_log_table_id_cache.h diff --git a/src/liboblog/src/ob_log_table_matcher.cpp b/tools/obcdc/src/ob_log_table_matcher.cpp similarity index 100% rename from src/liboblog/src/ob_log_table_matcher.cpp rename to tools/obcdc/src/ob_log_table_matcher.cpp diff --git a/src/liboblog/src/ob_log_table_matcher.h b/tools/obcdc/src/ob_log_table_matcher.h similarity index 100% rename from src/liboblog/src/ob_log_table_matcher.h rename to tools/obcdc/src/ob_log_table_matcher.h diff --git a/src/liboblog/src/ob_log_task_pool.h b/tools/obcdc/src/ob_log_task_pool.h similarity index 100% rename from src/liboblog/src/ob_log_task_pool.h rename to tools/obcdc/src/ob_log_task_pool.h diff --git a/src/liboblog/src/ob_log_tenant.cpp b/tools/obcdc/src/ob_log_tenant.cpp similarity index 100% rename from src/liboblog/src/ob_log_tenant.cpp rename to tools/obcdc/src/ob_log_tenant.cpp diff --git a/src/liboblog/src/ob_log_tenant.h b/tools/obcdc/src/ob_log_tenant.h similarity index 100% rename from src/liboblog/src/ob_log_tenant.h rename to tools/obcdc/src/ob_log_tenant.h diff --git a/src/liboblog/src/ob_log_tenant_mgr.cpp b/tools/obcdc/src/ob_log_tenant_mgr.cpp similarity index 100% rename from src/liboblog/src/ob_log_tenant_mgr.cpp rename to tools/obcdc/src/ob_log_tenant_mgr.cpp diff --git a/src/liboblog/src/ob_log_tenant_mgr.h b/tools/obcdc/src/ob_log_tenant_mgr.h similarity index 100% rename from src/liboblog/src/ob_log_tenant_mgr.h rename to tools/obcdc/src/ob_log_tenant_mgr.h diff --git a/src/liboblog/src/ob_log_tenant_task_queue.cpp b/tools/obcdc/src/ob_log_tenant_task_queue.cpp similarity index 100% rename from src/liboblog/src/ob_log_tenant_task_queue.cpp rename to tools/obcdc/src/ob_log_tenant_task_queue.cpp diff --git a/src/liboblog/src/ob_log_tenant_task_queue.h b/tools/obcdc/src/ob_log_tenant_task_queue.h similarity index 100% rename from src/liboblog/src/ob_log_tenant_task_queue.h rename to tools/obcdc/src/ob_log_tenant_task_queue.h diff --git a/src/liboblog/src/ob_log_timer.cpp b/tools/obcdc/src/ob_log_timer.cpp similarity index 99% rename from src/liboblog/src/ob_log_timer.cpp rename to tools/obcdc/src/ob_log_timer.cpp index 46f230bf4..067552f39 100644 --- a/src/liboblog/src/ob_log_timer.cpp +++ b/tools/obcdc/src/ob_log_timer.cpp @@ -306,4 +306,3 @@ ObLogFixedTimer::QTask::QTask(ObLogTimerTask &task) : task_(task) } } - diff --git a/src/liboblog/src/ob_log_timer.h b/tools/obcdc/src/ob_log_timer.h similarity index 100% rename from src/liboblog/src/ob_log_timer.h rename to tools/obcdc/src/ob_log_timer.h diff --git a/src/liboblog/src/ob_log_timezone_info_getter.cpp b/tools/obcdc/src/ob_log_timezone_info_getter.cpp similarity index 100% rename from src/liboblog/src/ob_log_timezone_info_getter.cpp rename to tools/obcdc/src/ob_log_timezone_info_getter.cpp diff --git a/src/liboblog/src/ob_log_timezone_info_getter.h b/tools/obcdc/src/ob_log_timezone_info_getter.h similarity index 100% rename from src/liboblog/src/ob_log_timezone_info_getter.h rename to tools/obcdc/src/ob_log_timezone_info_getter.h diff --git a/src/liboblog/src/ob_log_trace_id.cpp b/tools/obcdc/src/ob_log_trace_id.cpp similarity index 100% rename from src/liboblog/src/ob_log_trace_id.cpp rename to tools/obcdc/src/ob_log_trace_id.cpp diff --git a/src/liboblog/src/ob_log_trace_id.h b/tools/obcdc/src/ob_log_trace_id.h similarity index 100% rename from src/liboblog/src/ob_log_trace_id.h rename to tools/obcdc/src/ob_log_trace_id.h diff --git a/src/liboblog/src/ob_log_trans_ctx.cpp b/tools/obcdc/src/ob_log_trans_ctx.cpp similarity index 100% rename from src/liboblog/src/ob_log_trans_ctx.cpp rename to tools/obcdc/src/ob_log_trans_ctx.cpp diff --git a/src/liboblog/src/ob_log_trans_ctx.h b/tools/obcdc/src/ob_log_trans_ctx.h similarity index 100% rename from src/liboblog/src/ob_log_trans_ctx.h rename to tools/obcdc/src/ob_log_trans_ctx.h diff --git a/src/liboblog/src/ob_log_trans_ctx_mgr.cpp b/tools/obcdc/src/ob_log_trans_ctx_mgr.cpp similarity index 100% rename from src/liboblog/src/ob_log_trans_ctx_mgr.cpp rename to tools/obcdc/src/ob_log_trans_ctx_mgr.cpp diff --git a/src/liboblog/src/ob_log_trans_ctx_mgr.h b/tools/obcdc/src/ob_log_trans_ctx_mgr.h similarity index 100% rename from src/liboblog/src/ob_log_trans_ctx_mgr.h rename to tools/obcdc/src/ob_log_trans_ctx_mgr.h diff --git a/src/liboblog/src/ob_log_trans_log.cpp b/tools/obcdc/src/ob_log_trans_log.cpp similarity index 100% rename from src/liboblog/src/ob_log_trans_log.cpp rename to tools/obcdc/src/ob_log_trans_log.cpp diff --git a/src/liboblog/src/ob_log_trans_log.h b/tools/obcdc/src/ob_log_trans_log.h similarity index 100% rename from src/liboblog/src/ob_log_trans_log.h rename to tools/obcdc/src/ob_log_trans_log.h diff --git a/src/liboblog/src/ob_log_trans_stat_mgr.cpp b/tools/obcdc/src/ob_log_trans_stat_mgr.cpp similarity index 100% rename from src/liboblog/src/ob_log_trans_stat_mgr.cpp rename to tools/obcdc/src/ob_log_trans_stat_mgr.cpp diff --git a/src/liboblog/src/ob_log_trans_stat_mgr.h b/tools/obcdc/src/ob_log_trans_stat_mgr.h similarity index 100% rename from src/liboblog/src/ob_log_trans_stat_mgr.h rename to tools/obcdc/src/ob_log_trans_stat_mgr.h diff --git a/src/liboblog/src/ob_log_utils.cpp b/tools/obcdc/src/ob_log_utils.cpp similarity index 99% rename from src/liboblog/src/ob_log_utils.cpp rename to tools/obcdc/src/ob_log_utils.cpp index a0a342362..1b937b661 100644 --- a/src/liboblog/src/ob_log_utils.cpp +++ b/tools/obcdc/src/ob_log_utils.cpp @@ -1396,6 +1396,16 @@ int c_str_to_int(const char* str, int64_t &num) return ret; } +void cal_version_components(const uint64_t version, + uint32_t &major, + uint16_t &minor, + uint16_t &patch) +{ + major = OB_VSN_MAJOR(version); + minor = OB_VSN_MINOR(version); + patch = OB_VSN_PATCH(version); +} + ////////////////////////////////////////////////////////////////// } /* liboblog */ diff --git a/src/liboblog/src/ob_log_utils.h b/tools/obcdc/src/ob_log_utils.h similarity index 99% rename from src/liboblog/src/ob_log_utils.h rename to tools/obcdc/src/ob_log_utils.h index 9a0c7fb9e..a09fdbcd2 100644 --- a/src/liboblog/src/ob_log_utils.h +++ b/tools/obcdc/src/ob_log_utils.h @@ -529,6 +529,12 @@ int get_mem_br_value(ILogRecord *br, ObArray &new_values); int c_str_to_int(const char* str, int64_t &num); + +void cal_version_components(const uint64_t version, + uint32_t &major, + uint16_t &minor, + uint16_t &patch); + } // namespace liboblog } // namespace oceanbase #endif /* OCEANBASE_LIBOBLOG_UTILS_H__ */ diff --git a/src/liboblog/src/ob_log_work_mode.cpp b/tools/obcdc/src/ob_log_work_mode.cpp similarity index 100% rename from src/liboblog/src/ob_log_work_mode.cpp rename to tools/obcdc/src/ob_log_work_mode.cpp diff --git a/src/liboblog/src/ob_log_work_mode.h b/tools/obcdc/src/ob_log_work_mode.h similarity index 100% rename from src/liboblog/src/ob_log_work_mode.h rename to tools/obcdc/src/ob_log_work_mode.h diff --git a/src/liboblog/src/ob_map_queue.h b/tools/obcdc/src/ob_map_queue.h similarity index 100% rename from src/liboblog/src/ob_map_queue.h rename to tools/obcdc/src/ob_map_queue.h diff --git a/src/liboblog/src/ob_map_queue_thread.h b/tools/obcdc/src/ob_map_queue_thread.h similarity index 100% rename from src/liboblog/src/ob_map_queue_thread.h rename to tools/obcdc/src/ob_map_queue_thread.h diff --git a/src/liboblog/src/ob_ms_queue_thread.h b/tools/obcdc/src/ob_ms_queue_thread.h similarity index 100% rename from src/liboblog/src/ob_ms_queue_thread.h rename to tools/obcdc/src/ob_ms_queue_thread.h diff --git a/src/liboblog/src/ob_obj2str_helper.cpp b/tools/obcdc/src/ob_obj2str_helper.cpp similarity index 100% rename from src/liboblog/src/ob_obj2str_helper.cpp rename to tools/obcdc/src/ob_obj2str_helper.cpp diff --git a/src/liboblog/src/ob_obj2str_helper.h b/tools/obcdc/src/ob_obj2str_helper.h similarity index 100% rename from src/liboblog/src/ob_obj2str_helper.h rename to tools/obcdc/src/ob_obj2str_helper.h diff --git a/src/liboblog/src/ob_seq_thread.h b/tools/obcdc/src/ob_seq_thread.h similarity index 100% rename from src/liboblog/src/ob_seq_thread.h rename to tools/obcdc/src/ob_seq_thread.h diff --git a/src/liboblog/src/ob_small_arena.cpp b/tools/obcdc/src/ob_small_arena.cpp similarity index 100% rename from src/liboblog/src/ob_small_arena.cpp rename to tools/obcdc/src/ob_small_arena.cpp diff --git a/src/liboblog/src/ob_small_arena.h b/tools/obcdc/src/ob_small_arena.h similarity index 100% rename from src/liboblog/src/ob_small_arena.h rename to tools/obcdc/src/ob_small_arena.h diff --git a/tools/obcdc/tests/CMakeLists.txt b/tools/obcdc/tests/CMakeLists.txt new file mode 100644 index 000000000..16494a3ee --- /dev/null +++ b/tools/obcdc/tests/CMakeLists.txt @@ -0,0 +1,7 @@ +add_executable(obcdc_tailf + main.cpp + oblog_main.h oblog_main.cpp + ob_binlog_record_printer.h ob_binlog_record_printer.cpp + ) +target_link_libraries(obcdc_tailf PRIVATE obcdc) +target_include_directories(obcdc_tailf PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../src) diff --git a/src/liboblog/tests/conf/liboblog.conf.tpl b/tools/obcdc/tests/conf/liboblog.conf.tpl similarity index 100% rename from src/liboblog/tests/conf/liboblog.conf.tpl rename to tools/obcdc/tests/conf/liboblog.conf.tpl diff --git a/src/liboblog/tests/copy_oblog.sh b/tools/obcdc/tests/copy_oblog.sh similarity index 83% rename from src/liboblog/tests/copy_oblog.sh rename to tools/obcdc/tests/copy_oblog.sh index e5ee6a54b..f682c2995 100755 --- a/src/liboblog/tests/copy_oblog.sh +++ b/tools/obcdc/tests/copy_oblog.sh @@ -34,12 +34,11 @@ else fi fi -echo "copy liboblog.so, oblog_tailf from "$OCEANBASE_DIR +echo "copy libobcdc.so, obcdc_tailf from "$OCEANBASE_DIR -OBLOG_SO="$OCEANBASE_DIR/src/liboblog/src/liboblog.so.1" -OBLOG_TAILF="$OCEANBASE_DIR/src/liboblog/tests/oblog_tailf" +OBLOG_SO="$OCEANBASE_DIR/tools/obcdc/src/libobcdc.so.1" +OBLOG_TAILF="$OCEANBASE_DIR/tools/obcdc/tests/obcdc_tailf" mkdir -p $OBLOG_DIR [ -f $OBLOG_SO ] && libtool --mode=install cp $OBLOG_SO $OBLOG_DIR/ [ -f $OBLOG_TAILF ] && libtool --mode=install cp $OBLOG_TAILF $OBLOG_TAILF_DIR - diff --git a/src/liboblog/tests/fetcher_integration_test_add_dispatch_discard.cpp b/tools/obcdc/tests/fetcher_integration_test_add_dispatch_discard.cpp similarity index 99% rename from src/liboblog/tests/fetcher_integration_test_add_dispatch_discard.cpp rename to tools/obcdc/tests/fetcher_integration_test_add_dispatch_discard.cpp index dec8c57e3..f7ac0d0bd 100644 --- a/src/liboblog/tests/fetcher_integration_test_add_dispatch_discard.cpp +++ b/tools/obcdc/tests/fetcher_integration_test_add_dispatch_discard.cpp @@ -16,7 +16,7 @@ #include "share/ob_define.h" #include "lib/file/file_directory_utils.h" -#include "liboblog/src/ob_log_fetcher_impl.h" +#include "ob_log_fetcher_impl.h" using namespace oceanbase; using namespace common; diff --git a/src/liboblog/tests/fetcher_integration_test_fetch_log.cpp b/tools/obcdc/tests/fetcher_integration_test_fetch_log.cpp similarity index 99% rename from src/liboblog/tests/fetcher_integration_test_fetch_log.cpp rename to tools/obcdc/tests/fetcher_integration_test_fetch_log.cpp index 9c53b3b3d..e08012f1e 100644 --- a/src/liboblog/tests/fetcher_integration_test_fetch_log.cpp +++ b/tools/obcdc/tests/fetcher_integration_test_fetch_log.cpp @@ -16,7 +16,7 @@ #include "share/ob_define.h" #include "lib/file/file_directory_utils.h" -#include "liboblog/src/ob_log_fetcher_impl.h" +#include "ob_log_fetcher_impl.h" #include "ob_log_trans_log.h" using namespace oceanbase; diff --git a/src/liboblog/tests/fetcher_integration_test_heartbeater.cpp b/tools/obcdc/tests/fetcher_integration_test_heartbeater.cpp similarity index 100% rename from src/liboblog/tests/fetcher_integration_test_heartbeater.cpp rename to tools/obcdc/tests/fetcher_integration_test_heartbeater.cpp diff --git a/src/liboblog/tests/kill_oblog.sh b/tools/obcdc/tests/kill_oblog.sh similarity index 100% rename from src/liboblog/tests/kill_oblog.sh rename to tools/obcdc/tests/kill_oblog.sh diff --git a/src/liboblog/tests/main.cpp b/tools/obcdc/tests/main.cpp similarity index 100% rename from src/liboblog/tests/main.cpp rename to tools/obcdc/tests/main.cpp diff --git a/src/liboblog/tests/ob_binlog_record_printer.cpp b/tools/obcdc/tests/ob_binlog_record_printer.cpp similarity index 100% rename from src/liboblog/tests/ob_binlog_record_printer.cpp rename to tools/obcdc/tests/ob_binlog_record_printer.cpp diff --git a/src/liboblog/tests/ob_binlog_record_printer.h b/tools/obcdc/tests/ob_binlog_record_printer.h similarity index 100% rename from src/liboblog/tests/ob_binlog_record_printer.h rename to tools/obcdc/tests/ob_binlog_record_printer.h diff --git a/src/liboblog/tests/oblog_main.cpp b/tools/obcdc/tests/oblog_main.cpp similarity index 100% rename from src/liboblog/tests/oblog_main.cpp rename to tools/obcdc/tests/oblog_main.cpp diff --git a/src/liboblog/tests/oblog_main.h b/tools/obcdc/tests/oblog_main.h similarity index 98% rename from src/liboblog/tests/oblog_main.h rename to tools/obcdc/tests/oblog_main.h index 75eb1d96f..a28943106 100644 --- a/src/liboblog/tests/oblog_main.h +++ b/tools/obcdc/tests/oblog_main.h @@ -15,7 +15,7 @@ #include "share/ob_define.h" -#include "liboblog.h" // IObLog +#include "libobcdc.h" // IObLog #include "ob_binlog_record_printer.h" // ObBinlogRecordPrinter namespace oceanbase diff --git a/src/liboblog/tests/start.sh.tpl b/tools/obcdc/tests/start.sh.tpl similarity index 100% rename from src/liboblog/tests/start.sh.tpl rename to tools/obcdc/tests/start.sh.tpl diff --git a/src/liboblog/tests/top.sh b/tools/obcdc/tests/top.sh similarity index 100% rename from src/liboblog/tests/top.sh rename to tools/obcdc/tests/top.sh diff --git a/src/liboblog/tests/watch_delay.sh b/tools/obcdc/tests/watch_delay.sh similarity index 100% rename from src/liboblog/tests/watch_delay.sh rename to tools/obcdc/tests/watch_delay.sh diff --git a/src/liboblog/tests/watch_fetcher_delay.sh b/tools/obcdc/tests/watch_fetcher_delay.sh similarity index 100% rename from src/liboblog/tests/watch_fetcher_delay.sh rename to tools/obcdc/tests/watch_fetcher_delay.sh diff --git a/src/liboblog/tests/watch_flow_control.sh b/tools/obcdc/tests/watch_flow_control.sh similarity index 100% rename from src/liboblog/tests/watch_flow_control.sh rename to tools/obcdc/tests/watch_flow_control.sh diff --git a/src/liboblog/tests/watch_tps.sh b/tools/obcdc/tests/watch_tps.sh similarity index 100% rename from src/liboblog/tests/watch_tps.sh rename to tools/obcdc/tests/watch_tps.sh diff --git a/src/liboblog/tests/watch_traffic.sh b/tools/obcdc/tests/watch_traffic.sh similarity index 100% rename from src/liboblog/tests/watch_traffic.sh rename to tools/obcdc/tests/watch_traffic.sh diff --git a/src/liboblog/tests/watch_trans_ctx.sh b/tools/obcdc/tests/watch_trans_ctx.sh similarity index 100% rename from src/liboblog/tests/watch_trans_ctx.sh rename to tools/obcdc/tests/watch_trans_ctx.sh diff --git a/src/liboblog/tests/watch_trans_task.sh b/tools/obcdc/tests/watch_trans_task.sh similarity index 100% rename from src/liboblog/tests/watch_trans_task.sh rename to tools/obcdc/tests/watch_trans_task.sh diff --git a/unittest/CMakeLists.txt b/unittest/CMakeLists.txt index 3433f2e51..20f5d8038 100644 --- a/unittest/CMakeLists.txt +++ b/unittest/CMakeLists.txt @@ -30,5 +30,5 @@ add_subdirectory(share) add_subdirectory(rootserver) add_subdirectory(tools) if (OB_BUILD_LIBOBLOG) - add_subdirectory(liboblog) + add_subdirectory(obcdc) endif() diff --git a/unittest/liboblog/CMakeLists.txt b/unittest/liboblog/CMakeLists.txt deleted file mode 100644 index b0970e4d2..000000000 --- a/unittest/liboblog/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) -link_directories(${DEP_DIR}/lib/mariadb) -function(liboblog_unittest case) - if(ARGC EQUAL 1) - add_executable(${case} ${case}.cpp) - else() - add_executable(${ARGV}) - endif() - target_link_libraries(${case} PRIVATE oceanbase oblog gtest gmock) - disable_pch(${case}) - target_include_directories(${case} - PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/unittest ${CMAKE_SOURCE_DIR}/deps/oblib/unittest ${DEP_DIR}/include) -endfunction() - -liboblog_unittest(test_log_part_mgr) -liboblog_unittest(test_log_task_pool) -liboblog_unittest(test_small_arena) -#liboblog_unittest(test_log_config) // TODO may core, need fix -liboblog_unittest(test_log_fake_common_config) -liboblog_unittest(test_log_table_matcher) -liboblog_unittest(test_ob_map_queue) -liboblog_unittest(test_ob_map_queue_thread) -liboblog_unittest(test_ob_log_timer) -liboblog_unittest(test_ob_log_dlist) -liboblog_unittest(test_ob_log_part_svr_list) -liboblog_unittest(test_ob_log_all_svr_cache) -liboblog_unittest(test_ob_log_start_log_id_locator) -liboblog_unittest(test_ob_log_heartbeater) -liboblog_unittest(test_log_utils) -liboblog_unittest(test_ob_log_adapt_string) -liboblog_unittest(test_ob_concurrent_seq_queue) -liboblog_unittest(test_ob_seq_thread) -liboblog_unittest(test_ob_log_part_trans_resolver_new) -liboblog_unittest(test_log_svr_blacklist) diff --git a/unittest/obcdc/CMakeLists.txt b/unittest/obcdc/CMakeLists.txt new file mode 100644 index 000000000..ebc246b5f --- /dev/null +++ b/unittest/obcdc/CMakeLists.txt @@ -0,0 +1,30 @@ +add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0) +link_directories(${DEP_DIR}/lib/mariadb) +function(libobcdc_unittest case) + ob_unittest(${ARGV}) + target_link_libraries(${case} PRIVATE obcdc) + disable_pch(${case}) + target_include_directories(${case} + PRIVATE ${PROJECT_SOURCE_DIR}/tools ${CMAKE_SOURCE_DIR}/unittest ${CMAKE_SOURCE_DIR}/deps/oblib/unittest ${DEP_DIR}/include) +endfunction() + +libobcdc_unittest(test_log_part_mgr) +libobcdc_unittest(test_log_task_pool) +libobcdc_unittest(test_small_arena) +libobcdc_unittest(test_log_config) +libobcdc_unittest(test_log_fake_common_config) +libobcdc_unittest(test_log_table_matcher) +libobcdc_unittest(test_ob_map_queue) +libobcdc_unittest(test_ob_map_queue_thread) +libobcdc_unittest(test_ob_log_timer) +libobcdc_unittest(test_ob_log_dlist) +libobcdc_unittest(test_ob_log_part_svr_list) +libobcdc_unittest(test_ob_log_all_svr_cache) +libobcdc_unittest(test_ob_log_start_log_id_locator) +libobcdc_unittest(test_ob_log_heartbeater) +libobcdc_unittest(test_log_utils) +libobcdc_unittest(test_ob_log_adapt_string) +libobcdc_unittest(test_ob_concurrent_seq_queue) +libobcdc_unittest(test_ob_seq_thread) +libobcdc_unittest(test_ob_log_part_trans_resolver_new) +libobcdc_unittest(test_log_svr_blacklist) diff --git a/unittest/liboblog/fake_config_server b/unittest/obcdc/fake_config_server similarity index 100% rename from unittest/liboblog/fake_config_server rename to unittest/obcdc/fake_config_server diff --git a/unittest/liboblog/nopretest_test_ext_break.cpp b/unittest/obcdc/nopretest_test_ext_break.cpp similarity index 100% rename from unittest/liboblog/nopretest_test_ext_break.cpp rename to unittest/obcdc/nopretest_test_ext_break.cpp diff --git a/unittest/liboblog/nopretest_test_ext_fetcher.cpp b/unittest/obcdc/nopretest_test_ext_fetcher.cpp similarity index 100% rename from unittest/liboblog/nopretest_test_ext_fetcher.cpp rename to unittest/obcdc/nopretest_test_ext_fetcher.cpp diff --git a/unittest/liboblog/test_log_config.cpp b/unittest/obcdc/test_log_config.cpp similarity index 70% rename from unittest/liboblog/test_log_config.cpp rename to unittest/obcdc/test_log_config.cpp index a8cf2e064..570edc444 100644 --- a/unittest/liboblog/test_log_config.cpp +++ b/unittest/obcdc/test_log_config.cpp @@ -92,10 +92,10 @@ void TestLogConfig::SetUp() ADD_CONFIG_STR(log_level, "INFO"); ADD_CONFIG_STR(cluster_url, "http:://www.test_url.com/abcdefg/"); - ADD_CONFIG_STR(cluster_user, "中华人民共和国"); - ADD_CONFIG_STR(cluster_password, "阿里巴巴"); + ADD_CONFIG_STR(cluster_user, "cdc"); + ADD_CONFIG_STR(cluster_password, "V587"); ADD_CONFIG_STR(config_fpath, "/home/abcdefg/hijklmn"); - ADD_CONFIG_STR(cluster_appname, "obtest"); + ADD_CONFIG_STR(cluster_appname, "obcdc"); ADD_CONFIG_STR(cluster_db_name, "oceanbase"); ADD_CONFIG_STR(timezone, "+8:00"); ADD_CONFIG_STR(tb_white_list, "*.*.*"); @@ -108,60 +108,71 @@ void TestLogConfig::SetUp() TEST_F(TestLogConfig, init) { - LOG_INFO("sizeof ObLogConfig"); - ObLogConfig config; + ObLogConfig *config = new ObLogConfig(); - EXPECT_EQ(OB_SUCCESS, config.init()); + EXPECT_EQ(OB_SUCCESS, config->init()); // After initialization, the configuration items are not detected by default - EXPECT_NE(OB_SUCCESS, config.check_all()); - config.print(); + EXPECT_NE(OB_SUCCESS, config->check_all()); + config->print(); + if (NULL != config) { + delete config; + config = NULL; + } } TEST_F(TestLogConfig, load_from_buffer) { - ObLogConfig config; - EXPECT_EQ(OB_SUCCESS, config.init()); + ObLogConfig *config = new ObLogConfig(); + EXPECT_EQ(OB_SUCCESS, config->init()); - EXPECT_EQ(OB_SUCCESS, config.load_from_buffer(config_buf_, strlen(config_buf_))); - EXPECT_EQ(OB_SUCCESS, config.check_all()); - config.print(); + EXPECT_EQ(OB_SUCCESS, config->load_from_buffer(config_buf_, strlen(config_buf_))); + EXPECT_EQ(OB_SUCCESS, config->check_all()); + config->print(); - EXPECT_EQ(dml_parser_thread_num, config.dml_parser_thread_num); - EXPECT_EQ(sequencer_thread_num, config.sequencer_thread_num); - EXPECT_EQ(formatter_thread_num, config.formatter_thread_num); - EXPECT_EQ(0, strcmp(cluster_url, config.cluster_url.str())); - EXPECT_EQ(0, strcmp(log_level, config.log_level.str())); - EXPECT_EQ(0, strcmp(cluster_user, config.cluster_user.str())); - EXPECT_EQ(0, strcmp(cluster_password, config.cluster_password.str())); - EXPECT_EQ(0, strcmp(config_fpath, config.config_fpath.str())); + EXPECT_EQ(dml_parser_thread_num, config->dml_parser_thread_num); + EXPECT_EQ(sequencer_thread_num, config->sequencer_thread_num); + EXPECT_EQ(formatter_thread_num, config->formatter_thread_num); + EXPECT_EQ(0, strcmp(cluster_url, config->cluster_url.str())); + EXPECT_EQ(0, strcmp(log_level, config->log_level.str())); + EXPECT_EQ(0, strcmp(cluster_user, config->cluster_user.str())); + EXPECT_EQ(0, strcmp(cluster_password, config->cluster_password.str())); + EXPECT_EQ(0, strcmp(config_fpath, config->config_fpath.str())); bool check_name = true; int64_t version = 0; EXPECT_NE(OB_SUCCESS, - config.load_from_buffer(config_buf_, strlen(config_buf_), version, check_name)); + config->load_from_buffer(config_buf_, strlen(config_buf_), version, check_name)); + if (NULL != config) { + delete config; + config = NULL; + } } TEST_F(TestLogConfig, load_from_map) { - ObLogConfig config; - EXPECT_EQ(OB_SUCCESS, config.init()); + ObLogConfig *config = new ObLogConfig(); + EXPECT_EQ(OB_SUCCESS, config->init()); - EXPECT_EQ(OB_SUCCESS, config.load_from_map(config_map_)); - EXPECT_EQ(OB_SUCCESS, config.check_all()); - config.print(); + EXPECT_EQ(OB_SUCCESS, config->load_from_map(config_map_)); + EXPECT_EQ(OB_SUCCESS, config->check_all()); + config->print(); - EXPECT_EQ(dml_parser_thread_num, config.dml_parser_thread_num); - EXPECT_EQ(sequencer_thread_num, config.sequencer_thread_num); - EXPECT_EQ(formatter_thread_num, config.formatter_thread_num); - EXPECT_EQ(0, strcmp(cluster_url, config.cluster_url.str())); - EXPECT_EQ(0, strcmp(log_level, config.log_level.str())); - EXPECT_EQ(0, strcmp(cluster_user, config.cluster_user.str())); - EXPECT_EQ(0, strcmp(cluster_password, config.cluster_password.str())); - EXPECT_EQ(0, strcmp(config_fpath, config.config_fpath.str())); + EXPECT_EQ(dml_parser_thread_num, config->dml_parser_thread_num); + EXPECT_EQ(sequencer_thread_num, config->sequencer_thread_num); + EXPECT_EQ(formatter_thread_num, config->formatter_thread_num); + EXPECT_EQ(0, strcmp(cluster_url, config->cluster_url.str())); + EXPECT_EQ(0, strcmp(log_level, config->log_level.str())); + EXPECT_EQ(0, strcmp(cluster_user, config->cluster_user.str())); + EXPECT_EQ(0, strcmp(cluster_password, config->cluster_password.str())); + EXPECT_EQ(0, strcmp(config_fpath, config->config_fpath.str())); bool check_name = true; int64_t version = 0; - EXPECT_NE(OB_SUCCESS, config.load_from_map(config_map_, version, check_name)); + EXPECT_NE(OB_SUCCESS, config->load_from_map(config_map_, version, check_name)); + if (NULL != config) { + delete config; + config = NULL; + } } TEST_F(TestLogConfig, load_from_file) @@ -222,31 +233,35 @@ TEST_F(TestLogConfig, load_from_file) // default check_all() removes the double quotes from cluster_url TEST_F(TestLogConfig, format_cluster_url) { - ObLogConfig config; - EXPECT_EQ(OB_SUCCESS, config.init()); + ObLogConfig *config = new ObLogConfig(); + EXPECT_EQ(OB_SUCCESS, config->init()); const char *URL = "http://abc.com/def/hijklmn"; char cluster_url[1024]; - ASSERT_EQ(OB_SUCCESS, config.load_from_buffer(config_buf_, strlen(config_buf_))); - ASSERT_EQ(OB_SUCCESS, config.check_all()); + ASSERT_EQ(OB_SUCCESS, config->load_from_buffer(config_buf_, strlen(config_buf_))); + ASSERT_EQ(OB_SUCCESS, config->check_all()); snprintf(cluster_url, sizeof(cluster_url), "\""); - ASSERT_TRUE(config.cluster_url.set_value(cluster_url)); - ASSERT_NE(OB_SUCCESS, config.format_cluster_url()); + ASSERT_TRUE(config->cluster_url.set_value(cluster_url)); + ASSERT_NE(OB_SUCCESS, config->format_cluster_url()); snprintf(cluster_url, sizeof(cluster_url), "\"\""); - ASSERT_TRUE(config.cluster_url.set_value(cluster_url)); - ASSERT_NE(OB_SUCCESS, config.format_cluster_url()); + ASSERT_TRUE(config->cluster_url.set_value(cluster_url)); + ASSERT_NE(OB_SUCCESS, config->format_cluster_url()); snprintf(cluster_url, sizeof(cluster_url), "\"%s\"", URL); - ASSERT_TRUE(config.cluster_url.set_value(cluster_url)); - ASSERT_EQ(OB_SUCCESS, config.format_cluster_url()); - EXPECT_EQ(0, strcmp(URL, config.cluster_url.str())); + ASSERT_TRUE(config->cluster_url.set_value(cluster_url)); + ASSERT_EQ(OB_SUCCESS, config->format_cluster_url()); + EXPECT_EQ(0, strcmp(URL, config->cluster_url.str())); // No handling of single inverted commas snprintf(cluster_url, sizeof(cluster_url), "\'\'"); - ASSERT_TRUE(config.cluster_url.set_value(cluster_url)); - ASSERT_EQ(OB_SUCCESS, config.format_cluster_url()); + ASSERT_TRUE(config->cluster_url.set_value(cluster_url)); + ASSERT_EQ(OB_SUCCESS, config->format_cluster_url()); + if (NULL != config) { + delete config; + config = NULL; + } } } // namespace liboblog diff --git a/unittest/liboblog/test_log_fake_common_config.cpp b/unittest/obcdc/test_log_fake_common_config.cpp similarity index 100% rename from unittest/liboblog/test_log_fake_common_config.cpp rename to unittest/obcdc/test_log_fake_common_config.cpp diff --git a/unittest/liboblog/test_log_fetcher.cpp b/unittest/obcdc/test_log_fetcher.cpp similarity index 96% rename from unittest/liboblog/test_log_fetcher.cpp rename to unittest/obcdc/test_log_fetcher.cpp index 5819b5920..c4054cb7f 100644 --- a/unittest/liboblog/test_log_fetcher.cpp +++ b/unittest/obcdc/test_log_fetcher.cpp @@ -17,9 +17,9 @@ #include "lib/allocator/ob_concurrent_fifo_allocator.h" #include "lib/container/ob_array.h" -#include "liboblog/src/ob_i_log_fetcher.h" -#include "liboblog/src/ob_log_fetcher_utils.h" -#include "liboblog/src/ob_log_fetcher.h" +#include "obcdc/src/ob_i_log_fetcher.h" +#include "obcdc/src/ob_log_fetcher_utils.h" +#include "obcdc/src/ob_log_fetcher.h" #include "test_log_fetcher_common_utils.h" @@ -162,4 +162,3 @@ int main(int argc, char **argv) // testing::FLAGS_gtest_filter = "DO_NOT_RUN"; return RUN_ALL_TESTS(); } - diff --git a/unittest/liboblog/test_log_fetcher_common_utils.h b/unittest/obcdc/test_log_fetcher_common_utils.h similarity index 99% rename from unittest/liboblog/test_log_fetcher_common_utils.h rename to unittest/obcdc/test_log_fetcher_common_utils.h index db9cf522d..93ffb64e1 100644 --- a/unittest/liboblog/test_log_fetcher_common_utils.h +++ b/unittest/obcdc/test_log_fetcher_common_utils.h @@ -18,9 +18,9 @@ #include "storage/ob_storage_log_type.h" #include "storage/transaction/ob_trans_log.h" -#include "liboblog/src/ob_log_instance.h" -#include "liboblog/src/ob_log_fetcher_stream.h" -#include "liboblog/src/ob_log_fetcher_part_stream.h" +#include "obcdc/src/ob_log_instance.h" +#include "obcdc/src/ob_log_fetcher_stream.h" +#include "obcdc/src/ob_log_fetcher_part_stream.h" #include "ob_log_utils.h" // get_timestamp diff --git a/unittest/liboblog/test_log_fetcher_heartbeat_mgr.cpp b/unittest/obcdc/test_log_fetcher_heartbeat_mgr.cpp similarity index 99% rename from unittest/liboblog/test_log_fetcher_heartbeat_mgr.cpp rename to unittest/obcdc/test_log_fetcher_heartbeat_mgr.cpp index 7f6be42f2..2b299f2ae 100644 --- a/unittest/liboblog/test_log_fetcher_heartbeat_mgr.cpp +++ b/unittest/obcdc/test_log_fetcher_heartbeat_mgr.cpp @@ -15,7 +15,7 @@ #include "share/ob_define.h" -#include "liboblog/src/ob_log_fetcher_heartbeat_mgr.h" +#include "obcdc/src/ob_log_fetcher_heartbeat_mgr.h" #include "test_log_fetcher_common_utils.h" @@ -173,7 +173,7 @@ public: } }; -//////////////////////基本功能测试////////////////////////////////////////// +////////////////////// test basic function ////////////////////////////////////////// /* * Test HeartbeatRequest */ diff --git a/unittest/liboblog/test_log_fetcher_impl.cpp b/unittest/obcdc/test_log_fetcher_impl.cpp similarity index 99% rename from unittest/liboblog/test_log_fetcher_impl.cpp rename to unittest/obcdc/test_log_fetcher_impl.cpp index 9445de071..30935050b 100644 --- a/unittest/liboblog/test_log_fetcher_impl.cpp +++ b/unittest/obcdc/test_log_fetcher_impl.cpp @@ -17,7 +17,7 @@ #include "test_log_fetcher_common_utils.h" -#include "liboblog/src/ob_log_fetcher_impl.h" +#include "obcdc/src/ob_log_fetcher_impl.h" using namespace oceanbase; using namespace common; diff --git a/unittest/liboblog/test_log_fetcher_part_stream.cpp b/unittest/obcdc/test_log_fetcher_part_stream.cpp similarity index 99% rename from unittest/liboblog/test_log_fetcher_part_stream.cpp rename to unittest/obcdc/test_log_fetcher_part_stream.cpp index f0e69650a..bb42077ba 100644 --- a/unittest/liboblog/test_log_fetcher_part_stream.cpp +++ b/unittest/obcdc/test_log_fetcher_part_stream.cpp @@ -16,7 +16,7 @@ #include "storage/ob_storage_log_type.h" #include "storage/transaction/ob_trans_log.h" -#include "liboblog/src/ob_log_fetcher_part_stream.h" +#include "obcdc/src/ob_log_fetcher_part_stream.h" #include "test_log_fetcher_common_utils.h" using namespace oceanbase; diff --git a/unittest/liboblog/test_log_fetcher_start_log_id_locator.cpp b/unittest/obcdc/test_log_fetcher_start_log_id_locator.cpp similarity index 99% rename from unittest/liboblog/test_log_fetcher_start_log_id_locator.cpp rename to unittest/obcdc/test_log_fetcher_start_log_id_locator.cpp index 78d14d461..511f5e161 100644 --- a/unittest/liboblog/test_log_fetcher_start_log_id_locator.cpp +++ b/unittest/obcdc/test_log_fetcher_start_log_id_locator.cpp @@ -14,7 +14,7 @@ #include #include "share/ob_define.h" -#include "liboblog/src/ob_log_fetcher_start_log_id_locator.h" +#include "obcdc/src/ob_log_fetcher_start_log_id_locator.h" #include "test_log_fetcher_common_utils.h" diff --git a/unittest/liboblog/test_log_fetcher_stream.cpp b/unittest/obcdc/test_log_fetcher_stream.cpp similarity index 95% rename from unittest/liboblog/test_log_fetcher_stream.cpp rename to unittest/obcdc/test_log_fetcher_stream.cpp index 35d5f05c8..0f7534ff6 100644 --- a/unittest/liboblog/test_log_fetcher_stream.cpp +++ b/unittest/obcdc/test_log_fetcher_stream.cpp @@ -13,7 +13,7 @@ #include #include "share/ob_define.h" -#include "liboblog/src/ob_log_fetcher_stream.h" +#include "obcdc/src/ob_log_fetcher_stream.h" #include "test_log_fetcher_common_utils.h" diff --git a/unittest/liboblog/test_log_fetcher_svr_finder.cpp b/unittest/obcdc/test_log_fetcher_svr_finder.cpp similarity index 99% rename from unittest/liboblog/test_log_fetcher_svr_finder.cpp rename to unittest/obcdc/test_log_fetcher_svr_finder.cpp index e0a2fe4c3..43f9704f9 100644 --- a/unittest/liboblog/test_log_fetcher_svr_finder.cpp +++ b/unittest/obcdc/test_log_fetcher_svr_finder.cpp @@ -16,7 +16,7 @@ #include "share/ob_define.h" #include "lib/container/ob_se_array.h" -#include "liboblog/src/ob_log_fetcher_svr_finder.h" +#include "obcdc/src/ob_log_fetcher_svr_finder.h" #include "test_log_fetcher_common_utils.h" diff --git a/unittest/liboblog/test_log_mysql_connector.cpp b/unittest/obcdc/test_log_mysql_connector.cpp similarity index 99% rename from unittest/liboblog/test_log_mysql_connector.cpp rename to unittest/obcdc/test_log_mysql_connector.cpp index 8ced67241..0fc2f5dab 100644 --- a/unittest/liboblog/test_log_mysql_connector.cpp +++ b/unittest/obcdc/test_log_mysql_connector.cpp @@ -123,7 +123,7 @@ TEST(MySQLConnector, run) ret = conn.destroy(); EXPECT_EQ(OB_SUCCESS, ret); - + } } diff --git a/unittest/liboblog/test_log_part_mgr.cpp b/unittest/obcdc/test_log_part_mgr.cpp similarity index 100% rename from unittest/liboblog/test_log_part_mgr.cpp rename to unittest/obcdc/test_log_part_mgr.cpp diff --git a/unittest/liboblog/test_log_part_mgr_mock.h b/unittest/obcdc/test_log_part_mgr_mock.h similarity index 99% rename from unittest/liboblog/test_log_part_mgr_mock.h rename to unittest/obcdc/test_log_part_mgr_mock.h index d5f8101cd..290a5ec74 100644 --- a/unittest/liboblog/test_log_part_mgr_mock.h +++ b/unittest/obcdc/test_log_part_mgr_mock.h @@ -156,4 +156,3 @@ private: private: DISALLOW_COPY_AND_ASSIGN(MockObLogPartMgr); }; - diff --git a/unittest/liboblog/test_log_sql_server_provider.cpp b/unittest/obcdc/test_log_sql_server_provider.cpp similarity index 99% rename from unittest/liboblog/test_log_sql_server_provider.cpp rename to unittest/obcdc/test_log_sql_server_provider.cpp index 1e893329c..7b82e7070 100644 --- a/unittest/liboblog/test_log_sql_server_provider.cpp +++ b/unittest/obcdc/test_log_sql_server_provider.cpp @@ -196,7 +196,7 @@ TEST_F(TestLogSQLServerProvider, fetch) EXPECT_EQ(1, server_provider_.get_server_count()); EXPECT_EQ(OB_SUCCESS, server_provider_.get_server(0, server)); EXPECT_EQ(rs_leader_.server_.get_ipv4(), server.get_ipv4()); - EXPECT_EQ(rs_leader_.sql_port_, server.get_port()); // Server的端口应该是SQL端口 + EXPECT_EQ(rs_leader_.sql_port_, server.get_port()); // Server SQL port EXPECT_EQ(OB_ENTRY_NOT_EXIST, server_provider_.get_server(1, server)); EXPECT_EQ(OB_INVALID_ARGUMENT, server_provider_.get_server(-1, server)); diff --git a/unittest/liboblog/test_log_svr_blacklist.cpp b/unittest/obcdc/test_log_svr_blacklist.cpp similarity index 98% rename from unittest/liboblog/test_log_svr_blacklist.cpp rename to unittest/obcdc/test_log_svr_blacklist.cpp index f8b5bcc24..f8306749f 100644 --- a/unittest/liboblog/test_log_svr_blacklist.cpp +++ b/unittest/obcdc/test_log_svr_blacklist.cpp @@ -13,7 +13,7 @@ #include #include "share/ob_define.h" #include "lib/oblog/ob_log.h" -#include "liboblog/src/ob_log_svr_blacklist.h" +#include "obcdc/src/ob_log_svr_blacklist.h" using namespace oceanbase; using namespace common; diff --git a/unittest/liboblog/test_log_table_matcher.cpp b/unittest/obcdc/test_log_table_matcher.cpp similarity index 98% rename from unittest/liboblog/test_log_table_matcher.cpp rename to unittest/obcdc/test_log_table_matcher.cpp index 7322c639f..318a60e08 100644 --- a/unittest/liboblog/test_log_table_matcher.cpp +++ b/unittest/obcdc/test_log_table_matcher.cpp @@ -15,7 +15,7 @@ #include "share/ob_define.h" -#include "liboblog/src/ob_log_table_matcher.h" +#include "obcdc/src/ob_log_table_matcher.h" using namespace oceanbase; @@ -200,6 +200,7 @@ TEST(TableMatcher, BasicTest3) err = matcher.tablegroup_match("tt1", "alitg2", matched, flag); EXPECT_TRUE(matched); + err = matcher.tablegroup_match("tt1", "alipaytg", matched, flag); EXPECT_FALSE(matched); err = matcher.tablegroup_match("tt2", "alitg1", matched, flag); diff --git a/unittest/liboblog/test_log_task_pool.cpp b/unittest/obcdc/test_log_task_pool.cpp similarity index 98% rename from unittest/liboblog/test_log_task_pool.cpp rename to unittest/obcdc/test_log_task_pool.cpp index 142bc67af..1c7f1fbaf 100644 --- a/unittest/liboblog/test_log_task_pool.cpp +++ b/unittest/obcdc/test_log_task_pool.cpp @@ -16,7 +16,7 @@ #include "lib/allocator/ob_malloc.h" #include "lib/allocator/ob_concurrent_fifo_allocator.h" -#include "liboblog/src/ob_log_task_pool.h" +#include "obcdc/src/ob_log_task_pool.h" using namespace oceanbase; using namespace common; diff --git a/unittest/liboblog/test_log_trans_ctx.cpp b/unittest/obcdc/test_log_trans_ctx.cpp similarity index 99% rename from unittest/liboblog/test_log_trans_ctx.cpp rename to unittest/obcdc/test_log_trans_ctx.cpp index 84ac0bb19..86b382145 100644 --- a/unittest/liboblog/test_log_trans_ctx.cpp +++ b/unittest/obcdc/test_log_trans_ctx.cpp @@ -320,20 +320,20 @@ TEST_F(TransCtxTest, add_participant_not_served) EXPECT_EQ(OB_SUCCESS, participants.push_back(part_info_1)); part_trans_task_.set_participants(participants); - // 先prepare一次 + // prepare trans_ctx_.set_state(TransCtx::TRANS_CTX_STATE_INVALID); EXPECT_EQ(OB_SUCCESS, trans_ctx_.prepare(part_trans_task_, part_mgr_, stop_flag, need_discard)); EXPECT_FALSE(need_discard); - // 构造一个partition key,不在参与者列表里 + // construct a pkey which not in participants_list PartTransTask part_trans_task_new; part_trans_task_new.set_trans_id(trans_id_); ObPartitionKey partition_key_new; partition_key_new.init(1000000000, 2, 3); part_trans_task_new.set_partition(partition_key_new); - // 当前是prepare状态 但partition不在参与者列表中 + // in prepare state but partition not in participants_list trans_ctx_.set_state(TransCtx::TRANS_CTX_STATE_PREPARED); EXPECT_EQ(OB_SUCCESS, trans_ctx_.add_participant(part_trans_task_new, is_part_trans_served, is_all_participants_ready)); diff --git a/unittest/liboblog/test_log_trans_ctx_mgr.cpp b/unittest/obcdc/test_log_trans_ctx_mgr.cpp similarity index 99% rename from unittest/liboblog/test_log_trans_ctx_mgr.cpp rename to unittest/obcdc/test_log_trans_ctx_mgr.cpp index 6386f1cf3..d22c4a38c 100644 --- a/unittest/liboblog/test_log_trans_ctx_mgr.cpp +++ b/unittest/obcdc/test_log_trans_ctx_mgr.cpp @@ -355,4 +355,3 @@ int main(int argc, char **argv) ::testing::InitGoogleTest(&argc,argv); return RUN_ALL_TESTS(); } - diff --git a/unittest/liboblog/test_log_utils.cpp b/unittest/obcdc/test_log_utils.cpp similarity index 99% rename from unittest/liboblog/test_log_utils.cpp rename to unittest/obcdc/test_log_utils.cpp index 6d1d3745e..39cb6a824 100644 --- a/unittest/liboblog/test_log_utils.cpp +++ b/unittest/obcdc/test_log_utils.cpp @@ -12,7 +12,7 @@ #include #include "share/ob_define.h" -#include "liboblog/src/ob_log_utils.h" +#include "obcdc/src/ob_log_utils.h" using namespace oceanbase; using namespace common; diff --git a/unittest/liboblog/test_ob_concurrent_seq_queue.cpp b/unittest/obcdc/test_ob_concurrent_seq_queue.cpp similarity index 100% rename from unittest/liboblog/test_ob_concurrent_seq_queue.cpp rename to unittest/obcdc/test_ob_concurrent_seq_queue.cpp diff --git a/unittest/liboblog/test_ob_log_adapt_string.cpp b/unittest/obcdc/test_ob_log_adapt_string.cpp similarity index 98% rename from unittest/liboblog/test_ob_log_adapt_string.cpp rename to unittest/obcdc/test_ob_log_adapt_string.cpp index 29baaf9aa..306a51fc5 100644 --- a/unittest/liboblog/test_ob_log_adapt_string.cpp +++ b/unittest/obcdc/test_ob_log_adapt_string.cpp @@ -44,7 +44,7 @@ TEST_F(TestLogAdaptString, smoke_test) test_append_str(str, std_str, ""); test_append_str(str, std_str, "I am me "); - test_append_str(str, std_str, "中华人民共和国 "); + test_append_str(str, std_str, "CHINA "); EXPECT_EQ(OB_SUCCESS, str.append_int64(100)); std_str.append("100"); diff --git a/unittest/liboblog/test_ob_log_all_svr_cache.cpp b/unittest/obcdc/test_ob_log_all_svr_cache.cpp similarity index 99% rename from unittest/liboblog/test_ob_log_all_svr_cache.cpp rename to unittest/obcdc/test_ob_log_all_svr_cache.cpp index 10d661a80..60b337774 100644 --- a/unittest/liboblog/test_ob_log_all_svr_cache.cpp +++ b/unittest/obcdc/test_ob_log_all_svr_cache.cpp @@ -15,8 +15,8 @@ #include #include "share/ob_define.h" #define private public -#include "liboblog/src/ob_log_all_svr_cache.h" -#include "liboblog/src/ob_log_systable_helper.h" +#include "obcdc/src/ob_log_all_svr_cache.h" +#include "obcdc/src/ob_log_systable_helper.h" #include "ob_log_utils.h" #include "test_ob_log_fetcher_common_utils.h" #include "lib/atomic/ob_atomic.h" diff --git a/unittest/liboblog/test_ob_log_dlist.cpp b/unittest/obcdc/test_ob_log_dlist.cpp similarity index 99% rename from unittest/liboblog/test_ob_log_dlist.cpp rename to unittest/obcdc/test_ob_log_dlist.cpp index 2362a6e9e..868c4d7ae 100644 --- a/unittest/liboblog/test_ob_log_dlist.cpp +++ b/unittest/obcdc/test_ob_log_dlist.cpp @@ -15,7 +15,7 @@ #include #include "share/ob_define.h" #define private public -#include "liboblog/src/ob_log_dlist.h" +#include "obcdc/src/ob_log_dlist.h" #include "ob_log_utils.h" using namespace oceanbase; diff --git a/unittest/liboblog/test_ob_log_fetcher_common_utils.h b/unittest/obcdc/test_ob_log_fetcher_common_utils.h similarity index 94% rename from unittest/liboblog/test_ob_log_fetcher_common_utils.h rename to unittest/obcdc/test_ob_log_fetcher_common_utils.h index f9463350a..e14d962b6 100644 --- a/unittest/liboblog/test_ob_log_fetcher_common_utils.h +++ b/unittest/obcdc/test_ob_log_fetcher_common_utils.h @@ -19,7 +19,7 @@ #include "storage/ob_storage_log_type.h" #include "storage/transaction/ob_trans_log.h" -#include "liboblog/src/ob_log_instance.h" +#include "obcdc/src/ob_log_instance.h" #include "ob_log_stream_worker.h" #define private public #include "ob_log_rpc.h" @@ -114,12 +114,12 @@ public: rec.end_log_id_ = log_id + 10000; if (idx < QUERY_CLOG_HISTORY_VALID_COUNT) { // Insert QUERY_CLOG_HISTORY_VALID_COUNT a valid record - snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, + snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", valid_seed % ALL_SERVER_COUNT); valid_seed++; } else { // Insert QUERY_CLOG_HISTORY_INVALID_COUNT an invalid record - snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", invalid_seed); + snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", invalid_seed); invalid_seed++; } rec.svr_port_ = 8888; @@ -154,12 +154,12 @@ public: rec.end_log_id_ = 65536; if (idx < QUERY_CLOG_HISTORY_VALID_COUNT) { // Insert QUERY_CLOG_HISTORY_VALID_COUNT a valid record - snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, + snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", valid_seed % ALL_SERVER_COUNT); valid_seed++; } else { // Insert QUERY_CLOG_HISTORY_INVALID_COUNT an invalid record - snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", invalid_seed); + snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", invalid_seed); invalid_seed++; } rec.svr_port_ = 8888; @@ -190,11 +190,11 @@ public: rec.reset(); if (idx < QUERY_CLOG_HISTORY_VALID_COUNT) { // Returns the same server as query_clog_history - snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, + snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", seed % ALL_SERVER_COUNT); } else { // Return QUERY_META_INFO_ADD_COUNT additional records - snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, + snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", seed % ALL_SERVER_COUNT); } rec.svr_port_ = 8888; @@ -296,7 +296,7 @@ public: rec.reset(); snprintf(rec.svr_ip_, common::MAX_IP_ADDR_LENGTH + 1, "127.0.0.%ld", seed); rec.svr_port_ = 8888; - if (0 == (idx & 0x01)) { + if (0 == (idx & 0x01)) { rec.status_ = share::ObServerStatus::DisplayStatus::OB_SERVER_ACTIVE; } else { rec.status_ = share::ObServerStatus::DisplayStatus::OB_SERVER_INACTIVE; @@ -428,11 +428,11 @@ public: if (OB_SUCCESS == res.get_err()) { ParamArray ¶m_array = req.get_params(); - for (int64_t idx = 0, cnt = param_array.count(); idx < cnt; ++idx) { + for (int64_t idx = 0, cnt = param_array.count(); idx < cnt; ++idx) { Param ¶m = param_array[idx]; - obrpc::ObLogReqStartLogIdByTsResponseWithBreakpoint::Result result; - result.reset(); - result.start_log_id_ = param.pkey_.table_id_; + obrpc::ObLogReqStartLogIdByTsResponseWithBreakpoint::Result result; + result.reset(); + result.start_log_id_ = param.pkey_.table_id_; if (spec_err_) { result.err_ = part_err_; @@ -444,9 +444,9 @@ public: result.err_ = (succeed) ? OB_SUCCESS : ((breakrpc) ? OB_EXT_HANDLE_UNFINISH : OB_NEED_RETRY); } - // Break info is actually not returned. - EXPECT_EQ(OB_SUCCESS, res.append_result(result)); - } + // Break info is actually not returned. + EXPECT_EQ(OB_SUCCESS, res.append_result(result)); + } } return ret; @@ -518,10 +518,10 @@ public: // Save the request parameters for (int64_t idx = 0, cnt = param_array.count(); idx < cnt; ++idx) { const Param ¶m = param_array[idx]; - Param add_param; - add_param.reset(param.pkey_, param.start_tstamp_, param.break_info_); + Param add_param; + add_param.reset(param.pkey_, param.start_tstamp_, param.break_info_); - if (OB_FAIL(request_->append_param(add_param))) { + if (OB_FAIL(request_->append_param(add_param))) { //LOG_ERROR("append param fail", K(ret), K(idx), K(add_param)); } } diff --git a/unittest/liboblog/test_ob_log_heartbeater.cpp b/unittest/obcdc/test_ob_log_heartbeater.cpp similarity index 94% rename from unittest/liboblog/test_ob_log_heartbeater.cpp rename to unittest/obcdc/test_ob_log_heartbeater.cpp index e15d71851..9a2b92a99 100644 --- a/unittest/liboblog/test_ob_log_heartbeater.cpp +++ b/unittest/obcdc/test_ob_log_heartbeater.cpp @@ -156,30 +156,30 @@ public: res.set_err(OB_ERR_UNEXPECTED); } else { res.set_err(OB_SUCCESS); - for (int64_t idx = 0, cnt = req.get_params().count(); OB_SUCCESS == ret && idx < cnt; ++idx) { - // 30%. + for (int64_t idx = 0, cnt = req.get_params().count(); OB_SUCCESS == ret && idx < cnt; ++idx) { + // 30%. seed = get_timestamp(); rand = (idx + seed) % 100; - bool succeed = (rand < 30); - bool not_master = (30 <= rand) && (rand < 60); - bool partition_not_exist = (60 <= rand) && (rand < 90); + bool succeed = (rand < 30); + bool not_master = (30 <= rand) && (rand < 60); + bool partition_not_exist = (60 <= rand) && (rand < 90); - const obrpc::ObLogLeaderHeartbeatReq::Param ¶m = req.get_params().at(idx); - obrpc::ObLogLeaderHeartbeatResp::Result result; - result.reset(); + const obrpc::ObLogLeaderHeartbeatReq::Param ¶m = req.get_params().at(idx); + obrpc::ObLogLeaderHeartbeatResp::Result result; + result.reset(); if (succeed) { - result.err_ = OB_SUCCESS; + result.err_ = OB_SUCCESS; } else if (not_master) { - result.err_ = OB_NOT_MASTER; + result.err_ = OB_NOT_MASTER; } else if (partition_not_exist) { - result.err_ = OB_PARTITION_NOT_EXIST; + result.err_ = OB_PARTITION_NOT_EXIST; } else { - result.err_ = OB_ERR_UNEXPECTED; + result.err_ = OB_ERR_UNEXPECTED; } result.next_served_log_id_ = (succeed || not_master) ? param.next_log_id_ : OB_INVALID_ID; result.next_served_ts_ = (succeed || not_master) ? FIXED_TIMESTAMP : OB_INVALID_TIMESTAMP; - EXPECT_EQ(OB_SUCCESS, res.append_result(result)); + EXPECT_EQ(OB_SUCCESS, res.append_result(result)); // Verify that the partitions correspond to the same request server common::ObAddr cur_svr; @@ -244,7 +244,7 @@ public: }; void generate_req(const int64_t all_svr_cnt, - const int64_t req_cnt, + const int64_t req_cnt, HeartbeatRequest *&request_array, common::ObLinearHashMap &map) { @@ -256,11 +256,11 @@ void generate_req(const int64_t all_svr_cnt, request_array = new HeartbeatRequest[req_cnt]; for (int64_t idx = 0, cnt = req_cnt; idx < cnt; ++idx) { - HeartbeatRequest &r = request_array[idx]; - r.reset(); + HeartbeatRequest &r = request_array[idx]; + r.reset(); // set pkey, next_log_id, svr // next_log_id = pkey.table_id + 1 - r.reset(ObPartitionKey((uint64_t)(1000 + idx), 0, 1), 1000 + idx + 1, svrs[idx % all_svr_cnt]); + r.reset(ObPartitionKey((uint64_t)(1000 + idx), 0, 1), 1000 + idx + 1, svrs[idx % all_svr_cnt]); int ret = OB_SUCCESS; if (OB_FAIL(map.insert(r.pkey_, svrs[idx % all_svr_cnt]))) { diff --git a/unittest/liboblog/test_ob_log_part_fetch_mgr.cpp b/unittest/obcdc/test_ob_log_part_fetch_mgr.cpp similarity index 100% rename from unittest/liboblog/test_ob_log_part_fetch_mgr.cpp rename to unittest/obcdc/test_ob_log_part_fetch_mgr.cpp diff --git a/unittest/liboblog/test_ob_log_part_svr_list.cpp b/unittest/obcdc/test_ob_log_part_svr_list.cpp similarity index 99% rename from unittest/liboblog/test_ob_log_part_svr_list.cpp rename to unittest/obcdc/test_ob_log_part_svr_list.cpp index 7432f7266..147bc53df 100644 --- a/unittest/liboblog/test_ob_log_part_svr_list.cpp +++ b/unittest/obcdc/test_ob_log_part_svr_list.cpp @@ -18,7 +18,7 @@ #include "lib/allocator/page_arena.h" #include "ob_log_utils.h" #define private public -#include "liboblog/src/ob_log_part_svr_list.h" +#include "obcdc/src/ob_log_part_svr_list.h" #include "ob_log_start_log_id_locator.h" // StartLogIdLocateReq @@ -38,7 +38,7 @@ public : public: typedef PartSvrList::SvrItem SvrItem; typedef PartSvrList::LogIdRange LogIdRange; - // 验证svr_item字段的正确性 + // verify correctness for svr_item filed void is_svr_item_correct(PartSvrList &svr_list, const int64_t svr_item_index, common::ObAddr &expect_svr, @@ -66,7 +66,7 @@ void TestObLogPartSvrList::TearDown() void TestObLogPartSvrList::is_svr_item_correct(PartSvrList &svr_list, const int64_t svr_item_index, - common::ObAddr &expect_svr, + common::ObAddr &expect_svr, const int64_t expect_range_num, LogIdRange *expect_log_ranges) { @@ -87,7 +87,7 @@ void TestObLogPartSvrList::is_svr_item_correct(PartSvrList &svr_list, // The main test is the insert_range_ function, which calls find_pos_and_merge to find the position, but no log range merge has occurred TEST_F(TestObLogPartSvrList, add_server_test1) { - // 声明 + // declear const int64_t svr_idx = 0; common::ObAddr expect_svr = servers[svr_idx]; int64_t expect_range_num = 0; @@ -292,7 +292,7 @@ TEST_F(TestObLogPartSvrList, next_server) svr.reset(); EXPECT_EQ(OB_SUCCESS, svr_list.next_server(next_log_id, black_list, svr)); - // 请求650 + // request log_id 650 next_log_id = 650; EXPECT_EQ(OB_SUCCESS, svr_list.next_server(next_log_id, black_list, svr)); svr_idx = 0; diff --git a/unittest/liboblog/test_ob_log_part_trans_resolver.cpp b/unittest/obcdc/test_ob_log_part_trans_resolver.cpp similarity index 99% rename from unittest/liboblog/test_ob_log_part_trans_resolver.cpp rename to unittest/obcdc/test_ob_log_part_trans_resolver.cpp index bf7aec8b9..1857edc50 100644 --- a/unittest/liboblog/test_ob_log_part_trans_resolver.cpp +++ b/unittest/obcdc/test_ob_log_part_trans_resolver.cpp @@ -20,7 +20,7 @@ #include "ob_log_fetch_stat_info.h" #define private public -#include "liboblog/src/ob_log_part_trans_resolver.h" +#include "obcdc/src/ob_log_part_trans_resolver.h" #include "test_trans_log_generator.h" #include "test_sp_trans_log_generator.h" @@ -608,7 +608,7 @@ TEST(PartTransResolver, BasicTest4) * For N Sp transactions, half of them commit, half of them abort * Each Sp transaction has a random redo log * - * log seq:redo, redo, ... redo, commit/abort + * log seq: redo, redo, ... redo, commit/abort * * // redo info * redo_log_cnt @@ -722,7 +722,7 @@ TEST(PartTransResolver, BasicTest5) * For N Sp transactions, redo and commit in the same log entry * Each Sp transaction has a random redo log * - * log seq:redo, redo, ... redo, redo-commit + * log seq: redo, redo, ... redo, redo-commit * */ TEST(PartTransResolver, BasicTest6) @@ -904,7 +904,7 @@ TEST(PartTransResolver, BasicTest7) EXPECT_EQ(OB_SUCCESS, err); } - // read commit log,发现miss redo log, + // read commit log. found miss redo log, if (is_normal_trans) { EXPECT_EQ(OB_SUCCESS, log_gen.next_log_entry_missing_redo(SP_NORMAL_TRAN, log_entry)); } else if (is_redo_with_commit_trans) { diff --git a/unittest/liboblog/test_ob_log_part_trans_resolver_new.cpp b/unittest/obcdc/test_ob_log_part_trans_resolver_new.cpp similarity index 99% rename from unittest/liboblog/test_ob_log_part_trans_resolver_new.cpp rename to unittest/obcdc/test_ob_log_part_trans_resolver_new.cpp index 9cf5ee80b..194f14fd4 100644 --- a/unittest/liboblog/test_ob_log_part_trans_resolver_new.cpp +++ b/unittest/obcdc/test_ob_log_part_trans_resolver_new.cpp @@ -20,7 +20,7 @@ #include "ob_log_fetch_stat_info.h" #define private public -#include "liboblog/src/ob_log_part_trans_resolver.h" +#include "obcdc/src/ob_log_part_trans_resolver.h" using namespace oceanbase; using namespace common; diff --git a/unittest/liboblog/test_ob_log_start_log_id_locator.cpp b/unittest/obcdc/test_ob_log_start_log_id_locator.cpp similarity index 97% rename from unittest/liboblog/test_ob_log_start_log_id_locator.cpp rename to unittest/obcdc/test_ob_log_start_log_id_locator.cpp index cdf7743f1..ec5e817cb 100644 --- a/unittest/liboblog/test_ob_log_start_log_id_locator.cpp +++ b/unittest/obcdc/test_ob_log_start_log_id_locator.cpp @@ -57,13 +57,13 @@ void generate_req(const int64_t req_cnt, StartLogIdLocateReq *&request_array, request_array = new StartLogIdLocateReq[req_cnt]; for (int64_t idx = 0, cnt = req_cnt; idx < cnt; ++idx) { - StartLogIdLocateReq &r = request_array[idx]; - r.reset(); - r.pkey_ = ObPartitionKey((uint64_t)(1000 + idx), 0, 1); - r.start_tstamp_ = start_tstamp; - // Set server list. - for (int64_t idx2 = 0, cnt2 = AllSvrCnt; idx2 < cnt2; ++idx2) { - StartLogIdLocateReq::SvrItem item; + StartLogIdLocateReq &r = request_array[idx]; + r.reset(); + r.pkey_ = ObPartitionKey((uint64_t)(1000 + idx), 0, 1); + r.start_tstamp_ = start_tstamp; + // Set server list. + for (int64_t idx2 = 0, cnt2 = AllSvrCnt; idx2 < cnt2; ++idx2) { + StartLogIdLocateReq::SvrItem item; item.reset(); item.svr_ = svrs[idx2]; r.svr_list_.push_back(item); diff --git a/unittest/liboblog/test_ob_log_svr_finder.cpp b/unittest/obcdc/test_ob_log_svr_finder.cpp similarity index 96% rename from unittest/liboblog/test_ob_log_svr_finder.cpp rename to unittest/obcdc/test_ob_log_svr_finder.cpp index 73d093f9f..b1940ae1b 100644 --- a/unittest/liboblog/test_ob_log_svr_finder.cpp +++ b/unittest/obcdc/test_ob_log_svr_finder.cpp @@ -54,7 +54,7 @@ void generate_part_svr_list(const int64_t count, PartSvrList *&part_svr_list) // 2. timestamp request void generate_svr_finder_requset(const int64_t count, PartSvrList *part_svr_list, - SvrFindReq *&svr_req_array) + SvrFindReq *&svr_req_array) { svr_req_array = static_cast( ob_malloc(sizeof(SvrFindReq) * count)); @@ -64,10 +64,10 @@ void generate_svr_finder_requset(const int64_t count, const int64_t seed = get_timestamp(); if ((seed % 100) < 50) { - svr_req_array[idx].reset_for_req_by_log_id(part_svr_list[idx], pkey, idx); + svr_req_array[idx].reset_for_req_by_log_id(part_svr_list[idx], pkey, idx); EXPECT_TRUE(svr_req_array[idx].is_state_idle()); } else { - svr_req_array[idx].reset_for_req_by_tstamp(part_svr_list[idx], pkey, seed); + svr_req_array[idx].reset_for_req_by_tstamp(part_svr_list[idx], pkey, seed); EXPECT_TRUE(svr_req_array[idx].is_state_idle()); } } @@ -96,7 +96,7 @@ void wait_svr_finer_req_end(SvrFindReq *svr_req_array, while (((get_timestamp() - start_test_tstamp) < TEST_TIME_LIMIT) && (end_request_cnt < count)) { for (int64_t idx = 0, cnt = count; idx < cnt; ++idx) { - SvrFindReq &r = svr_req_array[idx]; + SvrFindReq &r = svr_req_array[idx]; if (SvrFindReq::DONE == r.get_state()) { end_request_cnt += 1; r.set_state_idle(); @@ -115,7 +115,7 @@ void wait_leader_finer_req_end(LeaderFindReq *leader_req_array, while (((get_timestamp() - start_test_tstamp) < TEST_TIME_LIMIT) && (end_request_cnt < count)) { for (int64_t idx = 0, cnt = count; idx < cnt; ++idx) { - LeaderFindReq &r = leader_req_array[idx]; + LeaderFindReq &r = leader_req_array[idx]; if (LeaderFindReq::DONE == r.get_state()) { end_request_cnt += 1; r.set_state_idle(); diff --git a/unittest/liboblog/test_ob_log_timer.cpp b/unittest/obcdc/test_ob_log_timer.cpp similarity index 97% rename from unittest/liboblog/test_ob_log_timer.cpp rename to unittest/obcdc/test_ob_log_timer.cpp index 82a293b4f..0945dfda0 100644 --- a/unittest/liboblog/test_ob_log_timer.cpp +++ b/unittest/obcdc/test_ob_log_timer.cpp @@ -14,11 +14,11 @@ #include #include "share/ob_define.h" -#include "liboblog/src/ob_map_queue_thread.h" +#include "obcdc/src/ob_map_queue_thread.h" #include "ob_log_utils.h" #define private public #include "test_ob_log_fetcher_common_utils.h" -#include "liboblog/src/ob_log_timer.h" +#include "obcdc/src/ob_log_timer.h" using namespace oceanbase; using namespace common; @@ -83,7 +83,7 @@ public : static constexpr const int64_t TEST_TIME_LIMIT = 10 * _MIN_; // ObMapQueue mod_id static constexpr const char *MOD_ID = "1"; - // ObMapQueueThread线程个数 + // thread num of ObMapQueueThread static const int THREAD_NUM = 6; // max task count static const int64_t MAX_TASK_COUNT = 10 * 1000; @@ -93,7 +93,7 @@ public: }; void TestObLogTimer::generate_data(const int64_t count, - QueueThread *host, + QueueThread *host, int64_t *&process_count, Type *&datas) { diff --git a/unittest/liboblog/test_ob_map_queue.cpp b/unittest/obcdc/test_ob_map_queue.cpp similarity index 99% rename from unittest/liboblog/test_ob_map_queue.cpp rename to unittest/obcdc/test_ob_map_queue.cpp index dd5103cc9..a6f3afb25 100644 --- a/unittest/liboblog/test_ob_map_queue.cpp +++ b/unittest/obcdc/test_ob_map_queue.cpp @@ -14,7 +14,7 @@ #include #include "share/ob_define.h" -#include "liboblog/src/ob_map_queue.h" +#include "obcdc/src/ob_map_queue.h" #include "ob_log_utils.h" using namespace oceanbase; @@ -55,7 +55,7 @@ class TestPushWorker : public liboblog::Runnable public: enum State { - IDLE, // + IDLE, // REQ, // pushing DONE // push DONE }; @@ -104,7 +104,7 @@ public: int64_t pop_count_ CACHE_ALIGNED; // record poped count for all threads int64_t *end_pop_count_ CACHE_ALIGNED; - // 保存pop出来的数据 + // save data poped out Type *array_; virtual int routine() @@ -123,7 +123,7 @@ public: } if (OB_EAGAIN == ret) { - ret = OB_SUCCESS; + ret = OB_SUCCESS; } if (ATOMIC_LOAD(end_pop_count_) == VALUE_COUNT) { break; diff --git a/unittest/liboblog/test_ob_map_queue_thread.cpp b/unittest/obcdc/test_ob_map_queue_thread.cpp similarity index 97% rename from unittest/liboblog/test_ob_map_queue_thread.cpp rename to unittest/obcdc/test_ob_map_queue_thread.cpp index 08d210466..79254cdfb 100644 --- a/unittest/liboblog/test_ob_map_queue_thread.cpp +++ b/unittest/obcdc/test_ob_map_queue_thread.cpp @@ -15,7 +15,7 @@ #include #include #include "share/ob_define.h" -#include "liboblog/src/ob_map_queue_thread.h" +#include "obcdc/src/ob_map_queue_thread.h" #include "ob_log_utils.h" using namespace oceanbase; @@ -89,7 +89,7 @@ class DerivedQueueThread1 : public QueueThread { public: DerivedQueueThread1(vector > &handle_result) : end_handle_count_(0), - handle_result_(handle_result), + handle_result_(handle_result), inited_(false) {} virtual ~DerivedQueueThread1() { destroy(); } public: @@ -113,7 +113,7 @@ class DerivedQueueThread2 : public QueueThread { public: DerivedQueueThread2(vector > &handle_result) : end_handle_count_(0), - handle_result_(handle_result), + handle_result_(handle_result), inited_(false) {} virtual ~DerivedQueueThread2() { destroy(); } public: @@ -124,7 +124,7 @@ public: // Record the number of data that has been processed by the thread int64_t end_handle_count_ CACHE_ALIGNED; public: - // 实Overload run, test the correctness of ObMapQueueThread execution + // Overload run, test the correctness of ObMapQueueThread execution virtual void run(const int64_t thread_index); private: static const int64_t IDLE_WAIT_TIME = 10 * 1000; @@ -161,7 +161,7 @@ void DerivedQueueThread1::destroy() EXPECT_TRUE(QueueThread::is_stoped()); inited_ = false; - LOG_INFO("DerivedQueueThread1 destory"); + LOG_INFO("DerivedQueueThread1 destory"); } } @@ -237,7 +237,7 @@ void DerivedQueueThread2::destroy() EXPECT_TRUE(QueueThread::is_stoped()); inited_ = false; - LOG_INFO("DerivedQueueThread2 destory"); + LOG_INFO("DerivedQueueThread2 destory"); } } diff --git a/unittest/liboblog/test_ob_seq_thread.cpp b/unittest/obcdc/test_ob_seq_thread.cpp similarity index 100% rename from unittest/liboblog/test_ob_seq_thread.cpp rename to unittest/obcdc/test_ob_seq_thread.cpp diff --git a/unittest/liboblog/test_small_arena.cpp b/unittest/obcdc/test_small_arena.cpp similarity index 100% rename from unittest/liboblog/test_small_arena.cpp rename to unittest/obcdc/test_small_arena.cpp diff --git a/unittest/liboblog/test_sp_trans_log_generator.h b/unittest/obcdc/test_sp_trans_log_generator.h similarity index 97% rename from unittest/liboblog/test_sp_trans_log_generator.h rename to unittest/obcdc/test_sp_trans_log_generator.h index ea66f461a..719a31f0e 100644 --- a/unittest/liboblog/test_sp_trans_log_generator.h +++ b/unittest/obcdc/test_sp_trans_log_generator.h @@ -18,8 +18,8 @@ #include "storage/ob_storage_log_type.h" #include "storage/transaction/ob_trans_log.h" -#include "liboblog/src/ob_log_instance.h" -#include "liboblog/src/ob_log_utils.h" // get_timestamp +#include "obcdc/src/ob_log_instance.h" +#include "obcdc/src/ob_log_utils.h" // get_timestamp using namespace oceanbase; using namespace common; @@ -186,7 +186,7 @@ public: // Call next_log_entry to get the number of redo entries in order by specifying the number of redo entries void next_trans(const int64_t redo_cnt, bool is_commit) { - // 正常事务日志总条数=redo log count + 1(commit/abort log) + // total log count of normal trans = redo_log_count + 1(commit/abort log) remain_log_cnt_ = redo_cnt + 1; is_commit_ = is_commit; redos_.reset(); @@ -348,8 +348,8 @@ protected: data_len_ = pos; // Gen entry header. ObLogEntryHeader header; - // 日志submit timestamp采用SP_PREPARE_TIMESTAMP, 因为对于sp事务,分区任务存储的prepare时间戳 - // commit日志的时间戳,用于正确性验证 + // submit timestamp use SP_PREPARE_TIMESTAMP, because for sp_trans, prepare ts is stored in PartTransTask + // commit log ts is used for check correctness. header.generate_header(OB_LOG_SUBMIT, pkey_, commit_log_id, buf_, data_len_, get_timestamp(), get_timestamp(), ObProposalID(), SP_PREPARE_TIMESTAMP, ObVersion(0)); @@ -380,7 +380,7 @@ protected: /* * test missing redo log, When the commit log is read, the missing redo can be detected * - * two case: + * two case: * 1. redo, redo, redo...redo, commit * 2. redo, redo, redo...redo, redo-commit */ diff --git a/unittest/liboblog/test_trans_log_generator.h b/unittest/obcdc/test_trans_log_generator.h similarity index 98% rename from unittest/liboblog/test_trans_log_generator.h rename to unittest/obcdc/test_trans_log_generator.h index e0b5f41cb..79faad1da 100644 --- a/unittest/liboblog/test_trans_log_generator.h +++ b/unittest/obcdc/test_trans_log_generator.h @@ -18,11 +18,11 @@ #include "storage/ob_storage_log_type.h" #include "storage/transaction/ob_trans_log.h" -#include "liboblog/src/ob_log_instance.h" -#include "liboblog/src/ob_log_parser.h" +#include "obcdc/src/ob_log_instance.h" +#include "obcdc/src/ob_log_parser.h" #include "ob_log_utils.h" // get_timestamp -#include "liboblog/src/ob_map_queue.h" +#include "obcdc/src/ob_map_queue.h" #include "lib/oblog/ob_log_module.h" using namespace oceanbase; @@ -207,7 +207,7 @@ public: // Specify the number of redo entries and call next_log_entry to get them in order void next_trans(const int64_t redo_cnt, bool is_commit) { - // 正常事务日志总条数=redo log count + 2(prepare log + commit/abort log) + // total log count of normal trans = redo log count + 2(prepare log + commit/abort log) remain_log_cnt_ = redo_cnt + 2; is_commit_ = is_commit; redos_.reset(); @@ -221,12 +221,12 @@ public: void next_trans_with_redo_prepare(const int64_t redo_cnt, bool is_commit) { next_trans(redo_cnt, is_commit); - // redo-prepare在同一个log entrey, remain_log_cnt_重新赋值 + // redo and prepare in the same log_entry remain_log_cnt_ = redo_cnt + 1; } // Get next log entry. - // normal trans: 依次获取redo, redo...prepare, commit/abort + // normal trans: get redo, redo...prepare, commit/abort by sequence int next_log_entry(clog::ObLogEntry &log_entry) { int ret = OB_SUCCESS; @@ -434,7 +434,7 @@ const ObAddr TransLogEntryGeneratorBase::SCHEDULER = ObAddr(ObAddr::IPV4, "127.0 /* * test missing redo log, When the prepare log is read, the missing redo can be detected * - * two case: + * two case: * 1. redo, redo, redo...prepare, commit/abort * 2. redo, redo, redo...redo-prepare, commit/abort */