Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
b6bd0b51
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看板
未验证
提交
b6bd0b51
编写于
7月 11, 2022
作者:
dengyihao
提交者:
GitHub
7月 11, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #14771 from taosdata/enh/rpcSvrRefactor
enh: rpc svr refactor
上级
77053a31
60a9b2f5
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
50 addition
and
23 deletion
+50
-23
source/client/src/clientImpl.c
source/client/src/clientImpl.c
+7
-2
source/libs/scheduler/inc/schInt.h
source/libs/scheduler/inc/schInt.h
+1
-0
source/libs/scheduler/src/schJob.c
source/libs/scheduler/src/schJob.c
+24
-11
source/libs/scheduler/src/schStatus.c
source/libs/scheduler/src/schStatus.c
+1
-0
source/libs/transport/src/transCli.c
source/libs/transport/src/transCli.c
+8
-5
source/libs/transport/src/transSvr.c
source/libs/transport/src/transSvr.c
+9
-5
未找到文件。
source/client/src/clientImpl.c
浏览文件 @
b6bd0b51
...
...
@@ -810,11 +810,16 @@ int32_t handleQueryExecRsp(SRequestObj* pRequest) {
void
schedulerExecCb
(
SExecResult
*
pResult
,
void
*
param
,
int32_t
code
)
{
SRequestObj
*
pRequest
=
(
SRequestObj
*
)
param
;
pRequest
->
code
=
code
;
memcpy
(
&
pRequest
->
body
.
resInfo
.
execRes
,
pResult
,
sizeof
(
*
pResult
));
if
(
pResult
)
{
memcpy
(
&
pRequest
->
body
.
resInfo
.
execRes
,
pResult
,
sizeof
(
*
pResult
));
}
if
(
TDMT_VND_SUBMIT
==
pRequest
->
type
||
TDMT_VND_DELETE
==
pRequest
->
type
||
TDMT_VND_CREATE_TABLE
==
pRequest
->
type
)
{
pRequest
->
body
.
resInfo
.
numOfRows
=
pResult
->
numOfRows
;
if
(
pResult
)
{
pRequest
->
body
.
resInfo
.
numOfRows
=
pResult
->
numOfRows
;
}
schedulerFreeJob
(
&
pRequest
->
body
.
queryJob
,
0
);
}
...
...
source/libs/scheduler/inc/schInt.h
浏览文件 @
b6bd0b51
...
...
@@ -472,6 +472,7 @@ int32_t schLaunchLevelTasks(SSchJob *pJob, SSchLevel *level);
int32_t
schGetTaskFromList
(
SHashObj
*
pTaskList
,
uint64_t
taskId
,
SSchTask
**
pTask
);
int32_t
schInitTask
(
SSchJob
*
pJob
,
SSchTask
*
pTask
,
SSubplan
*
pPlan
,
SSchLevel
*
pLevel
,
int32_t
levelNum
);
int32_t
schSwitchTaskCandidateAddr
(
SSchJob
*
pJob
,
SSchTask
*
pTask
);
void
schDirectPostJobRes
(
SSchedulerReq
*
pReq
,
int32_t
errCode
);
extern
SSchDebug
gSCHDebug
;
...
...
source/libs/scheduler/src/schJob.c
浏览文件 @
b6bd0b51
...
...
@@ -763,6 +763,17 @@ int32_t schExecJob(SSchJob *pJob, SSchedulerReq *pReq) {
return
TSDB_CODE_SUCCESS
;
}
void
schDirectPostJobRes
(
SSchedulerReq
*
pReq
,
int32_t
errCode
)
{
if
(
NULL
==
pReq
||
pReq
->
syncReq
)
{
return
;
}
if
(
pReq
->
execFp
)
{
(
*
pReq
->
execFp
)(
NULL
,
pReq
->
cbParam
,
errCode
);
}
else
if
(
pReq
->
fetchFp
)
{
(
*
pReq
->
fetchFp
)(
NULL
,
pReq
->
cbParam
,
errCode
);
}
}
void
schProcessOnOpEnd
(
SSchJob
*
pJob
,
SCH_OP_TYPE
type
,
SSchedulerReq
*
pReq
,
int32_t
errCode
)
{
int32_t
op
=
0
;
...
...
@@ -801,17 +812,13 @@ void schProcessOnOpEnd(SSchJob *pJob, SCH_OP_TYPE type, SSchedulerReq* pReq, int
int32_t
schProcessOnOpBegin
(
SSchJob
*
pJob
,
SCH_OP_TYPE
type
,
SSchedulerReq
*
pReq
)
{
int32_t
code
=
0
;
int8_t
status
=
0
;
if
(
schJobNeedToStop
(
pJob
,
&
status
))
{
SCH_JOB_ELOG
(
"abort op %s cause of job need to stop, status:%s"
,
schGetOpStr
(
type
),
jobTaskStatusStr
(
status
));
SCH_ERR_RET
(
TSDB_CODE_SCH_IGNORE_ERROR
);
}
int8_t
status
=
SCH_GET_JOB_STATUS
(
pJob
);
switch
(
type
)
{
case
SCH_OP_EXEC
:
if
(
SCH_OP_NULL
!=
atomic_val_compare_exchange_32
(
&
pJob
->
opStatus
.
op
,
SCH_OP_NULL
,
type
))
{
SCH_JOB_ELOG
(
"job already in %s operation"
,
schGetOpStr
(
pJob
->
opStatus
.
op
));
schDirectPostJobRes
(
pReq
,
TSDB_CODE_TSC_APP_ERROR
);
SCH_ERR_RET
(
TSDB_CODE_TSC_APP_ERROR
);
}
...
...
@@ -822,11 +829,16 @@ int32_t schProcessOnOpBegin(SSchJob* pJob, SCH_OP_TYPE type, SSchedulerReq* pReq
case
SCH_OP_FETCH
:
if
(
SCH_OP_NULL
!=
atomic_val_compare_exchange_32
(
&
pJob
->
opStatus
.
op
,
SCH_OP_NULL
,
type
))
{
SCH_JOB_ELOG
(
"job already in %s operation"
,
schGetOpStr
(
pJob
->
opStatus
.
op
));
schDirectPostJobRes
(
pReq
,
TSDB_CODE_TSC_APP_ERROR
);
SCH_ERR_RET
(
TSDB_CODE_TSC_APP_ERROR
);
}
SCH_JOB_DLOG
(
"job start %s operation"
,
schGetOpStr
(
pJob
->
opStatus
.
op
));
pJob
->
userRes
.
fetchRes
=
pReq
->
pFetchRes
;
pJob
->
userRes
.
fetchFp
=
pReq
->
fetchFp
;
pJob
->
userRes
.
cbParam
=
pReq
->
cbParam
;
pJob
->
opStatus
.
syncReq
=
pReq
->
syncReq
;
if
(
!
SCH_JOB_NEED_FETCH
(
pJob
))
{
...
...
@@ -839,10 +851,6 @@ int32_t schProcessOnOpBegin(SSchJob* pJob, SCH_OP_TYPE type, SSchedulerReq* pReq
SCH_ERR_RET
(
TSDB_CODE_SCH_STATUS_ERROR
);
}
pJob
->
userRes
.
fetchRes
=
pReq
->
pFetchRes
;
pJob
->
userRes
.
fetchFp
=
pReq
->
fetchFp
;
pJob
->
userRes
.
cbParam
=
pReq
->
cbParam
;
break
;
case
SCH_OP_GET_STATUS
:
if
(
pJob
->
status
<
JOB_TASK_STATUS_INIT
||
pJob
->
levelNum
<=
0
||
NULL
==
pJob
->
levels
)
{
...
...
@@ -855,6 +863,11 @@ int32_t schProcessOnOpBegin(SSchJob* pJob, SCH_OP_TYPE type, SSchedulerReq* pReq
SCH_ERR_RET
(
TSDB_CODE_TSC_APP_ERROR
);
}
if
(
schJobNeedToStop
(
pJob
,
&
status
))
{
SCH_JOB_ELOG
(
"abort op %s cause of job need to stop, status:%s"
,
schGetOpStr
(
type
),
jobTaskStatusStr
(
status
));
SCH_ERR_RET
(
TSDB_CODE_SCH_IGNORE_ERROR
);
}
return
TSDB_CODE_SUCCESS
;
}
...
...
source/libs/scheduler/src/schStatus.c
浏览文件 @
b6bd0b51
...
...
@@ -77,6 +77,7 @@ int32_t schHandleOpEndEvent(SSchJob* pJob, SCH_OP_TYPE type, SSchedulerReq* pReq
int32_t
code
=
errCode
;
if
(
NULL
==
pJob
)
{
schDirectPostJobRes
(
pReq
,
errCode
);
SCH_RET
(
code
);
}
...
...
source/libs/transport/src/transCli.c
浏览文件 @
b6bd0b51
...
...
@@ -573,8 +573,7 @@ static void cliRecvCb(uv_stream_t* handle, ssize_t nread, const uv_buf_t* buf) {
return
;
}
if
(
nread
<
0
)
{
tWarn
(
"%s conn %p read error:%s, ref:%d"
,
CONN_GET_INST_LABEL
(
conn
),
conn
,
uv_err_name
(
nread
),
T_REF_VAL_GET
(
conn
));
tWarn
(
"%s conn %p read error:%s, ref:%d"
,
CONN_GET_INST_LABEL
(
conn
),
conn
,
uv_err_name
(
nread
),
T_REF_VAL_GET
(
conn
));
conn
->
broken
=
true
;
cliHandleExcept
(
conn
);
}
...
...
@@ -650,7 +649,11 @@ static bool cliHandleNoResp(SCliConn* conn) {
return
res
;
}
static
void
cliSendCb
(
uv_write_t
*
req
,
int
status
)
{
SCliConn
*
pConn
=
req
->
data
;
SCliConn
*
pConn
=
req
&&
req
->
handle
?
req
->
handle
->
data
:
NULL
;
taosMemoryFree
(
req
);
if
(
pConn
==
NULL
)
{
return
;
}
if
(
status
==
0
)
{
tTrace
(
"%s conn %p data already was written out"
,
CONN_GET_INST_LABEL
(
pConn
),
pConn
);
...
...
@@ -708,8 +711,8 @@ void cliSend(SCliConn* pConn) {
CONN_SET_PERSIST_BY_APP
(
pConn
);
}
pConn
->
writeReq
.
data
=
pConn
;
uv_write
(
&
pConn
->
writeR
eq
,
(
uv_stream_t
*
)
pConn
->
stream
,
&
wb
,
1
,
cliSendCb
);
uv_write_t
*
req
=
taosMemoryCalloc
(
1
,
sizeof
(
uv_write_t
))
;
uv_write
(
r
eq
,
(
uv_stream_t
*
)
pConn
->
stream
,
&
wb
,
1
,
cliSendCb
);
return
;
_RETURN:
return
;
...
...
source/libs/transport/src/transSvr.c
浏览文件 @
b6bd0b51
...
...
@@ -265,8 +265,8 @@ static void uvHandleReq(SSvrConn* pConn) {
transMsg
.
info
.
refId
=
pConn
->
refId
;
transMsg
.
info
.
traceId
=
pHead
->
traceId
;
tGTrace
(
"%s handle %p conn:%p translated to app, refId:%"
PRIu64
,
transLabel
(
pTransInst
),
transMsg
.
info
.
handle
,
pConn
,
pConn
->
refId
);
tGTrace
(
"%s handle %p conn:%p translated to app, refId:%"
PRIu64
,
transLabel
(
pTransInst
),
transMsg
.
info
.
handle
,
pConn
,
pConn
->
refId
);
assert
(
transMsg
.
info
.
handle
!=
NULL
);
if
(
pHead
->
noResp
==
1
)
{
...
...
@@ -331,7 +331,10 @@ void uvOnTimeoutCb(uv_timer_t* handle) {
}
void
uvOnSendCb
(
uv_write_t
*
req
,
int
status
)
{
SSvrConn
*
conn
=
req
->
data
;
SSvrConn
*
conn
=
req
&&
req
->
handle
?
req
->
handle
->
data
:
NULL
;
taosMemoryFree
(
req
);
if
(
conn
==
NULL
)
return
;
if
(
status
==
0
)
{
tTrace
(
"conn %p data already was written on stream"
,
conn
);
if
(
!
transQueueEmpty
(
&
conn
->
srvMsgs
))
{
...
...
@@ -390,7 +393,6 @@ static void uvPrepareSendData(SSvrMsg* smsg, uv_buf_t* wb) {
pHead
->
traceId
=
pMsg
->
info
.
traceId
;
pHead
->
hasEpSet
=
pMsg
->
info
.
hasEpSet
;
if
(
pConn
->
status
==
ConnNormal
)
{
pHead
->
msgType
=
(
0
==
pMsg
->
msgType
?
pConn
->
inType
+
1
:
pMsg
->
msgType
);
}
else
{
...
...
@@ -433,7 +435,9 @@ static void uvStartSendRespInternal(SSvrMsg* smsg) {
uvPrepareSendData
(
smsg
,
&
wb
);
transRefSrvHandle
(
pConn
);
uv_write
(
&
pConn
->
pWriter
,
(
uv_stream_t
*
)
pConn
->
pTcp
,
&
wb
,
1
,
uvOnSendCb
);
uv_write_t
*
req
=
taosMemoryCalloc
(
1
,
sizeof
(
uv_write_t
));
uv_write
(
req
,
(
uv_stream_t
*
)
pConn
->
pTcp
,
&
wb
,
1
,
uvOnSendCb
);
}
static
void
uvStartSendResp
(
SSvrMsg
*
smsg
)
{
// impl
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录