Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
87783a96
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1192
Star
22018
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
87783a96
编写于
8月 04, 2023
作者:
M
Minglei Jin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
s3query/get: pull object to local
上级
ebd09ca5
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
96 addition
and
3 deletion
+96
-3
source/dnode/vnode/src/inc/vndCos.h
source/dnode/vnode/src/inc/vndCos.h
+3
-0
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
+18
-3
source/dnode/vnode/src/vnd/vnodeCos.c
source/dnode/vnode/src/vnd/vnodeCos.c
+75
-0
未找到文件。
source/dnode/vnode/src/inc/vndCos.h
浏览文件 @
87783a96
...
@@ -28,6 +28,9 @@ int32_t s3Init();
...
@@ -28,6 +28,9 @@ int32_t s3Init();
void
s3CleanUp
();
void
s3CleanUp
();
void
s3PutObjectFromFile
(
const
char
*
file
,
const
char
*
object
);
void
s3PutObjectFromFile
(
const
char
*
file
,
const
char
*
object
);
void
s3DeleteObjects
(
const
char
*
object_name
[],
int
nobject
);
void
s3DeleteObjects
(
const
char
*
object_name
[],
int
nobject
);
bool
s3Exists
(
const
char
*
object_name
);
void
s3Get
(
const
char
*
object_name
,
const
char
*
path
);
void
s3EvictCache
();
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
source/dnode/vnode/src/tsdb/tsdbReaderWriter.c
浏览文件 @
87783a96
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
*/
*/
#include "tsdb.h"
#include "tsdb.h"
#include "vndCos.h"
// =============== PAGE-WISE FILE ===============
// =============== PAGE-WISE FILE ===============
int32_t
tsdbOpenFile
(
const
char
*
path
,
int32_t
szPage
,
int32_t
flag
,
STsdbFD
**
ppFD
)
{
int32_t
tsdbOpenFile
(
const
char
*
path
,
int32_t
szPage
,
int32_t
flag
,
STsdbFD
**
ppFD
)
{
...
@@ -34,10 +35,24 @@ int32_t tsdbOpenFile(const char *path, int32_t szPage, int32_t flag, STsdbFD **p
...
@@ -34,10 +35,24 @@ int32_t tsdbOpenFile(const char *path, int32_t szPage, int32_t flag, STsdbFD **p
pFD
->
flag
=
flag
;
pFD
->
flag
=
flag
;
pFD
->
pFD
=
taosOpenFile
(
path
,
flag
);
pFD
->
pFD
=
taosOpenFile
(
path
,
flag
);
if
(
pFD
->
pFD
==
NULL
)
{
if
(
pFD
->
pFD
==
NULL
)
{
const
char
*
object_name
=
taosDirEntryBaseName
((
char
*
)
path
);
if
(
!
strncmp
(
path
+
strlen
(
path
)
-
5
,
".data"
,
5
)
&&
s3Exists
(
object_name
))
{
s3EvictCache
();
s3Get
(
object_name
,
path
);
pFD
->
pFD
=
taosOpenFile
(
path
,
flag
);
if
(
pFD
->
pFD
==
NULL
)
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
taosMemoryFree
(
pFD
);
goto
_exit
;
}
}
else
{
code
=
TAOS_SYSTEM_ERROR
(
errno
);
code
=
TAOS_SYSTEM_ERROR
(
errno
);
taosMemoryFree
(
pFD
);
taosMemoryFree
(
pFD
);
goto
_exit
;
goto
_exit
;
}
}
}
pFD
->
szPage
=
szPage
;
pFD
->
szPage
=
szPage
;
pFD
->
pgno
=
0
;
pFD
->
pgno
=
0
;
pFD
->
pBuf
=
taosMemoryCalloc
(
1
,
szPage
);
pFD
->
pBuf
=
taosMemoryCalloc
(
1
,
szPage
);
...
...
source/dnode/vnode/src/vnd/vnodeCos.c
浏览文件 @
87783a96
...
@@ -112,3 +112,78 @@ void s3DeleteObjects(const char *object_name[], int nobject) {
...
@@ -112,3 +112,78 @@ void s3DeleteObjects(const char *object_name[], int nobject) {
cos_warn_log
(
"delete objects failed
\n
"
);
cos_warn_log
(
"delete objects failed
\n
"
);
}
}
}
}
bool
s3Exists
(
const
char
*
object_name
)
{
bool
ret
=
false
;
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
;
cos_table_t
*
headers
=
NULL
;
cos_object_exist_status_e
object_exist
;
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_check_object_exist
(
options
,
&
bucket
,
&
object
,
headers
,
&
object_exist
,
&
resp_headers
);
if
(
object_exist
==
COS_OBJECT_NON_EXIST
)
{
cos_warn_log
(
"object: %.*s non exist.
\n
"
,
object
.
len
,
object
.
data
);
}
else
if
(
object_exist
==
COS_OBJECT_EXIST
)
{
ret
=
true
;
cos_warn_log
(
"object: %.*s exist.
\n
"
,
object
.
len
,
object
.
data
);
}
else
{
cos_warn_log
(
"object: %.*s unknown status.
\n
"
,
object
.
len
,
object
.
data
);
log_status
(
s
);
}
cos_pool_destroy
(
p
);
return
ret
;
}
void
s3Get
(
const
char
*
object_name
,
const
char
*
path
)
{
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_string_t
file
;
cos_table_t
*
resp_headers
=
NULL
;
cos_table_t
*
headers
=
NULL
;
int
traffic_limit
=
0
;
//创建内存池
cos_pool_create
(
&
p
,
NULL
);
//初始化请求选项
options
=
cos_request_options_create
(
p
);
s3InitRequestOptions
(
options
,
is_cname
);
cos_str_set
(
&
bucket
,
tsS3BucketName
);
if
(
traffic_limit
)
{
//限速值设置范围为819200 - 838860800,即100KB/s - 100MB/s,如果超出该范围将返回400错误
headers
=
cos_table_make
(
p
,
1
);
cos_table_add_int
(
headers
,
"x-cos-traffic-limit"
,
819200
);
}
//下载对象
cos_str_set
(
&
file
,
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
))
{
cos_warn_log
(
"get object succeeded
\n
"
);
}
else
{
cos_warn_log
(
"get object failed
\n
"
);
}
//销毁内存池
cos_pool_destroy
(
p
);
}
void
s3EvictCache
()
{}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录