Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
不争之德
oceanbase
提交
a9e18319
O
oceanbase
项目概览
不争之德
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a9e18319
编写于
8月 26, 2022
作者:
O
obdev
提交者:
wangzelin.wzl
8月 26, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix schema core problem
上级
84a38901
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
52 addition
and
58 deletion
+52
-58
deps/oblib/src/lib/container/ob_array_helper.h
deps/oblib/src/lib/container/ob_array_helper.h
+1
-1
src/share/ob_replica_info.h
src/share/ob_replica_info.h
+0
-1
src/share/schema/ob_schema_struct.cpp
src/share/schema/ob_schema_struct.cpp
+27
-35
src/share/schema/ob_schema_struct.h
src/share/schema/ob_schema_struct.h
+8
-0
src/share/schema/ob_table_schema.cpp
src/share/schema/ob_table_schema.cpp
+16
-21
未找到文件。
deps/oblib/src/lib/container/ob_array_helper.h
浏览文件 @
a9e18319
...
...
@@ -29,7 +29,7 @@ public:
:
ObIArray
<
T
>
(
base_address
,
index
),
capacity_
(
capacity
)
{}
ObArrayHelper
()
:
capacity_
(
0
)
ObArrayHelper
()
:
ObIArray
<
T
>
(),
capacity_
(
0
)
{}
void
init
(
int64_t
capacity
,
T
*
base_address
,
int64_t
index
=
0
)
...
...
src/share/ob_replica_info.h
浏览文件 @
a9e18319
...
...
@@ -248,7 +248,6 @@ struct SchemaZoneReplicaAttrSet {
{}
virtual
~
SchemaZoneReplicaAttrSet
()
{}
int64_t
get_convert_size
()
const
;
int64_t
get_full_replica_num
()
const
{
...
...
src/share/schema/ob_schema_struct.cpp
浏览文件 @
a9e18319
...
...
@@ -1600,17 +1600,15 @@ int ObTenantSchema::set_zone_replica_attr_array(const common::ObIArray<SchemaZon
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
LOG_ERROR
(
"alloc failed"
,
K
(
ret
),
K
(
alloc_size
));
}
else
{
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
// call construct func in advance to avoid core status
ARRAY_NEW_CONSTRUCT
(
SchemaZoneReplicaAttrSet
,
zone_replica_attr_array_
);
for
(
int64_t
i
=
0
;
i
<
src
.
count
()
&&
OB_SUCC
(
ret
);
++
i
)
{
const
SchemaZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
nullptr
==
(
this_schema_set
=
new
(
this_schema_set
)
SchemaZoneReplicaAttrSet
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"placement new return nullptr"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
const
SchemaZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
LOG_WARN
(
"fail to set specific replica attr array"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
...
...
@@ -1645,13 +1643,12 @@ int ObTenantSchema::set_zone_replica_attr_array(const common::ObIArray<share::Ob
LOG_ERROR
(
"alloc failed"
,
K
(
ret
),
K
(
alloc_size
));
}
else
{
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
// call construct func in advance to avoid core status
ARRAY_NEW_CONSTRUCT
(
SchemaZoneReplicaAttrSet
,
zone_replica_attr_array_
);
for
(
int64_t
i
=
0
;
i
<
src
.
count
()
&&
OB_SUCC
(
ret
);
++
i
)
{
const
share
::
ObZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
nullptr
==
(
this_schema_set
=
new
(
this_schema_set
)
SchemaZoneReplicaAttrSet
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"placement new return nullptr"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
...
...
@@ -2814,17 +2811,15 @@ int ObLocality::set_zone_replica_attr_array(const common::ObIArray<SchemaZoneRep
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
LOG_ERROR
(
"alloc failed"
,
K
(
ret
),
K
(
alloc_size
));
}
else
{
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
// call construct func in advance to avoid core status
ARRAY_NEW_CONSTRUCT
(
SchemaZoneReplicaAttrSet
,
zone_replica_attr_array_
);
for
(
int64_t
i
=
0
;
i
<
src
.
count
()
&&
OB_SUCC
(
ret
);
++
i
)
{
const
SchemaZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
nullptr
==
(
this_schema_set
=
new
(
this_schema_set
)
SchemaZoneReplicaAttrSet
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"placement new return nullptr"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
const
SchemaZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
LOG_WARN
(
"fail to set specific replica attr array"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
...
...
@@ -2864,18 +2859,15 @@ int ObLocality::set_zone_replica_attr_array(const common::ObIArray<share::ObZone
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
LOG_ERROR
(
"alloc failed"
,
K
(
ret
),
K
(
alloc_size
));
}
else
{
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
// call construct func in advance to avoid core status
ARRAY_NEW_CONSTRUCT
(
SchemaZoneReplicaAttrSet
,
zone_replica_attr_array_
);
for
(
int64_t
i
=
0
;
i
<
src
.
count
()
&&
OB_SUCC
(
ret
);
++
i
)
{
const
share
::
ObZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
nullptr
==
(
this_schema_set
=
new
(
this_schema_set
)
SchemaZoneReplicaAttrSet
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"placement new return nullptr"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
LOG_WARN
(
"fail to set specific replica attr array"
,
K
(
ret
));
const
share
::
ObZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_logonly_replica_attr_array
()),
...
...
src/share/schema/ob_schema_struct.h
浏览文件 @
a9e18319
...
...
@@ -55,6 +55,14 @@ namespace share {
namespace
schema
{
typedef
common
::
Ob2DArray
<
common
::
ObObjParam
,
common
::
OB_MALLOC_BIG_BLOCK_SIZE
,
common
::
ObWrapperAllocator
,
false
>
ParamStore
;
#define ARRAY_NEW_CONSTRUCT(TYPE, ARRAY) \
for (int64_t i = 0; i < ARRAY.count() && OB_SUCC(ret); ++i) { \
TYPE *this_set = &ARRAY.at(i); \
if (nullptr == (this_set = new (this_set) TYPE())) { \
ret = OB_ERR_UNEXPECTED; \
LOG_WARN("placement new return nullptr", K(ret)); \
} \
}
class
ObSchemaGetterGuard
;
class
ObSimpleTableSchemaV2
;
class
ObTableSchema
;
...
...
src/share/schema/ob_table_schema.cpp
浏览文件 @
a9e18319
...
...
@@ -1034,18 +1034,15 @@ int ObSimpleTableSchemaV2::set_zone_replica_attr_array(const common::ObIArray<Sc
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
LOG_ERROR
(
"alloc failed"
,
K
(
ret
),
K
(
alloc_size
));
}
else
{
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
// call construct func in advance to avoid core status
ARRAY_NEW_CONSTRUCT
(
SchemaZoneReplicaAttrSet
,
zone_replica_attr_array_
);
for
(
int64_t
i
=
0
;
i
<
src
.
count
()
&&
OB_SUCC
(
ret
);
++
i
)
{
const
SchemaZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
nullptr
==
(
this_schema_set
=
new
(
this_schema_set
)
SchemaZoneReplicaAttrSet
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"placement new return nullptr"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
LOG_WARN
(
"fail to set specific replica attr array"
,
K
(
ret
));
const
SchemaZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_logonly_replica_attr_array
()),
...
...
@@ -1078,17 +1075,15 @@ int ObSimpleTableSchemaV2::set_zone_replica_attr_array(const common::ObIArray<sh
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
LOG_ERROR
(
"alloc failed"
,
K
(
ret
),
K
(
alloc_size
));
}
else
{
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
zone_replica_attr_array_
.
init
(
src
.
count
(),
static_cast
<
SchemaZoneReplicaAttrSet
*>
(
buf
),
src
.
count
());
// call construct func in advance to avoid core status
ARRAY_NEW_CONSTRUCT
(
SchemaZoneReplicaAttrSet
,
zone_replica_attr_array_
);
for
(
int64_t
i
=
0
;
i
<
src
.
count
()
&&
OB_SUCC
(
ret
);
++
i
)
{
const
share
::
ObZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
nullptr
==
(
this_schema_set
=
new
(
this_schema_set
)
SchemaZoneReplicaAttrSet
()))
{
ret
=
OB_ERR_UNEXPECTED
;
LOG_WARN
(
"placement new return nullptr"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
const
share
::
ObZoneReplicaAttrSet
&
src_replica_attr_set
=
src
.
at
(
i
);
SchemaZoneReplicaAttrSet
*
this_schema_set
=
&
zone_replica_attr_array_
.
at
(
i
);
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
this_schema_set
->
replica_attr_set_
.
get_full_replica_attr_array
()),
src_replica_attr_set
.
replica_attr_set_
.
get_full_replica_attr_array
())))
{
LOG_WARN
(
"fail to set specific replica attr array"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
set_specific_replica_attr_array
(
static_cast
<
SchemaReplicaAttrArray
&>
(
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录