fix update store_col_cnt when upgrade

This commit is contained in:
yangqise7en
2023-08-28 11:14:43 +00:00
committed by ob-robot
parent 1631ea8bf9
commit 89d21d42bc
6 changed files with 15 additions and 10 deletions

View File

@ -389,8 +389,8 @@ int ObTabletMediumCompactionInfoRecorder::submit_log(
LOG_ERROR("failed to dec ref on memtable", K(tmp_ret), K_(ls_id), K_(tablet_id)); LOG_ERROR("failed to dec ref on memtable", K(tmp_ret), K_(ls_id), K_(tablet_id));
} }
} else { } else {
LOG_INFO("success to submit medium log", K(ret), K_(tablet_id), K(medium_info_), K_(clog_scn), LOG_INFO("success to submit medium log", K(ret), K_(ls_id), K_(tablet_id), K(medium_info_),
"max_saved_version", get_max_saved_version()); K_(clog_scn), "max_saved_version", get_max_saved_version());
} }
return ret; return ret;

View File

@ -1109,9 +1109,7 @@ int ObTabletMergeCtx::get_storage_schema_to_merge(const ObTablesHandleArray &mer
storage_schema = nullptr; storage_schema = nullptr;
} else { } else {
// only update column cnt by memtable, use schema version on tablet_schema // only update column cnt by memtable, use schema version on tablet_schema
storage_schema->column_cnt_ = MAX(storage_schema->column_cnt_, max_column_cnt_on_recorder); storage_schema->update_column_cnt(MAX(max_column_cnt_on_recorder, max_column_cnt_in_memtable));
storage_schema->column_cnt_ = MAX(storage_schema->column_cnt_, max_column_cnt_in_memtable);
storage_schema->store_column_cnt_ = MAX(column_cnt_in_schema, max_column_cnt_in_memtable);
storage_schema->schema_version_ = MAX(max_schema_version_in_memtable, schema_on_tablet->get_schema_version()); storage_schema->schema_version_ = MAX(max_schema_version_in_memtable, schema_on_tablet->get_schema_version());
schema_ctx_.storage_schema_ = storage_schema; schema_ctx_.storage_schema_ = storage_schema;
use_schema_on_tablet = false; use_schema_on_tablet = false;

View File

@ -993,5 +993,11 @@ void ObStorageSchema::reset_string(ObString &str)
str.reset(); str.reset();
} }
void ObStorageSchema::update_column_cnt(const int64_t input_col_cnt)
{
column_cnt_ = MAX(column_cnt_, input_col_cnt);
store_column_cnt_ = MAX(store_column_cnt_, input_col_cnt);
}
} // namespace storage } // namespace storage
} // namespace oceanbase } // namespace oceanbase

View File

@ -132,6 +132,7 @@ public:
const int64_t data_len, const int64_t data_len,
int64_t &pos); int64_t &pos);
int64_t get_serialize_size() const; int64_t get_serialize_size() const;
void update_column_cnt(const int64_t input_col_cnt);
// for new mds // for new mds
int assign(common::ObIAllocator &allocator, const ObStorageSchema &other); int assign(common::ObIAllocator &allocator, const ObStorageSchema &other);

View File

@ -151,17 +151,18 @@ int ObStorageSchemaRecorder::inner_replay_clog(
if (OB_OBSOLETE_CLOG_NEED_SKIP == ret) { if (OB_OBSOLETE_CLOG_NEED_SKIP == ret) {
ret = OB_SUCCESS; ret = OB_SUCCESS;
} else { } else {
LOG_WARN("failed to get tablet handle", K(ret), K_(tablet_id), K(scn)); LOG_WARN("failed to get tablet handle", K(ret), K_(ls_id), K_(tablet_id), K(scn));
} }
} else if (OB_FAIL(replay_storage_schema.deserialize(tmp_allocator, buf, size, pos))) { } else if (OB_FAIL(replay_storage_schema.deserialize(tmp_allocator, buf, size, pos))) {
LOG_WARN("fail to deserialize table schema", K(ret), K_(tablet_id)); LOG_WARN("fail to deserialize table schema", K(ret), K_(ls_id), K_(tablet_id));
} else if (OB_FAIL(replay_storage_schema.get_store_column_count(stored_col_cnt, true/*full_col*/))) { } else if (OB_FAIL(replay_storage_schema.get_store_column_count(stored_col_cnt, true/*full_col*/))) {
LOG_WARN("failed to get store column count from replay schema", KR(ret),K(replay_storage_schema)); LOG_WARN("failed to get store column count from replay schema", KR(ret),K(replay_storage_schema));
} else { } else {
// replay schema clog and update to ObStorageSchemaRecorder // replay schema clog and update to ObStorageSchemaRecorder
// need get column_cnt on schema_recorder to mini merge // need get column_cnt on schema_recorder to mini merge
max_column_cnt_ = MAX(max_column_cnt_, stored_col_cnt); max_column_cnt_ = MAX(max_column_cnt_, stored_col_cnt);
FLOG_INFO("success to replay schema clog", K(ret), K(replay_storage_schema), K(stored_col_cnt), K(max_column_cnt_)); FLOG_INFO("success to replay schema clog", K(ret), K_(ls_id), K_(tablet_id), K(replay_storage_schema),
K(stored_col_cnt), K(max_column_cnt_));
} }
replay_storage_schema.reset(); replay_storage_schema.reset();
tmp_tablet_handle.reset(); tmp_tablet_handle.reset();

View File

@ -4657,8 +4657,7 @@ int ObTablet::get_storage_schema_for_transfer_in(
} else { } else {
int64_t old_column_cnt = storage_schema.get_column_count(); int64_t old_column_cnt = storage_schema.get_column_count();
int64_t old_schema_version = storage_schema.get_schema_version(); int64_t old_schema_version = storage_schema.get_schema_version();
storage_schema.column_cnt_ = MAX(old_column_cnt, max_column_cnt_in_memtable); storage_schema.update_column_cnt(max_column_cnt_in_memtable);
storage_schema.store_column_cnt_ = MAX(store_column_cnt_in_schema, max_column_cnt_in_memtable);
storage_schema.schema_version_ = MAX(old_schema_version, max_schema_version_in_memtable); storage_schema.schema_version_ = MAX(old_schema_version, max_schema_version_in_memtable);
LOG_INFO("succeeded to get storage schema from transfer source tablet", K(ret), K(storage_schema), K(max_column_cnt_in_memtable), LOG_INFO("succeeded to get storage schema from transfer source tablet", K(ret), K(storage_schema), K(max_column_cnt_in_memtable),
K(max_schema_version_in_memtable), K(old_column_cnt), K(store_column_cnt_in_schema), K(old_schema_version)); K(max_schema_version_in_memtable), K(old_column_cnt), K(store_column_cnt_in_schema), K(old_schema_version));