Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
bd60e92f
T
TDengine
项目概览
taosdata
/
TDengine
接近 2 年 前同步成功
通知
1191
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看板
提交
bd60e92f
编写于
3月 15, 2022
作者:
L
Liu Jicong
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add stream scheduler
上级
eced27c4
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
106 addition
and
25 deletion
+106
-25
include/dnode/snode/snode.h
include/dnode/snode/snode.h
+0
-3
include/util/tdef.h
include/util/tdef.h
+13
-10
source/client/src/tmq.c
source/client/src/tmq.c
+1
-1
source/dnode/mnode/impl/inc/mndDef.h
source/dnode/mnode/impl/inc/mndDef.h
+11
-3
source/dnode/mnode/impl/src/mndScheduler.c
source/dnode/mnode/impl/src/mndScheduler.c
+77
-2
source/dnode/snode/inc/sndInt.h
source/dnode/snode/inc/sndInt.h
+4
-4
source/util/src/tuuid.c
source/util/src/tuuid.c
+0
-2
未找到文件。
include/dnode/snode/snode.h
浏览文件 @
bd60e92f
...
...
@@ -23,9 +23,6 @@
extern
"C"
{
#endif
#define SND_UNIQUE_THREAD_NUM 2
#define SND_SHARED_THREAD_NUM 2
/* ------------------------ TYPES EXPOSED ------------------------ */
typedef
struct
SDnode
SDnode
;
typedef
struct
SSnode
SSnode
;
...
...
include/util/tdef.h
浏览文件 @
bd60e92f
...
...
@@ -345,19 +345,19 @@ typedef enum ELogicConditionType {
#define TSDB_MAX_DB_QUORUM_OPTION 2
#define TSDB_DEFAULT_DB_QUORUM_OPTION 1
#define TSDB_MIN_DB_TTL_OPTION
1
#define TSDB_DEFAULT_DB_TTL_OPTION
0
#define TSDB_MIN_DB_TTL_OPTION 1
#define TSDB_DEFAULT_DB_TTL_OPTION 0
#define TSDB_MIN_DB_SINGLE_STABLE_OPTION
0
#define TSDB_MAX_DB_SINGLE_STABLE_OPTION
1
#define TSDB_DEFAULT_DB_SINGLE_STABLE_OPTION
0
#define TSDB_MIN_DB_SINGLE_STABLE_OPTION 0
#define TSDB_MAX_DB_SINGLE_STABLE_OPTION 1
#define TSDB_DEFAULT_DB_SINGLE_STABLE_OPTION 0
#define TSDB_MIN_DB_STREAM_MODE_OPTION
0
#define TSDB_MAX_DB_STREAM_MODE_OPTION
1
#define TSDB_DEFAULT_DB_STREAM_MODE_OPTION
0
#define TSDB_MIN_DB_STREAM_MODE_OPTION 0
#define TSDB_MAX_DB_STREAM_MODE_OPTION 1
#define TSDB_DEFAULT_DB_STREAM_MODE_OPTION 0
#define TSDB_MAX_JOIN_TABLE_NUM
10
#define TSDB_MAX_UNION_CLAUSE
5
#define TSDB_MAX_JOIN_TABLE_NUM 10
#define TSDB_MAX_UNION_CLAUSE 5
#define TSDB_MIN_DB_UPDATE 0
#define TSDB_MAX_DB_UPDATE 2
...
...
@@ -445,6 +445,9 @@ typedef struct {
#define TMQ_SEPARATOR ':'
#define SND_UNIQUE_THREAD_NUM 2
#define SND_SHARED_THREAD_NUM 2
#ifdef __cplusplus
}
#endif
...
...
source/client/src/tmq.c
浏览文件 @
bd60e92f
...
...
@@ -459,7 +459,7 @@ void tmq_conf_set_offset_commit_cb(tmq_conf_t* conf, tmq_commit_cb* cb) { conf->
TAOS_RES
*
tmq_create_topic
(
TAOS
*
taos
,
const
char
*
topicName
,
const
char
*
sql
,
int
sqlLen
)
{
STscObj
*
pTscObj
=
(
STscObj
*
)
taos
;
SRequestObj
*
pRequest
=
NULL
;
SQuery
*
pQueryNode
=
NULL
;
SQuery
*
pQueryNode
=
NULL
;
char
*
pStr
=
NULL
;
terrno
=
TSDB_CODE_SUCCESS
;
...
...
source/dnode/mnode/impl/inc/mndDef.h
浏览文件 @
bd60e92f
...
...
@@ -679,6 +679,12 @@ static FORCE_INLINE void* tDecodeSMqConsumerObj(void* buf, SMqConsumerObj* pCons
return
buf
;
}
typedef
struct
{
int32_t
taskId
;
int32_t
level
;
SSubplan
*
plan
;
}
SStreamTaskMeta
;
typedef
struct
{
char
name
[
TSDB_TOPIC_FNAME_LEN
];
char
db
[
TSDB_DB_FNAME_LEN
];
...
...
@@ -687,12 +693,14 @@ typedef struct {
int64_t
uid
;
int64_t
dbUid
;
int32_t
version
;
int32_t
vgNum
;
SRWLatch
lock
;
int8_t
status
;
// int32_t sqlLen;
char
*
sql
;
char
*
logicalPlan
;
char
*
physicalPlan
;
char
*
sql
;
char
*
logicalPlan
;
char
*
physicalPlan
;
SArray
*
tasks
;
// SArray<SArray<SStreamTaskMeta>>
}
SStreamObj
;
int32_t
tEncodeSStreamObj
(
SCoder
*
pEncoder
,
const
SStreamObj
*
pObj
);
...
...
source/dnode/mnode/impl/src/mndScheduler.c
浏览文件 @
bd60e92f
...
...
@@ -21,6 +21,7 @@
#include "mndOffset.h"
#include "mndShow.h"
#include "mndStb.h"
#include "mndStream.h"
#include "mndSubscribe.h"
#include "mndTopic.h"
#include "mndTrans.h"
...
...
@@ -28,10 +29,84 @@
#include "mndVgroup.h"
#include "tcompare.h"
#include "tname.h"
#include "tuuid.h"
int32_t
mndScheduleStream
(
SMnode
*
pMnode
,
SStreamObj
*
pStream
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SVgObj
*
pVgroup
=
NULL
;
SQueryPlan
*
pPlan
=
qStringToQueryPlan
(
pStream
->
physicalPlan
);
if
(
pPlan
==
NULL
)
{
terrno
=
TSDB_CODE_QRY_INVALID_INPUT
;
return
-
1
;
}
ASSERT
(
pStream
->
vgNum
==
0
);
int32_t
levelNum
=
LIST_LENGTH
(
pPlan
->
pSubplans
);
pStream
->
tasks
=
taosArrayInit
(
levelNum
,
sizeof
(
SArray
));
for
(
int32_t
i
=
0
;
i
<
levelNum
;
i
++
)
{
SArray
*
taskOneLevel
=
taosArrayInit
(
0
,
sizeof
(
SStreamTaskMeta
));
SNodeListNode
*
inner
=
nodesListGetNode
(
pPlan
->
pSubplans
,
i
);
int32_t
opNum
=
LIST_LENGTH
(
inner
->
pNodeList
);
ASSERT
(
opNum
==
1
);
SSubplan
*
plan
=
nodesListGetNode
(
inner
->
pNodeList
,
0
);
if
(
i
==
0
)
{
ASSERT
(
plan
->
type
==
SUBPLAN_TYPE_SCAN
);
void
*
pIter
=
NULL
;
while
(
1
)
{
pIter
=
sdbFetch
(
pSdb
,
SDB_VGROUP
,
pIter
,
(
void
**
)
&
pVgroup
);
if
(
pIter
==
NULL
)
break
;
if
(
pVgroup
->
dbUid
!=
pStream
->
dbUid
)
{
sdbRelease
(
pSdb
,
pVgroup
);
continue
;
}
pStream
->
vgNum
++
;
plan
->
execNode
.
nodeId
=
pVgroup
->
vgId
;
plan
->
execNode
.
epSet
=
mndGetVgroupEpset
(
pMnode
,
pVgroup
);
SStreamTaskMeta
task
=
{
.
taskId
=
tGenIdPI32
(),
.
level
=
i
,
.
plan
=
plan
,
};
// send to vnode
taosArrayPush
(
taskOneLevel
,
&
task
);
}
}
else
if
(
plan
->
subplanType
==
SUBPLAN_TYPE_SCAN
)
{
// duplicatable
int32_t
parallel
=
0
;
// if no snode, parallel set to fetch thread num in vnode
// if has snode, set to shared thread num in snode
parallel
=
SND_SHARED_THREAD_NUM
;
for
(
int32_t
j
=
0
;
j
<
parallel
;
j
++
)
{
SStreamTaskMeta
task
=
{
.
taskId
=
tGenIdPI32
(),
.
level
=
i
,
.
plan
=
plan
,
};
taosArrayPush
(
taskOneLevel
,
&
task
);
}
}
else
{
// not duplicatable
SStreamTaskMeta
task
=
{
.
taskId
=
tGenIdPI32
(),
.
level
=
i
,
.
plan
=
plan
,
};
taosArrayPush
(
taskOneLevel
,
&
task
);
}
taosArrayPush
(
pStream
->
tasks
,
taskOneLevel
);
}
return
0
;
}
int32_t
mndSchedInitSubEp
(
SMnode
*
pMnode
,
const
SMqTopicObj
*
pTopic
,
SMqSubscribeObj
*
pSub
)
{
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SVgObj
*
pVgroup
=
NULL
;
SSdb
*
pSdb
=
pMnode
->
pSdb
;
SVgObj
*
pVgroup
=
NULL
;
SQueryPlan
*
pPlan
=
qStringToQueryPlan
(
pTopic
->
physicalPlan
);
if
(
pPlan
==
NULL
)
{
terrno
=
TSDB_CODE_QRY_INVALID_INPUT
;
...
...
source/dnode/snode/inc/sndInt.h
浏览文件 @
bd60e92f
...
...
@@ -67,11 +67,11 @@ typedef struct {
// storage handle
}
SStreamTask
;
int32_t
sndCreate
Stream
();
int32_t
sndDrop
Stream
(
);
int32_t
sndCreate
Task
();
int32_t
sndDrop
TaskOfStream
(
int64_t
streamId
);
int32_t
sndStop
Stream
(
);
int32_t
sndResume
Stream
(
);
int32_t
sndStop
TaskOfStream
(
int64_t
streamId
);
int32_t
sndResume
TaskOfStream
(
int64_t
streamId
);
#ifdef __cplusplus
}
...
...
source/util/src/tuuid.c
浏览文件 @
bd60e92f
...
...
@@ -24,7 +24,6 @@ int32_t tGenIdPI32(void) {
int32_t
code
=
taosGetSystemUUID
(
uid
,
tListLen
(
uid
));
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
else
{
hashId
=
MurmurHash3_32
(
uid
,
strlen
(
uid
));
}
...
...
@@ -44,7 +43,6 @@ int64_t tGenIdPI64(void) {
int32_t
code
=
taosGetSystemUUID
(
uid
,
tListLen
(
uid
));
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
terrno
=
TAOS_SYSTEM_ERROR
(
errno
);
return
-
1
;
}
else
{
hashId
=
MurmurHash3_32
(
uid
,
strlen
(
uid
));
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录