Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
65d8af19
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
65d8af19
编写于
8月 04, 2023
作者:
M
Minglei Jin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
s3: new api s3Size
上级
87783a96
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
48 addition
and
4 deletion
+48
-4
source/dnode/vnode/src/inc/vndCos.h
source/dnode/vnode/src/inc/vndCos.h
+2
-2
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
+2
-1
source/dnode/vnode/src/vnd/vnodeCos.c
source/dnode/vnode/src/vnd/vnodeCos.c
+44
-1
未找到文件。
source/dnode/vnode/src/inc/vndCos.h
浏览文件 @
65d8af19
...
...
@@ -29,9 +29,9 @@ void s3CleanUp();
void
s3PutObjectFromFile
(
const
char
*
file
,
const
char
*
object
);
void
s3DeleteObjects
(
const
char
*
object_name
[],
int
nobject
);
bool
s3Exists
(
const
char
*
object_name
);
void
s3Get
(
const
char
*
object_name
,
const
char
*
path
);
bool
s3Get
(
const
char
*
object_name
,
const
char
*
path
);
void
s3EvictCache
();
long
s3Size
(
const
char
*
object_name
);
#ifdef __cplusplus
}
#endif
...
...
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
浏览文件 @
65d8af19
...
...
@@ -36,7 +36,8 @@ int32_t tsdbOpenFile(const char *path, int32_t szPage, int32_t flag, STsdbFD **p
pFD
->
pFD
=
taosOpenFile
(
path
,
flag
);
if
(
pFD
->
pFD
==
NULL
)
{
const
char
*
object_name
=
taosDirEntryBaseName
((
char
*
)
path
);
if
(
!
strncmp
(
path
+
strlen
(
path
)
-
5
,
".data"
,
5
)
&&
s3Exists
(
object_name
))
{
long
s3_size
=
s3Size
(
object_name
);
if
(
!
strncmp
(
path
+
strlen
(
path
)
-
5
,
".data"
,
5
)
&&
s3_size
>
0
)
{
s3EvictCache
();
s3Get
(
object_name
,
path
);
...
...
source/dnode/vnode/src/vnd/vnodeCos.c
浏览文件 @
65d8af19
...
...
@@ -147,7 +147,8 @@ bool s3Exists(const char *object_name) {
return
ret
;
}
void
s3Get
(
const
char
*
object_name
,
const
char
*
path
)
{
bool
s3Get
(
const
char
*
object_name
,
const
char
*
path
)
{
bool
ret
=
false
;
cos_pool_t
*
p
=
NULL
;
int
is_cname
=
0
;
cos_status_t
*
s
=
NULL
;
...
...
@@ -177,6 +178,7 @@ void s3Get(const char *object_name, const char *path) {
cos_str_set
(
&
object
,
object_name
);
s
=
cos_get_object_to_file
(
options
,
&
bucket
,
&
object
,
headers
,
NULL
,
&
file
,
&
resp_headers
);
if
(
cos_status_is_ok
(
s
))
{
ret
=
true
;
cos_warn_log
(
"get object succeeded
\n
"
);
}
else
{
cos_warn_log
(
"get object failed
\n
"
);
...
...
@@ -184,6 +186,47 @@ void s3Get(const char *object_name, const char *path) {
//销毁内存池
cos_pool_destroy
(
p
);
return
ret
;
}
void
s3EvictCache
()
{}
long
s3Size
(
const
char
*
object_name
)
{
long
size
=
0
;
cos_pool_t
*
p
=
NULL
;
int
is_cname
=
0
;
cos_status_t
*
s
=
NULL
;
cos_request_options_t
*
options
=
NULL
;
cos_string_t
bucket
;
cos_string_t
object
;
cos_table_t
*
resp_headers
=
NULL
;
//创建内存池
cos_pool_create
(
&
p
,
NULL
);
//初始化请求选项
options
=
cos_request_options_create
(
p
);
s3InitRequestOptions
(
options
,
is_cname
);
cos_str_set
(
&
bucket
,
tsS3BucketName
);
//获取对象元数据
cos_str_set
(
&
object
,
object_name
);
s
=
cos_head_object
(
options
,
&
bucket
,
&
object
,
NULL
,
&
resp_headers
);
// print_headers(resp_headers);
if
(
cos_status_is_ok
(
s
))
{
char
*
content_length_str
=
(
char
*
)
apr_table_get
(
resp_headers
,
COS_CONTENT_LENGTH
);
if
(
content_length_str
!=
NULL
)
{
size
=
atol
(
content_length_str
);
}
cos_warn_log
(
"head object succeeded: %ld
\n
"
,
size
);
}
else
{
cos_warn_log
(
"head object failed
\n
"
);
}
//销毁内存池
cos_pool_destroy
(
p
);
return
size
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录