Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
2dot5
ClickHouse
提交
524f376b
C
ClickHouse
项目概览
2dot5
/
ClickHouse
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
ClickHouse
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
524f376b
编写于
4月 09, 2014
作者:
M
Michael Kolupaev
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge
上级
f5d56e38
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
4 deletion
+14
-4
dbms/include/DB/Storages/MergeTree/MergeTreeData.h
dbms/include/DB/Storages/MergeTree/MergeTreeData.h
+1
-0
dbms/src/Storages/MergeTree/MergeTreeData.cpp
dbms/src/Storages/MergeTree/MergeTreeData.cpp
+9
-2
dbms/src/Storages/StorageReplicatedMergeTree.cpp
dbms/src/Storages/StorageReplicatedMergeTree.cpp
+4
-2
未找到文件。
dbms/include/DB/Storages/MergeTree/MergeTreeData.h
浏览文件 @
524f376b
...
...
@@ -342,6 +342,7 @@ public:
/** Возвращает копию списка, чтобы снаружи можно было не заботиться о блокировках.
*/
DataParts
getDataParts
();
DataParts
getAllDataParts
();
/** Возвращает кусок с указанным именем или кусок, покрывающий его. Если такого нет, возвращает nullptr.
* Если including_inactive, просматриваются также неактивные куски (all_data_parts).
...
...
dbms/src/Storages/MergeTree/MergeTreeData.cpp
浏览文件 @
524f376b
...
...
@@ -736,9 +736,9 @@ void MergeTreeData::renameAndDetachPart(DataPartPtr part, const String & prefix)
{
Poco
::
ScopedLock
<
Poco
::
FastMutex
>
lock
(
data_parts_mutex
);
Poco
::
ScopedLock
<
Poco
::
FastMutex
>
lock_all
(
all_data_parts_mutex
);
all_data_parts
.
erase
(
part
);
if
(
!
data_parts
.
erase
(
part
))
if
(
!
all_data_parts
.
erase
(
part
))
throw
Exception
(
"No such data part"
,
ErrorCodes
::
NO_SUCH_DATA_PART
);
data_parts
.
erase
(
part
);
part
->
renameAddPrefix
(
prefix
);
}
...
...
@@ -749,6 +749,13 @@ MergeTreeData::DataParts MergeTreeData::getDataParts()
return
data_parts
;
}
MergeTreeData
::
DataParts
MergeTreeData
::
getAllDataParts
()
{
Poco
::
ScopedLock
<
Poco
::
FastMutex
>
lock
(
all_data_parts_mutex
);
return
all_data_parts
;
}
MergeTreeData
::
DataPartPtr
MergeTreeData
::
getContainingPart
(
const
String
&
part_name
,
bool
including_inactive
)
{
MutableDataPartPtr
tmp_part
(
new
DataPart
(
*
this
));
...
...
dbms/src/Storages/StorageReplicatedMergeTree.cpp
浏览文件 @
524f376b
...
...
@@ -225,7 +225,7 @@ void StorageReplicatedMergeTree::checkParts()
Strings
expected_parts_vec
=
zookeeper
.
getChildren
(
replica_path
+
"/parts"
);
NameSet
expected_parts
(
expected_parts_vec
.
begin
(),
expected_parts_vec
.
end
());
MergeTreeData
::
DataParts
parts
=
data
.
getDataParts
();
MergeTreeData
::
DataParts
parts
=
data
.
get
All
DataParts
();
MergeTreeData
::
DataParts
unexpected_parts
;
for
(
const
auto
&
part
:
parts
)
...
...
@@ -249,6 +249,7 @@ void StorageReplicatedMergeTree::checkParts()
throw
Exception
(
"Not found "
+
toString
(
expected_parts
.
size
())
+
" parts (including "
+
missing_name
+
") in table "
+
data
.
getTableName
(),
ErrorCodes
::
NOT_FOUND_EXPECTED_DATA_PART
);
LOG_ERROR
(
log
,
"Ignoring missing local part "
<<
missing_name
<<
" because part "
<<
containing
->
name
<<
" exists"
);
if
(
unexpected_parts
.
count
(
containing
))
{
parts_to_add
.
push_back
(
containing
);
...
...
@@ -261,7 +262,7 @@ void StorageReplicatedMergeTree::checkParts()
expected_parts
.
size
()
>
20
)
{
throw
Exception
(
"The local set of parts of table "
+
data
.
getTableName
()
+
" doesn't look like the set of parts in ZooKeeper."
"There are "
+
toString
(
unexpected_parts
.
size
())
+
" unexpected parts, "
"
There are "
+
toString
(
unexpected_parts
.
size
())
+
" unexpected parts, "
+
toString
(
parts_to_add
.
size
())
+
" unexpectedly merged parts, "
+
toString
(
expected_parts
.
size
())
+
" unexpectedly obsolete parts"
,
ErrorCodes
::
TOO_MANY_UNEXPECTED_DATA_PARTS
);
...
...
@@ -270,6 +271,7 @@ void StorageReplicatedMergeTree::checkParts()
/// Добавим в ZK информацию о кусках, покрывающих недостающие куски.
for
(
MergeTreeData
::
DataPartPtr
part
:
parts_to_add
)
{
LOG_ERROR
(
log
,
"Adding unexpected local part to ZooKeeper: "
<<
part
->
name
);
zkutil
::
Ops
ops
;
checkPartAndAddToZooKeeper
(
part
,
ops
);
zookeeper
.
multi
(
ops
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录