Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
画布下的乐园
oceanbase
提交
eab93f73
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 搜索 >>
提交
eab93f73
编写于
11月 03, 2022
作者:
H
HaHaJeff
提交者:
wangzelin.wzl
11月 03, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed log out of diskspace because of a ret code has not been handled.
上级
58517850
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
8 deletion
+10
-8
src/logservice/palf/log_engine.cpp
src/logservice/palf/log_engine.cpp
+1
-1
src/logservice/palf/palf_env_impl.cpp
src/logservice/palf/palf_env_impl.cpp
+9
-7
未找到文件。
src/logservice/palf/log_engine.cpp
浏览文件 @
eab93f73
...
...
@@ -609,7 +609,7 @@ int LogEngine::get_min_block_info_for_gc(block_id_t &block_id, int64_t &max_ts_n
PALF_LOG
(
WARN
,
"get_block_id_range failed"
,
K
(
ret
));
// NB: used next block min_block_ts as the max_ts_ns of current block
}
else
if
(
OB_FAIL
(
get_block_min_ts_ns
(
min_block_id
+
1
,
min_block_max_ts_ns
)))
{
PALF_LOG
(
WARN
,
"get_block_min_ts_ns failed"
,
K
(
ret
));
PALF_LOG
(
TRACE
,
"get_block_min_ts_ns failed"
,
K
(
ret
));
}
else
{
reset_min_block_info_guarded_by_lock_
(
min_block_id
,
min_block_max_ts_ns
);
block_id
=
min_block_id
;
...
...
src/logservice/palf/palf_env_impl.cpp
浏览文件 @
eab93f73
...
...
@@ -621,14 +621,17 @@ bool PalfEnvImpl::LogGetRecycableFileCandidate::operator()(const LSKey &palf_id,
const
block_id_t
min_using_block_id
=
lsn_2_block
(
base_lsn
,
PALF_BLOCK_SIZE
);
block_id_t
min_block_id
=
LOG_INVALID_BLOCK_ID
;
int64_t
min_block_max_ts
=
OB_INVALID_TIMESTAMP
;
// OB_ENTRY_EXIST means there is not any block;
// OB_NO_SUCH_FILE_OR_DIRECTORY means there is concurrently with rebuild.
// OB_ERR_OUT_OF_UPPER_BOUND means there is one block
auto
need_skip_by_ret
=
[](
const
int
ret
){
return
OB_ENTRY_EXIST
==
ret
||
OB_NO_SUCH_FILE_OR_DIRECTORY
==
ret
||
OB_ERR_OUT_OF_UPPER_BOUND
==
ret
;
};
if
(
false
==
base_lsn
.
is_valid
())
{
PALF_LOG
(
WARN
,
"base_lsn is invalid"
,
K
(
base_lsn
),
KPC
(
palf_handle_impl
));
// OB_ENTRY_EXIST means there is not any block;
// OB_NO_SUCH_FILE_OR_DIRECTORY means there is concurrently with rebuild.
}
else
if
(
OB_FAIL
(
palf_handle_impl
->
get_min_block_info_for_gc
(
min_block_id
,
min_block_max_ts
))
&&
OB_ENTRY_NOT_EXIST
!=
ret
&&
OB_NO_SUCH_FILE_OR_DIRECTORY
!=
ret
)
{
&&
!
need_skip_by_ret
(
ret
))
{
ret_code_
=
ret
;
bool_ret
=
false
;
PALF_LOG
(
WARN
,
"LogGetRecycableFileCandidate get_min_block_id_min_ts_ns failed"
,
K
(
ret
),
K
(
palf_id
));
...
...
@@ -637,8 +640,7 @@ bool PalfEnvImpl::LogGetRecycableFileCandidate::operator()(const LSKey &palf_id,
// 2. current palf_handle_impl must have older blocks(at least two blocks).
// Always keep there are at least two blocks in range [begin_lsn, base_lsn], because for restart, we will read
// first uncommitted log before base_lsn.
}
else
if
(
OB_ENTRY_NOT_EXIST
==
ret
||
OB_NO_SUCH_FILE_OR_DIRECTORY
==
ret
}
else
if
(
need_skip_by_ret
(
ret
)
||
min_using_block_id
<
min_block_id
||
min_using_block_id
-
min_block_id
<
2
)
{
PALF_LOG
(
TRACE
,
"can not recycle blocks, need keep at least two blocks or has been concurrently"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录