Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
大炮V587
oceanbase
提交
63f3d965
O
oceanbase
项目概览
大炮V587
/
oceanbase
与 Fork 源项目一致
Fork自
oceanbase / oceanbase
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
oceanbase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
63f3d965
编写于
3月 16, 2023
作者:
H
HaHaJeff
提交者:
ob-robot
3月 16, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed allocate memory failed but the error is OB_INVALID_ARGUMENT
上级
2a801ac3
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
29 addition
and
4 deletion
+29
-4
src/logservice/palf/log_engine.cpp
src/logservice/palf/log_engine.cpp
+6
-0
src/logservice/palf/log_reader.cpp
src/logservice/palf/log_reader.cpp
+0
-1
src/logservice/palf/log_reader_utils.cpp
src/logservice/palf/log_reader_utils.cpp
+11
-0
src/logservice/palf/log_reader_utils.h
src/logservice/palf/log_reader_utils.h
+3
-0
src/logservice/palf/log_storage.cpp
src/logservice/palf/log_storage.cpp
+4
-1
src/logservice/palf/palf_handle_impl.cpp
src/logservice/palf/palf_handle_impl.cpp
+5
-2
未找到文件。
src/logservice/palf/log_engine.cpp
浏览文件 @
63f3d965
...
...
@@ -547,6 +547,9 @@ int LogEngine::read_group_entry_header(const LSN &lsn, LogGroupEntryHeader &log_
ret
=
OB_NOT_INIT
;
}
else
if
(
false
==
lsn
.
is_valid
())
{
ret
=
OB_INVALID_ARGUMENT
;
}
else
if
(
!
read_buf
.
is_valid
())
{
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
PALF_LOG
(
WARN
,
"allocate memory failed"
,
KPC
(
this
),
K
(
lsn
));
}
else
if
(
OB_FAIL
(
log_storage_
.
pread_without_block_header
(
lsn
,
in_read_size
,
read_buf
,
out_read_size
)))
{
PALF_LOG
(
WARN
,
"LogStorage pread failed"
,
K
(
ret
));
}
else
if
(
OB_FAIL
(
log_group_entry_header
.
deserialize
(
read_buf
.
buf_
,
in_read_size
,
pos
)))
{
...
...
@@ -1150,6 +1153,9 @@ int LogEngine::construct_log_meta_(const LSN &lsn, block_id_t &expected_next_blo
LogMetaEntry
meta_entry
;
if
(
false
==
lsn
.
is_valid
())
{
PALF_LOG
(
INFO
,
"there is no meta entry, maybe create palf failed"
,
K
(
ret
),
K_
(
palf_id
),
K_
(
is_inited
));
}
else
if
(
!
read_buf
.
is_valid
())
{
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
PALF_LOG
(
WARN
,
"allocate memory failed"
,
KPC
(
this
),
K
(
lsn
));
}
else
if
(
OB_FAIL
(
log_meta_storage_
.
pread
(
lsn
,
buf_len
,
read_buf
,
out_read_size
)))
{
PALF_LOG
(
WARN
,
"ObLogMetaStorage pread failed"
,
K
(
ret
),
K_
(
palf_id
),
K_
(
is_inited
));
// NB: when lsn is invalid, means there is no data on disk.
...
...
src/logservice/palf/log_reader.cpp
浏览文件 @
63f3d965
...
...
@@ -113,7 +113,6 @@ int LogReader::inner_pread_(const int read_io_fd,
offset_t
backoff
=
start_offset
-
aligned_start_offset
;
int64_t
aligned_in_read_size
=
upper_align
(
in_read_size
+
backoff
,
LOG_DIO_ALIGN_SIZE
);
int64_t
limited_and_aligned_in_read_size
=
0
;
ReadBufGuard
read_buf_guard
(
"LogReader"
,
aligned_in_read_size
);
if
(
MAX_LOG_BUFFER_SIZE
+
LOG_DIO_ALIGN_SIZE
<
aligned_in_read_size
)
{
ret
=
OB_BUF_NOT_ENOUGH
;
PALF_LOG
(
ERROR
,
"aligned_in_read_size is greater than MAX BUFFER LEN"
,
...
...
src/logservice/palf/log_reader_utils.cpp
浏览文件 @
63f3d965
...
...
@@ -30,6 +30,11 @@ ReadBuf::ReadBuf(char *buf, const int64_t buf_len) : buf_(buf), buf_len_(buf_len
{
}
ReadBuf
::
ReadBuf
(
const
ReadBuf
&
rhs
)
{
*
this
=
rhs
;
}
ReadBuf
::~
ReadBuf
()
{
reset
();
...
...
@@ -51,6 +56,12 @@ bool ReadBuf::operator!=(const ReadBuf &rhs) const
return
!
operator
==
(
rhs
);
}
ReadBuf
&
ReadBuf
::
operator
=
(
const
ReadBuf
&
rhs
)
{
buf_
=
rhs
.
buf_
;
buf_len_
=
rhs
.
buf_len_
;
return
*
this
;
}
bool
ReadBuf
::
is_valid
()
const
{
...
...
src/logservice/palf/log_reader_utils.h
浏览文件 @
63f3d965
...
...
@@ -22,8 +22,11 @@ struct ReadBuf
{
ReadBuf
();
ReadBuf
(
char
*
buf
,
const
int64_t
buf_len
);
ReadBuf
(
const
ReadBuf
&
rhs
);
bool
operator
==
(
const
ReadBuf
&
rhs
)
const
;
bool
operator
!=
(
const
ReadBuf
&
rhs
)
const
;
ReadBuf
&
operator
=
(
const
ReadBuf
&
rhs
);
~
ReadBuf
();
void
reset
();
bool
is_valid
()
const
;
...
...
src/logservice/palf/log_storage.cpp
浏览文件 @
63f3d965
...
...
@@ -733,7 +733,10 @@ int LogStorage::read_block_header_(const block_id_t block_id,
LSN
log_tail
=
get_readable_log_tail_guarded_by_lock_
();
block_id_t
max_block_id
=
lsn_2_block
(
log_tail
,
logical_block_size_
);
bool
last_block_has_data
=
(
0
==
lsn_2_offset
(
log_tail
,
logical_block_size_
)
?
false
:
true
);
if
(
block_id
>
max_block_id
||
(
block_id
==
max_block_id
&&
false
==
last_block_has_data
))
{
if
(
!
read_buf
.
is_valid
())
{
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
PALF_LOG
(
WARN
,
"allocate memory failed"
);
}
else
if
(
block_id
>
max_block_id
||
(
block_id
==
max_block_id
&&
false
==
last_block_has_data
))
{
ret
=
OB_ERR_OUT_OF_UPPER_BOUND
;
PALF_LOG
(
WARN
,
"block_id is large than max_block_id"
,
K
(
ret
),
K
(
block_id
),
K
(
log_tail
),
K
(
max_block_id
),
K
(
log_block_header
));
...
...
src/logservice/palf/palf_handle_impl.cpp
浏览文件 @
63f3d965
...
...
@@ -3943,10 +3943,13 @@ int PalfHandleImpl::read_and_append_log_group_entry_before_ts_(
};
last_log_buf
=
NULL
;
if
(
OB_FAIL
(
iterator
.
init
(
start_lsn
,
get_file_end_lsn
,
log_engine_
.
get_log_storage
())))
{
ReadBufGuard
read_buf_guard
(
"Palf"
,
MAX_LOG_BUFFER_SIZE
);
if
(
!
read_buf_guard
.
read_buf_
.
is_valid
())
{
ret
=
OB_ALLOCATE_MEMORY_FAILED
;
PALF_LOG
(
WARN
,
"allocate memory failed"
,
KPC
(
this
));
}
else
if
(
OB_FAIL
(
iterator
.
init
(
start_lsn
,
get_file_end_lsn
,
log_engine_
.
get_log_storage
())))
{
PALF_LOG
(
WARN
,
"iterator init failed"
,
K
(
ret
),
KPC
(
this
),
K
(
start_lsn
),
K
(
flashback_scn
));
}
else
{
ReadBufGuard
read_buf_guard
(
"Palf"
,
MAX_LOG_BUFFER_SIZE
);
const
int64_t
read_buf_len
=
read_buf_guard
.
read_buf_
.
buf_len_
;
char
*&
read_buf
=
read_buf_guard
.
read_buf_
.
buf_
;
const
char
*
buffer
=
NULL
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录