Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
a939bc87
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22017
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看板
未验证
提交
a939bc87
编写于
5月 27, 2022
作者:
dengyihao
提交者:
GitHub
5月 27, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #12967 from taosdata/enh/defaultEpSet
enh: default ep set
上级
abcb0f5f
6e6dadf5
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
82 addition
and
10 deletion
+82
-10
include/libs/transport/trpc.h
include/libs/transport/trpc.h
+1
-0
source/client/src/clientMsgHandler.c
source/client/src/clientMsgHandler.c
+10
-4
source/libs/transport/inc/transComm.h
source/libs/transport/inc/transComm.h
+10
-1
source/libs/transport/src/trans.c
source/libs/transport/src/trans.c
+5
-0
source/libs/transport/src/transCli.c
source/libs/transport/src/transCli.c
+55
-4
source/libs/transport/src/transSrv.c
source/libs/transport/src/transSrv.c
+1
-1
未找到文件。
include/libs/transport/trpc.h
浏览文件 @
a939bc87
...
...
@@ -124,6 +124,7 @@ void rpcSendRedirectRsp(void *pConn, const SEpSet *pEpSet);
void
rpcSendRequestWithCtx
(
void
*
thandle
,
const
SEpSet
*
pEpSet
,
SRpcMsg
*
pMsg
,
int64_t
*
rid
,
SRpcCtx
*
ctx
);
int32_t
rpcGetConnInfo
(
void
*
thandle
,
SRpcConnInfo
*
pInfo
);
void
rpcSendRecv
(
void
*
shandle
,
SEpSet
*
pEpSet
,
SRpcMsg
*
pReq
,
SRpcMsg
*
pRsp
);
void
rpcSetDefaultAddr
(
void
*
thandle
,
const
char
*
ip
,
const
char
*
fqdn
);
#ifdef __cplusplus
}
...
...
source/client/src/clientMsgHandler.c
浏览文件 @
a939bc87
...
...
@@ -58,7 +58,12 @@ int32_t processConnectRsp(void* param, const SDataBuf* pMsg, int32_t code) {
return
code
;
}
if
(
connectRsp
.
dnodeNum
>
1
&&
!
isEpsetEqual
(
&
pTscObj
->
pAppInfo
->
mgmtEp
.
epSet
,
&
connectRsp
.
epSet
))
{
if
(
connectRsp
.
dnodeNum
==
1
)
{
SEpSet
srcEpSet
=
getEpSet_s
(
&
pTscObj
->
pAppInfo
->
mgmtEp
);
SEpSet
dstEpSet
=
connectRsp
.
epSet
;
rpcSetDefaultAddr
(
pTscObj
->
pAppInfo
->
pTransporter
,
srcEpSet
.
eps
[
srcEpSet
.
inUse
].
fqdn
,
dstEpSet
.
eps
[
dstEpSet
.
inUse
].
fqdn
);
}
else
if
(
connectRsp
.
dnodeNum
>
1
&&
!
isEpsetEqual
(
&
pTscObj
->
pAppInfo
->
mgmtEp
.
epSet
,
&
connectRsp
.
epSet
))
{
updateEpSet_s
(
&
pTscObj
->
pAppInfo
->
mgmtEp
,
&
connectRsp
.
epSet
);
}
...
...
@@ -126,9 +131,10 @@ int32_t processUseDbRsp(void* param, const SDataBuf* pMsg, int32_t code) {
if
(
usedbRsp
.
vgVersion
>=
0
)
{
uint64_t
clusterId
=
pRequest
->
pTscObj
->
pAppInfo
->
clusterId
;
int32_t
code1
=
catalogGetHandle
(
clusterId
,
&
pCatalog
);
int32_t
code1
=
catalogGetHandle
(
clusterId
,
&
pCatalog
);
if
(
code1
!=
TSDB_CODE_SUCCESS
)
{
tscWarn
(
"0x%"
PRIx64
"catalogGetHandle failed, clusterId:%"
PRIx64
", error:%s"
,
pRequest
->
requestId
,
clusterId
,
tstrerror
(
code1
));
tscWarn
(
"0x%"
PRIx64
"catalogGetHandle failed, clusterId:%"
PRIx64
", error:%s"
,
pRequest
->
requestId
,
clusterId
,
tstrerror
(
code1
));
}
else
{
catalogRemoveDB
(
pCatalog
,
usedbRsp
.
db
,
usedbRsp
.
uid
);
}
...
...
@@ -158,7 +164,7 @@ int32_t processUseDbRsp(void* param, const SDataBuf* pMsg, int32_t code) {
if
(
output
.
dbVgroup
)
taosHashCleanup
(
output
.
dbVgroup
->
vgHash
);
taosMemoryFreeClear
(
output
.
dbVgroup
);
tscError
(
"0x%"
PRIx64
" failed to build use db output since %s"
,
pRequest
->
requestId
,
terrstr
());
tscError
(
"0x%"
PRIx64
" failed to build use db output since %s"
,
pRequest
->
requestId
,
terrstr
());
}
else
if
(
output
.
dbVgroup
)
{
struct
SCatalog
*
pCatalog
=
NULL
;
...
...
source/libs/transport/inc/transComm.h
浏览文件 @
a939bc87
...
...
@@ -104,6 +104,13 @@ typedef SRpcCtxVal STransCtxVal;
typedef
SRpcInfo
STrans
;
typedef
SRpcConnInfo
STransHandleInfo
;
/*convet from fqdn to ip */
typedef
struct
SCvtAddr
{
char
ip
[
TSDB_FQDN_LEN
];
char
fqdn
[
TSDB_FQDN_LEN
];
bool
cvt
;
}
SCvtAddr
;
typedef
struct
{
SEpSet
epSet
;
// ip list provided by app
void
*
ahandle
;
// handle provided by app
...
...
@@ -115,6 +122,7 @@ typedef struct {
STransCtx
appCtx
;
//
STransMsg
*
pRsp
;
// for synchronous API
tsem_t
*
pSem
;
// for synchronous API
SCvtAddr
cvtAddr
;
int
hThrdIdx
;
}
STransConnCtx
;
...
...
@@ -155,7 +163,7 @@ typedef struct {
#pragma pack(pop)
typedef
enum
{
Normal
,
Quit
,
Release
,
Register
}
STransMsgType
;
typedef
enum
{
Normal
,
Quit
,
Release
,
Register
,
Update
}
STransMsgType
;
typedef
enum
{
ConnNormal
,
ConnAcquire
,
ConnRelease
,
ConnBroken
,
ConnInPool
}
ConnStatus
;
#define container_of(ptr, type, member) ((type*)((char*)(ptr)-offsetof(type, member)))
...
...
@@ -231,6 +239,7 @@ void transSendRecv(void* shandle, const SEpSet* pEpSet, STransMsg* pMsg, STransM
void
transSendResponse
(
const
STransMsg
*
msg
);
void
transRegisterMsg
(
const
STransMsg
*
msg
);
int
transGetConnInfo
(
void
*
thandle
,
STransHandleInfo
*
pInfo
);
void
transSetDefaultAddr
(
void
*
shandle
,
const
char
*
ip
,
const
char
*
fqdn
);
void
*
transInitServer
(
uint32_t
ip
,
uint32_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
);
void
*
transInitClient
(
uint32_t
ip
,
uint32_t
port
,
char
*
label
,
int
numOfThreads
,
void
*
fp
,
void
*
shandle
);
...
...
source/libs/transport/src/trans.c
浏览文件 @
a939bc87
...
...
@@ -154,6 +154,11 @@ void rpcReleaseHandle(void* handle, int8_t type) {
(
*
transReleaseHandle
[
type
])(
handle
);
}
void
rpcSetDefaultAddr
(
void
*
thandle
,
const
char
*
ip
,
const
char
*
fqdn
)
{
// later
transSetDefaultAddr
(
thandle
,
ip
,
fqdn
);
}
int32_t
rpcInit
()
{
// impl later
return
0
;
...
...
source/libs/transport/src/transCli.c
浏览文件 @
a939bc87
...
...
@@ -63,7 +63,10 @@ typedef struct SCliThrdObj {
SDelayQueue
*
delayQueue
;
uint64_t
nextTimeout
;
// next timeout
void
*
pTransInst
;
//
bool
quit
;
SCvtAddr
cvtAddr
;
bool
quit
;
}
SCliThrdObj
;
typedef
struct
SCliObj
{
...
...
@@ -103,6 +106,7 @@ static void cliDestroyConn(SCliConn* pConn, bool clear /*clear tcp handle o
static
void
cliDestroy
(
uv_handle_t
*
handle
);
static
void
cliSend
(
SCliConn
*
pConn
);
void
cliMayCvtFqdnToIp
(
SEpSet
*
pEpSet
,
SCvtAddr
*
pCvtAddr
);
/*
* set TCP connection timeout per-socket level
*/
...
...
@@ -116,7 +120,9 @@ static void cliHandleExcept(SCliConn* conn);
static
void
cliHandleReq
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleQuit
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleRelease
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
(
*
cliAsyncHandle
[])(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
=
{
cliHandleReq
,
cliHandleQuit
,
cliHandleRelease
};
static
void
cliHandleUpdate
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
(
*
cliAsyncHandle
[])(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
=
{
cliHandleReq
,
cliHandleQuit
,
cliHandleRelease
,
NULL
,
cliHandleUpdate
};
static
void
cliSendQuit
(
SCliThrdObj
*
thrd
);
static
void
destroyUserdata
(
STransMsg
*
userdata
);
...
...
@@ -697,6 +703,12 @@ static void cliHandleRelease(SCliMsg* pMsg, SCliThrdObj* pThrd) {
transUnrefCliHandle
(
conn
);
}
}
static
void
cliHandleUpdate
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
STransConnCtx
*
pCtx
=
pMsg
->
ctx
;
pThrd
->
cvtAddr
=
pCtx
->
cvtAddr
;
destroyCmsg
(
pMsg
);
}
SCliConn
*
cliGetConn
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
SCliConn
*
conn
=
NULL
;
...
...
@@ -716,7 +728,17 @@ SCliConn* cliGetConn(SCliMsg* pMsg, SCliThrdObj* pThrd) {
}
return
conn
;
}
void
cliMayCvtFqdnToIp
(
SEpSet
*
pEpSet
,
SCvtAddr
*
pCvtAddr
)
{
if
(
pCvtAddr
->
cvt
==
false
)
{
return
;
}
for
(
int
i
=
0
;
i
<
pEpSet
->
numOfEps
&&
pEpSet
->
numOfEps
==
1
;
i
++
)
{
if
(
strncmp
(
pEpSet
->
eps
[
i
].
fqdn
,
pCvtAddr
->
fqdn
,
TSDB_FQDN_LEN
)
==
0
)
{
memset
(
pEpSet
->
eps
[
i
].
fqdn
,
0
,
TSDB_FQDN_LEN
);
memcpy
(
pEpSet
->
eps
[
i
].
fqdn
,
pCvtAddr
->
ip
,
TSDB_FQDN_LEN
);
}
}
}
void
cliHandleReq
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
uint64_t
et
=
taosGetTimestampUs
();
uint64_t
el
=
et
-
pMsg
->
st
;
...
...
@@ -726,6 +748,8 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
STransConnCtx
*
pCtx
=
pMsg
->
ctx
;
STrans
*
pTransInst
=
pThrd
->
pTransInst
;
cliMayCvtFqdnToIp
(
&
pCtx
->
epSet
,
&
pThrd
->
cvtAddr
);
SCliConn
*
conn
=
cliGetConn
(
pMsg
,
pThrd
);
if
(
conn
!=
NULL
)
{
conn
->
hThrdIdx
=
pCtx
->
hThrdIdx
;
...
...
@@ -855,7 +879,6 @@ static SCliThrdObj* createThrdObj() {
pThrd
->
timer
.
data
=
pThrd
;
pThrd
->
pool
=
createConnPool
(
4
);
transDQCreate
(
pThrd
->
loop
,
&
pThrd
->
delayQueue
);
pThrd
->
quit
=
false
;
...
...
@@ -1088,4 +1111,32 @@ void transSendRecv(void* shandle, const SEpSet* pEpSet, STransMsg* pReq, STransM
taosMemoryFree
(
pSem
);
}
/*
*
**/
void
transSetDefaultAddr
(
void
*
ahandle
,
const
char
*
ip
,
const
char
*
fqdn
)
{
STrans
*
pTransInst
=
ahandle
;
SCvtAddr
cvtAddr
=
{
0
};
if
(
ip
!=
NULL
&&
fqdn
!=
NULL
)
{
memcpy
(
cvtAddr
.
ip
,
ip
,
strlen
(
ip
));
memcpy
(
cvtAddr
.
fqdn
,
fqdn
,
strlen
(
fqdn
));
cvtAddr
.
cvt
=
true
;
}
for
(
int
i
=
0
;
i
<
pTransInst
->
numOfThreads
;
i
++
)
{
STransConnCtx
*
pCtx
=
taosMemoryCalloc
(
1
,
sizeof
(
STransConnCtx
));
pCtx
->
hThrdIdx
=
i
;
pCtx
->
cvtAddr
=
cvtAddr
;
SCliMsg
*
cliMsg
=
taosMemoryCalloc
(
1
,
sizeof
(
SCliMsg
));
cliMsg
->
ctx
=
pCtx
;
cliMsg
->
type
=
Update
;
SCliThrdObj
*
thrd
=
((
SCliObj
*
)
pTransInst
->
tcphandle
)
->
pThreadObj
[
i
];
tDebug
(
"update epset at thread:%d, threadID:%"
PRId64
""
,
i
,
thrd
->
thread
);
tsem_t
*
pSem
=
pCtx
->
pSem
;
transSendAsync
(
thrd
->
asyncPool
,
&
(
cliMsg
->
q
));
}
}
#endif
source/libs/transport/src/transSrv.c
浏览文件 @
a939bc87
...
...
@@ -146,7 +146,7 @@ static void uvHandleRelease(SSrvMsg* msg, SWorkThrdObj* thrd);
static
void
uvHandleResp
(
SSrvMsg
*
msg
,
SWorkThrdObj
*
thrd
);
static
void
uvHandleRegister
(
SSrvMsg
*
msg
,
SWorkThrdObj
*
thrd
);
static
void
(
*
transAsyncHandle
[])(
SSrvMsg
*
msg
,
SWorkThrdObj
*
thrd
)
=
{
uvHandleResp
,
uvHandleQuit
,
uvHandleRelease
,
uvHandleRegister
};
uvHandleRegister
,
NULL
};
static
int32_t
exHandlesMgt
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录