diff --git a/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.cpp b/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.cpp index 3f8af5d1d1..00c76f6da8 100755 --- a/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.cpp +++ b/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.cpp @@ -234,7 +234,7 @@ ObTenantCheckpointSlogHandler::ObTenantCheckpointSlogHandler() finished_replay_tablet_cnt_(0), replay_create_tablet_errcode_(OB_SUCCESS), lock_(common::ObLatchIds::SLOG_CKPT_LOCK), - mutex_(), + slog_check_lock_(common::ObLatchIds::SLOG_CKPT_LOCK), tablet_key_set_(), is_copying_tablets_(false), ckpt_cursor_(), @@ -587,7 +587,7 @@ int ObTenantCheckpointSlogHandler::read_from_share_blk( int ret = OB_SUCCESS; ObSharedBlockReadHandle read_handle; ObSharedBlockReadInfo read_info; - read_info.io_desc_.set_wait_event(ObWaitEventIds::SLOG_CKPT_LOCK_WAIT); + read_info.io_desc_.set_wait_event(ObWaitEventIds::DB_FILE_DATA_READ); read_info.addr_ = addr; if (OB_FAIL(shared_block_rwriter_.async_read(read_info, read_handle))) { LOG_WARN("fail to read tablet from macro block", K(ret), K(read_info)); @@ -852,7 +852,7 @@ int ObTenantCheckpointSlogHandler::report_slog( int64_t file_id; int64_t offset; int64_t size; - lib::ObMutexGuard guard(mutex_); + TCRLockGuard guard(slog_check_lock_); if (is_copying_tablets_) { if (OB_UNLIKELY(!ckpt_cursor_.is_valid())) { LOG_WARN("checkpoint cursor is invalid", K(ret), K(ckpt_cursor_)); @@ -880,7 +880,6 @@ int ObTenantCheckpointSlogHandler::check_slog(const ObTabletMapKey &tablet_key, ret = OB_INVALID_ARGUMENT; LOG_WARN("tablet key is invalid", K(ret), K(tablet_key)); } else { - lib::ObMutexGuard guard(mutex_); int tmp_ret = tablet_key_set_.exist_refactored(tablet_key); if (OB_HASH_EXIST == tmp_ret) { has_slog = true; @@ -996,7 +995,7 @@ int ObTenantCheckpointSlogHandler::write_checkpoint(bool is_force) int ObTenantCheckpointSlogHandler::get_cur_cursor() { int ret = OB_SUCCESS; - lib::ObMutexGuard guard(mutex_); + TCWLockGuard guard(slog_check_lock_); tablet_key_set_.destroy(); if (OB_FAIL(MTL(ObStorageLogger *)->get_active_cursor(ckpt_cursor_))) { LOG_WARN("fail to get current cursor", K(ret)); @@ -1010,7 +1009,7 @@ int ObTenantCheckpointSlogHandler::get_cur_cursor() void ObTenantCheckpointSlogHandler::clean_copy_status() { - lib::ObMutexGuard guard(mutex_); + TCWLockGuard guard(slog_check_lock_); is_copying_tablets_ = false; tablet_key_set_.destroy(); } diff --git a/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.h b/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.h index 7d0a0f905f..3d7333ed1f 100644 --- a/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.h +++ b/src/storage/slog_ckpt/ob_tenant_checkpoint_slog_handler.h @@ -225,7 +225,7 @@ private: int64_t finished_replay_tablet_cnt_; int replay_create_tablet_errcode_; common::TCRWLock lock_; // protect block_handle - lib::ObMutex mutex_; + common::TCRWLock slog_check_lock_; // protect is_copying_tablets_ common::hash::ObHashSet tablet_key_set_; bool is_copying_tablets_; ObLogCursor ckpt_cursor_; diff --git a/src/storage/slog_ckpt/ob_tenant_storage_checkpoint_writer.cpp b/src/storage/slog_ckpt/ob_tenant_storage_checkpoint_writer.cpp index 434c7a64a9..514cdb8019 100755 --- a/src/storage/slog_ckpt/ob_tenant_storage_checkpoint_writer.cpp +++ b/src/storage/slog_ckpt/ob_tenant_storage_checkpoint_writer.cpp @@ -421,7 +421,7 @@ int ObTenantStorageCheckpointWriter::do_rollback( char *buf = nullptr; int64_t pos = 0; read_info.addr_ = load_addr; - read_info.io_desc_.set_wait_event(ObWaitEventIds::SLOG_CKPT_LOCK_WAIT); + read_info.io_desc_.set_wait_event(ObWaitEventIds::DB_FILE_DATA_READ); if (OB_FAIL(ObSharedBlockReaderWriter::async_read(read_info, block_handle))) { LOG_WARN("fail to read tablet buf from macro block", K(ret), K(read_info)); @@ -451,7 +451,7 @@ int ObTenantStorageCheckpointWriter::get_tablet_with_addr( char *buf = nullptr; int64_t pos = 0; read_info.addr_ = addr_info.new_addr_; - read_info.io_desc_.set_wait_event(ObWaitEventIds::SLOG_CKPT_LOCK_WAIT); + read_info.io_desc_.set_wait_event(ObWaitEventIds::DB_FILE_DATA_READ); do { ObArenaAllocator allocator("SlogCkptWriter");