[bug fix]hold first_sstable when create ddl sstable
This commit is contained in:
@ -520,11 +520,11 @@ int ObTabletDDLUtil::prepare_index_data_desc(ObTablet &tablet,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ObTabletDDLUtil::try_get_first_ddl_sstable(ObTablet &tablet,
|
int ObTabletDDLUtil::try_get_first_ddl_sstable(ObTablet &tablet,
|
||||||
|
ObTableStoreIterator &ddl_table_iter,
|
||||||
blocksstable::ObSSTable *&first_sstable)
|
blocksstable::ObSSTable *&first_sstable)
|
||||||
{
|
{
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
first_sstable = nullptr;
|
first_sstable = nullptr;
|
||||||
ObTableStoreIterator ddl_table_iter;
|
|
||||||
|
|
||||||
ObITable *first_ddl_sstable = nullptr;
|
ObITable *first_ddl_sstable = nullptr;
|
||||||
if (OB_FAIL(tablet.get_ddl_sstables(ddl_table_iter))) {
|
if (OB_FAIL(tablet.get_ddl_sstables(ddl_table_iter))) {
|
||||||
|
|||||||
@ -150,6 +150,7 @@ public:
|
|||||||
const blocksstable::ObSSTable *first_ddl_sstable,
|
const blocksstable::ObSSTable *first_ddl_sstable,
|
||||||
blocksstable::ObWholeDataStoreDesc &data_desc);
|
blocksstable::ObWholeDataStoreDesc &data_desc);
|
||||||
static int try_get_first_ddl_sstable(ObTablet &tablet,
|
static int try_get_first_ddl_sstable(ObTablet &tablet,
|
||||||
|
ObTableStoreIterator &ddl_table_iter,
|
||||||
blocksstable::ObSSTable *&first_sstable);
|
blocksstable::ObSSTable *&first_sstable);
|
||||||
static int create_ddl_sstable(ObTablet &tablet,
|
static int create_ddl_sstable(ObTablet &tablet,
|
||||||
const ObTabletDDLParam &ddl_param,
|
const ObTabletDDLParam &ddl_param,
|
||||||
|
|||||||
@ -709,8 +709,9 @@ int ObDDLKV::close(ObTablet &tablet)
|
|||||||
ddl_param.start_scn_ = ddl_start_scn_;
|
ddl_param.start_scn_ = ddl_start_scn_;
|
||||||
ddl_param.snapshot_version_ = snapshot_version_;
|
ddl_param.snapshot_version_ = snapshot_version_;
|
||||||
ddl_param.data_format_version_ = data_format_version_;
|
ddl_param.data_format_version_ = data_format_version_;
|
||||||
|
ObTableStoreIterator ddl_table_iter; // need to hold first_sstable until finish
|
||||||
ObSSTable *first_sstable = nullptr;
|
ObSSTable *first_sstable = nullptr;
|
||||||
if (OB_FAIL(ObTabletDDLUtil::try_get_first_ddl_sstable(tablet, first_sstable))) {
|
if (OB_FAIL(ObTabletDDLUtil::try_get_first_ddl_sstable(tablet, ddl_table_iter, first_sstable))) {
|
||||||
LOG_WARN("fail to get first sstable", K(ret), K(tablet));
|
LOG_WARN("fail to get first sstable", K(ret), K(tablet));
|
||||||
} else if (OB_FAIL(ObTabletDDLUtil::create_ddl_sstable(tablet, ddl_param, meta_array, first_sstable, allocator, sstable))) {
|
} else if (OB_FAIL(ObTabletDDLUtil::create_ddl_sstable(tablet, ddl_param, meta_array, first_sstable, allocator, sstable))) {
|
||||||
LOG_WARN("create ddl sstable failed", K(ret), K(ddl_param), KP(first_sstable));
|
LOG_WARN("create ddl sstable failed", K(ret), K(ddl_param), KP(first_sstable));
|
||||||
|
|||||||
Reference in New Issue
Block a user