Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
ba12601d
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看板
提交
ba12601d
编写于
3月 16, 2022
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/3.0' into feature/shm
上级
4b7baac9
7f963b8a
变更
51
隐藏空白更改
内联
并排
Showing
51 changed file
with
923 addition
and
230 deletion
+923
-230
Jenkinsfile2
Jenkinsfile2
+4
-2
cmake/cmake.define
cmake/cmake.define
+9
-2
cmake/cmake.platform
cmake/cmake.platform
+40
-17
include/libs/transport/trpc.h
include/libs/transport/trpc.h
+6
-5
include/os/os.h
include/os/os.h
+10
-0
include/os/osEok.h
include/os/osEok.h
+93
-0
include/os/osFile.h
include/os/osFile.h
+18
-1
include/os/osSemaphore.h
include/os/osSemaphore.h
+6
-6
include/os/osSocket.h
include/os/osSocket.h
+32
-3
include/os/osSysinfo.h
include/os/osSysinfo.h
+2
-1
source/client/src/clientMsgHandler.c
source/client/src/clientMsgHandler.c
+3
-3
source/common/src/tdatablock.c
source/common/src/tdatablock.c
+5
-4
source/common/src/trow.c
source/common/src/trow.c
+4
-4
source/common/src/ttszip.c
source/common/src/ttszip.c
+4
-0
source/dnode/mnode/impl/src/mndConsumer.c
source/dnode/mnode/impl/src/mndConsumer.c
+6
-6
source/dnode/mnode/impl/src/mndSubscribe.c
source/dnode/mnode/impl/src/mndSubscribe.c
+7
-7
source/dnode/mnode/sdb/src/sdbFile.c
source/dnode/mnode/sdb/src/sdbFile.c
+1
-1
source/libs/catalog/src/catalog.c
source/libs/catalog/src/catalog.c
+4
-4
source/libs/executor/src/dataSinkMgt.c
source/libs/executor/src/dataSinkMgt.c
+1
-0
source/libs/executor/src/tlinearhash.c
source/libs/executor/src/tlinearhash.c
+2
-2
source/libs/index/src/index.c
source/libs/index/src/index.c
+1
-0
source/libs/index/src/index_cache.c
source/libs/index/src/index_cache.c
+3
-0
source/libs/index/src/index_fst.c
source/libs/index/src/index_fst.c
+6
-0
source/libs/parser/src/parInsert.c
source/libs/parser/src/parInsert.c
+2
-0
source/libs/planner/src/planLogicCreater.c
source/libs/planner/src/planLogicCreater.c
+1
-0
source/libs/scalar/src/filter.c
source/libs/scalar/src/filter.c
+2
-2
source/libs/scalar/src/scalar.c
source/libs/scalar/src/scalar.c
+3
-0
source/libs/scheduler/src/schFlowCtrl.c
source/libs/scheduler/src/schFlowCtrl.c
+3
-1
source/libs/sync/src/syncAppendEntriesReply.c
source/libs/sync/src/syncAppendEntriesReply.c
+1
-1
source/libs/sync/src/syncEnv.c
source/libs/sync/src/syncEnv.c
+3
-3
source/libs/sync/src/syncMain.c
source/libs/sync/src/syncMain.c
+14
-14
source/libs/sync/src/syncMessage.c
source/libs/sync/src/syncMessage.c
+27
-27
source/libs/sync/src/syncRaftEntry.c
source/libs/sync/src/syncRaftEntry.c
+8
-8
source/libs/sync/src/syncRaftLog.c
source/libs/sync/src/syncRaftLog.c
+7
-3
source/libs/sync/src/syncRequestVoteReply.c
source/libs/sync/src/syncRequestVoteReply.c
+1
-1
source/libs/sync/src/syncUtil.c
source/libs/sync/src/syncUtil.c
+2
-2
source/libs/sync/src/syncVoteMgr.c
source/libs/sync/src/syncVoteMgr.c
+11
-11
source/libs/tfs/src/tfs.c
source/libs/tfs/src/tfs.c
+1
-1
source/libs/transport/inc/transComm.h
source/libs/transport/inc/transComm.h
+6
-4
source/libs/transport/inc/transportInt.h
source/libs/transport/inc/transportInt.h
+1
-0
source/libs/transport/src/trans.c
source/libs/transport/src/trans.c
+11
-3
source/libs/transport/src/transCli.c
source/libs/transport/src/transCli.c
+80
-18
source/libs/transport/src/transComm.c
source/libs/transport/src/transComm.c
+4
-2
source/libs/transport/src/transSrv.c
source/libs/transport/src/transSrv.c
+31
-8
source/libs/transport/test/transUT.cc
source/libs/transport/test/transUT.cc
+212
-35
source/libs/wal/src/walRead.c
source/libs/wal/src/walRead.c
+1
-1
source/os/src/osFile.c
source/os/src/osFile.c
+5
-12
source/os/src/osSocket.c
source/os/src/osSocket.c
+9
-3
source/util/src/tconfig.c
source/util/src/tconfig.c
+2
-1
source/util/src/ttimer.c
source/util/src/ttimer.c
+1
-1
tests/script/tsim/query/interval.sim
tests/script/tsim/query/interval.sim
+207
-0
未找到文件。
Jenkinsfile2
浏览文件 @
ba12601d
...
@@ -35,6 +35,7 @@ def abort_previous(){
...
@@ -35,6 +35,7 @@ def abort_previous(){
def pre_test(){
def pre_test(){
sh'hostname'
sh'hostname'
sh '''
sh '''
date
sudo rmtaos || echo "taosd has not installed"
sudo rmtaos || echo "taosd has not installed"
'''
'''
sh '''
sh '''
...
@@ -60,8 +61,9 @@ def pre_test(){
...
@@ -60,8 +61,9 @@ def pre_test(){
sh '''
sh '''
cd ${WKC}
cd ${WKC}
git checkout 3.0
git checkout 3.0
[ -d contrib/bdb ]
&&
cd contrib/bdb
&&
git clean -fxd
&&
cd ../..
'''
'''
}
}
else{
else{
sh '''
sh '''
cd ${WKC}
cd ${WKC}
...
@@ -98,7 +100,7 @@ pipeline {
...
@@ -98,7 +100,7 @@ pipeline {
}
}
stages {
stages {
stage('pre_build'){
stage('pre_build'){
agent{label
'slave3_0'
}
agent{label
" slave3_0 || slave15 || slave16 || slave17 "
}
options { skipDefaultCheckout() }
options { skipDefaultCheckout() }
when {
when {
changeRequest()
changeRequest()
...
...
cmake/cmake.define
浏览文件 @
ba12601d
...
@@ -36,7 +36,14 @@ IF (TD_WINDOWS)
...
@@ -36,7 +36,14 @@ IF (TD_WINDOWS)
ENDIF ()
ENDIF ()
ELSE ()
ELSE ()
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -fPIC -gdwarf-2 -msse4.2 -mfma -g3")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -fPIC -gdwarf-2 -g3")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -fPIC -gdwarf-2 -msse4.2 -mfma -g3")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror -fPIC -gdwarf-2 -g3")
MESSAGE("System processor ID: ${CMAKE_SYSTEM_PROCESSOR}")
IF (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64")
ADD_DEFINITIONS("-D_TD_ARM_")
ELSE ()
ADD_DEFINITIONS("-msse4.2 -mfma")
ENDIF ()
ENDIF ()
ENDIF ()
cmake/cmake.platform
浏览文件 @
ba12601d
...
@@ -7,30 +7,52 @@ SET(TD_LINUX FALSE)
...
@@ -7,30 +7,52 @@ SET(TD_LINUX FALSE)
SET(TD_WINDOWS FALSE)
SET(TD_WINDOWS FALSE)
SET(TD_DARWIN FALSE)
SET(TD_DARWIN FALSE)
IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
MESSAGE("Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
if(CMAKE_COMPILER_IS_GNUCXX MATCHES 1)
set(CXX_COMPILER_IS_GNU TRUE)
else()
set(CXX_COMPILER_IS_GNU FALSE)
endif()
SET(TD_LINUX TRUE)
MESSAGE("Current system name is ${CMAKE_SYSTEM_NAME}.")
SET(OSTYPE "Linux")
ADD_DEFINITIONS("-DLINUX")
IF (${CMAKE_SIZEOF_VOID_P} MATCHES 8)
IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
SET(TD_LINUX_64 TRUE)
IF (${CXX_COMPILER_IS_GNU})
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
ELSE ()
ELSE ()
SET(TD_LINUX_32 TRUE)
ADD_DEFINITIONS("-Wno-tautological-constant-out-of-range-compare -Wno-pointer-sign -Wno-unknown-warning-option")
set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -undefined dynamic_lookup")
set(CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} -undefined dynamic_lookup")
ENDIF ()
ENDIF ()
ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin
")
IF (${CMAKE_SYSTEM_NAME} MATCHES "Linux
")
SET(TD_DARWIN TRUE)
SET(TD_LINUX TRUE)
SET(OSTYPE "macOS")
SET(OSTYPE "Linux")
ADD_DEFINITIONS("-DDARWIN")
ADD_DEFINITIONS("-DLINUX")
IF (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64")
MESSAGE("Current system arch is arm64")
IF (${CMAKE_SIZEOF_VOID_P} MATCHES 8)
SET(TD_DARWIN_64 TRUE)
SET(TD_LINUX_64 TRUE)
ADD_DEFINITIONS("-D_TD_DARWIN_64")
ELSE ()
ENDIF ()
SET(TD_LINUX_32 TRUE)
ENDIF ()
ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
ADD_DEFINITIONS("-DHAVE_UNISTD_H")
SET(TD_DARWIN TRUE)
SET(OSTYPE "macOS")
ADD_DEFINITIONS("-DDARWIN -Wno-tautological-pointer-compare -Wno-return-type")
MESSAGE("Current system processor is ${CMAKE_SYSTEM_PROCESSOR}.")
IF (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm64" OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
MESSAGE("Current system arch is arm64")
SET(TD_DARWIN_64 TRUE)
ADD_DEFINITIONS("-D_TD_DARWIN_64")
ENDIF ()
ADD_DEFINITIONS("-DHAVE_UNISTD_H")
ENDIF ()
ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
...
@@ -45,6 +67,7 @@ ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
...
@@ -45,6 +67,7 @@ ELSEIF (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
SET(TD_WINDOWS_32 TRUE)
SET(TD_WINDOWS_32 TRUE)
ADD_DEFINITIONS("-D_TD_WINDOWS_32")
ADD_DEFINITIONS("-D_TD_WINDOWS_32")
ENDIF ()
ENDIF ()
ENDIF()
ENDIF()
MESSAGE("C Compiler ID: ${CMAKE_C_COMPILER_ID}")
MESSAGE("C Compiler ID: ${CMAKE_C_COMPILER_ID}")
...
...
include/libs/transport/trpc.h
浏览文件 @
ba12601d
...
@@ -29,7 +29,6 @@ extern "C" {
...
@@ -29,7 +29,6 @@ extern "C" {
extern
int
tsRpcHeadSize
;
extern
int
tsRpcHeadSize
;
typedef
struct
SRpcConnInfo
{
typedef
struct
SRpcConnInfo
{
uint32_t
clientIp
;
uint32_t
clientIp
;
uint16_t
clientPort
;
uint16_t
clientPort
;
...
@@ -78,9 +77,11 @@ typedef struct SRpcInit {
...
@@ -78,9 +77,11 @@ typedef struct SRpcInit {
// call back to keep conn or not
// call back to keep conn or not
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
);
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
);
// to support Send messages multiple times on a link
// to support Send messages multiple times on a link
//
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
);
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
);
// call back to handle except when query/fetch in progress
bool
(
*
efp
)(
void
*
parent
,
tmsg_t
msgType
);
void
*
parent
;
void
*
parent
;
}
SRpcInit
;
}
SRpcInit
;
...
@@ -101,7 +102,7 @@ int rpcReportProgress(void *pConn, char *pCont, int contLen);
...
@@ -101,7 +102,7 @@ int rpcReportProgress(void *pConn, char *pCont, int contLen);
void
rpcCancelRequest
(
int64_t
rid
);
void
rpcCancelRequest
(
int64_t
rid
);
// just release client conn to rpc instance, no close sock
// just release client conn to rpc instance, no close sock
void
rpcReleaseHandle
(
void
*
handle
);
void
rpcReleaseHandle
(
void
*
handle
,
int8_t
type
);
void
rpcRefHandle
(
void
*
handle
,
int8_t
type
);
void
rpcRefHandle
(
void
*
handle
,
int8_t
type
);
void
rpcUnrefHandle
(
void
*
handle
,
int8_t
type
);
void
rpcUnrefHandle
(
void
*
handle
,
int8_t
type
);
...
...
include/os/os.h
浏览文件 @
ba12601d
...
@@ -22,6 +22,8 @@ extern "C" {
...
@@ -22,6 +22,8 @@ extern "C" {
#include <assert.h>
#include <assert.h>
#include <ctype.h>
#include <ctype.h>
#include <pthread.h>
#include <semaphore.h>
#if !defined(WINDOWS)
#if !defined(WINDOWS)
#include <unistd.h>
#include <unistd.h>
...
@@ -34,7 +36,12 @@ extern "C" {
...
@@ -34,7 +36,12 @@ extern "C" {
#include <sys/utsname.h>
#include <sys/utsname.h>
#include <sys/param.h>
#include <sys/param.h>
#include <sys/mman.h>
#include <sys/mman.h>
#if defined(DARWIN)
#else
#include <sys/prctl.h>
#include <sys/prctl.h>
#include <argp.h>
#endif
#endif
#endif
...
@@ -54,9 +61,12 @@ extern "C" {
...
@@ -54,9 +61,12 @@ extern "C" {
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/types.h>
#include <wchar.h>
#include <wchar.h>
#include <termios.h>
#include <wctype.h>
#include <wctype.h>
...
...
include/os/osEok.h
0 → 100644
浏览文件 @
ba12601d
/*
* Copyright (c) 2019 TAOS Data, Inc. <jhtao@taosdata.com>
*
* This program is free software: you can use, redistribute, and/or modify
* it under the terms of the GNU Affero General Public License, version 3
* or later ("AGPL"), as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef TDENGINE_OS_EOK_H
#define TDENGINE_OS_EOK_H
#include <stdint.h>
#ifdef __cplusplus
extern
"C"
{
#endif
#ifdef __APPLE__
enum
EPOLL_EVENTS
{
EPOLLIN
=
0x001
,
#define EPOLLIN EPOLLIN
EPOLLPRI
=
0x002
,
#define EPOLLPRI EPOLLPRI
EPOLLOUT
=
0x004
,
#define EPOLLOUT EPOLLOUT
EPOLLRDNORM
=
0x040
,
#define EPOLLRDNORM EPOLLRDNORM
EPOLLRDBAND
=
0x080
,
#define EPOLLRDBAND EPOLLRDBAND
EPOLLWRNORM
=
0x100
,
#define EPOLLWRNORM EPOLLWRNORM
EPOLLWRBAND
=
0x200
,
#define EPOLLWRBAND EPOLLWRBAND
EPOLLMSG
=
0x400
,
#define EPOLLMSG EPOLLMSG
EPOLLERR
=
0x008
,
#define EPOLLERR EPOLLERR
EPOLLHUP
=
0x010
,
#define EPOLLHUP EPOLLHUP
EPOLLRDHUP
=
0x2000
,
#define EPOLLRDHUP EPOLLRDHUP
EPOLLEXCLUSIVE
=
1u
<<
28
,
#define EPOLLEXCLUSIVE EPOLLEXCLUSIVE
EPOLLWAKEUP
=
1u
<<
29
,
#define EPOLLWAKEUP EPOLLWAKEUP
EPOLLONESHOT
=
1u
<<
30
,
#define EPOLLONESHOT EPOLLONESHOT
EPOLLET
=
1u
<<
31
#define EPOLLET EPOLLET
};
/* Valid opcodes ( "op" parameter ) to issue to epoll_ctl(). */
#define EPOLL_CTL_ADD 1
/* Add a file descriptor to the interface. */
#define EPOLL_CTL_DEL 2
/* Remove a file descriptor from the interface. */
#define EPOLL_CTL_MOD 3
/* Change file descriptor epoll_event structure. */
typedef
union
epoll_data
{
void
*
ptr
;
int
fd
;
uint32_t
u32
;
uint64_t
u64
;
}
epoll_data_t
;
struct
epoll_event
{
uint32_t
events
;
/* Epoll events */
epoll_data_t
data
;
/* User data variable */
};
int
epoll_create
(
int
size
);
int
epoll_ctl
(
int
epfd
,
int
op
,
int
fd
,
struct
epoll_event
*
event
);
int
epoll_wait
(
int
epfd
,
struct
epoll_event
*
events
,
int
maxevents
,
int
timeout
);
int
epoll_close
(
int
epfd
);
#endif // __APPLE__
#ifdef __cplusplus
}
#endif
#endif // _eok_h_fd274616_996c_400e_9023_ae70be881fa3_
include/os/osFile.h
浏览文件 @
ba12601d
...
@@ -49,6 +49,15 @@ int64_t taosRead(FileFd fd, void *buf, int64_t count);
...
@@ -49,6 +49,15 @@ int64_t taosRead(FileFd fd, void *buf, int64_t count);
#define PATH_MAX 256
#define PATH_MAX 256
#endif
#endif
typedef
int32_t
FileFd
;
typedef
struct
TdFile
{
pthread_rwlock_t
rwlock
;
int
refId
;
FileFd
fd
;
FILE
*
fp
;
}
*
TdFilePtr
,
TdFile
;
typedef
struct
TdFile
*
TdFilePtr
;
typedef
struct
TdFile
*
TdFilePtr
;
#define TD_FILE_CTEATE 0x0001
#define TD_FILE_CTEATE 0x0001
...
@@ -101,8 +110,16 @@ int64_t taosCopyFile(const char *from, const char *to);
...
@@ -101,8 +110,16 @@ int64_t taosCopyFile(const char *from, const char *to);
int32_t
taosRemoveFile
(
const
char
*
path
);
int32_t
taosRemoveFile
(
const
char
*
path
);
void
taosGetTmpfilePath
(
const
char
*
inputTmpDir
,
const
char
*
fileNamePrefix
,
char
*
dstPath
);
void
taosGetTmpfilePath
(
const
char
*
inputTmpDir
,
const
char
*
fileNamePrefix
,
char
*
dstPath
);
#if defined(_TD_DARWIN_64)
typedef
int32_t
SocketFd
;
int64_t
taosSendFile
(
SocketFd
fdDst
,
FileFd
pFileSrc
,
int64_t
*
offset
,
int64_t
size
);
int64_t
taosFSendFile
(
FILE
*
pFileOut
,
FILE
*
pFileIn
,
int64_t
*
offset
,
int64_t
size
);
#else
int64_t
taosSendFile
(
SocketFd
fdDst
,
TdFilePtr
pFileSrc
,
int64_t
*
offset
,
int64_t
size
);
int64_t
taosFSendFile
(
TdFilePtr
pFileOut
,
TdFilePtr
pFileIn
,
int64_t
*
offset
,
int64_t
size
);
int64_t
taosFSendFile
(
TdFilePtr
pFileOut
,
TdFilePtr
pFileIn
,
int64_t
*
offset
,
int64_t
size
);
#endif
void
*
taosMmapReadOnlyFile
(
TdFilePtr
pFile
,
int64_t
length
);
void
*
taosMmapReadOnlyFile
(
TdFilePtr
pFile
,
int64_t
length
);
bool
taosValidFile
(
TdFilePtr
pFile
);
bool
taosValidFile
(
TdFilePtr
pFile
);
...
...
include/os/osSemaphore.h
浏览文件 @
ba12601d
...
@@ -38,12 +38,12 @@ extern "C" {
...
@@ -38,12 +38,12 @@ extern "C" {
#endif
#endif
#if defined (_TD_DARWIN_64)
#if defined (_TD_DARWIN_64)
#define pthread_rwlock_t pthread_mutex_t
//
#define pthread_rwlock_t pthread_mutex_t
#define pthread_rwlock_init(lock, NULL) pthread_mutex_init(lock, NULL)
//
#define pthread_rwlock_init(lock, NULL) pthread_mutex_init(lock, NULL)
#define pthread_rwlock_destroy(lock) pthread_mutex_destroy(lock)
//
#define pthread_rwlock_destroy(lock) pthread_mutex_destroy(lock)
#define pthread_rwlock_wrlock(lock) pthread_mutex_lock(lock)
//
#define pthread_rwlock_wrlock(lock) pthread_mutex_lock(lock)
#define pthread_rwlock_rdlock(lock) pthread_mutex_lock(lock)
//
#define pthread_rwlock_rdlock(lock) pthread_mutex_lock(lock)
#define pthread_rwlock_unlock(lock) pthread_mutex_unlock(lock)
//
#define pthread_rwlock_unlock(lock) pthread_mutex_unlock(lock)
#define pthread_spinlock_t pthread_mutex_t
#define pthread_spinlock_t pthread_mutex_t
#define pthread_spin_init(lock, NULL) pthread_mutex_init(lock, NULL)
#define pthread_spin_init(lock, NULL) pthread_mutex_init(lock, NULL)
...
...
include/os/osSocket.h
浏览文件 @
ba12601d
...
@@ -33,8 +33,15 @@
...
@@ -33,8 +33,15 @@
#include <winbase.h>
#include <winbase.h>
#include <Winsock2.h>
#include <Winsock2.h>
#else
#else
#include <netinet/in.h>
#include <netinet/in.h>
#include <sys/epoll.h>
#include <sys/socket.h>
#if defined(_TD_DARWIN_64)
#include <osEok.h>
#else
#include <netinet/in.h>
#include <sys/epoll.h>
#endif
#endif
#endif
#ifdef __cplusplus
#ifdef __cplusplus
...
@@ -49,7 +56,29 @@ extern "C" {
...
@@ -49,7 +56,29 @@ extern "C" {
#endif
#endif
#if defined(_TD_DARWIN_64)
#if defined(_TD_DARWIN_64)
#define htobe64 htonll
// #define htobe64 htonll
# include <libkern/OSByteOrder.h>
# define htobe16(x) OSSwapHostToBigInt16(x)
# define htole16(x) OSSwapHostToLittleInt16(x)
# define be16toh(x) OSSwapBigToHostInt16(x)
# define le16toh(x) OSSwapLittleToHostInt16(x)
# define htobe32(x) OSSwapHostToBigInt32(x)
# define htole32(x) OSSwapHostToLittleInt32(x)
# define be32toh(x) OSSwapBigToHostInt32(x)
# define le32toh(x) OSSwapLittleToHostInt32(x)
# define htobe64(x) OSSwapHostToBigInt64(x)
# define htole64(x) OSSwapHostToLittleInt64(x)
# define be64toh(x) OSSwapBigToHostInt64(x)
# define le64toh(x) OSSwapLittleToHostInt64(x)
# define __BYTE_ORDER BYTE_ORDER
# define __BIG_ENDIAN BIG_ENDIAN
# define __LITTLE_ENDIAN LITTLE_ENDIAN
# define __PDP_ENDIAN PDP_ENDIAN
#endif
#endif
#define TAOS_EPOLL_WAIT_TIME 500
#define TAOS_EPOLL_WAIT_TIME 500
...
...
include/os/osSysinfo.h
浏览文件 @
ba12601d
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
#ifndef _TD_OS_SYSINFO_H_
#ifndef _TD_OS_SYSINFO_H_
#define _TD_OS_SYSINFO_H_
#define _TD_OS_SYSINFO_H_
#include <sys/statvfs.h>
#include "os.h"
#include "os.h"
#ifdef __cplusplus
#ifdef __cplusplus
...
@@ -52,7 +53,7 @@ int32_t taosGetSystemUUID(char *uid, int32_t uidlen);
...
@@ -52,7 +53,7 @@ int32_t taosGetSystemUUID(char *uid, int32_t uidlen);
char
*
taosGetCmdlineByPID
(
int32_t
pid
);
char
*
taosGetCmdlineByPID
(
int32_t
pid
);
void
taosSetCoreDump
(
bool
enable
);
void
taosSetCoreDump
(
bool
enable
);
#if
defined(WINDOWS
)
#if
!defined(LINUX
)
#define _UTSNAME_LENGTH 65
#define _UTSNAME_LENGTH 65
#define _UTSNAME_MACHINE_LENGTH _UTSNAME_LENGTH
#define _UTSNAME_MACHINE_LENGTH _UTSNAME_LENGTH
...
...
source/client/src/clientMsgHandler.c
浏览文件 @
ba12601d
...
@@ -33,7 +33,7 @@ int32_t genericRspCallback(void* param, const SDataBuf* pMsg, int32_t code) {
...
@@ -33,7 +33,7 @@ int32_t genericRspCallback(void* param, const SDataBuf* pMsg, int32_t code) {
setErrno
(
pRequest
,
code
);
setErrno
(
pRequest
,
code
);
free
(
pMsg
->
pData
);
free
(
pMsg
->
pData
);
sem_post
(
&
pRequest
->
body
.
rspSem
);
t
sem_post
(
&
pRequest
->
body
.
rspSem
);
return
code
;
return
code
;
}
}
...
@@ -42,7 +42,7 @@ int32_t processConnectRsp(void* param, const SDataBuf* pMsg, int32_t code) {
...
@@ -42,7 +42,7 @@ int32_t processConnectRsp(void* param, const SDataBuf* pMsg, int32_t code) {
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
if
(
code
!=
TSDB_CODE_SUCCESS
)
{
free
(
pMsg
->
pData
);
free
(
pMsg
->
pData
);
setErrno
(
pRequest
,
code
);
setErrno
(
pRequest
,
code
);
sem_post
(
&
pRequest
->
body
.
rspSem
);
t
sem_post
(
&
pRequest
->
body
.
rspSem
);
return
code
;
return
code
;
}
}
...
@@ -78,7 +78,7 @@ int32_t processConnectRsp(void* param, const SDataBuf* pMsg, int32_t code) {
...
@@ -78,7 +78,7 @@ int32_t processConnectRsp(void* param, const SDataBuf* pMsg, int32_t code) {
pTscObj
->
pAppInfo
->
numOfConns
);
pTscObj
->
pAppInfo
->
numOfConns
);
free
(
pMsg
->
pData
);
free
(
pMsg
->
pData
);
sem_post
(
&
pRequest
->
body
.
rspSem
);
t
sem_post
(
&
pRequest
->
body
.
rspSem
);
return
0
;
return
0
;
}
}
...
...
source/common/src/tdatablock.c
浏览文件 @
ba12601d
...
@@ -864,7 +864,7 @@ int32_t blockDataSort(SSDataBlock* pDataBlock, SArray* pOrderInfo, bool nullFirs
...
@@ -864,7 +864,7 @@ int32_t blockDataSort(SSDataBlock* pDataBlock, SArray* pOrderInfo, bool nullFirs
qsort
(
pColInfoData
->
pData
,
pDataBlock
->
info
.
rows
,
pColInfoData
->
info
.
bytes
,
fn
);
qsort
(
pColInfoData
->
pData
,
pDataBlock
->
info
.
rows
,
pColInfoData
->
info
.
bytes
,
fn
);
int64_t
p1
=
taosGetTimestampUs
();
int64_t
p1
=
taosGetTimestampUs
();
printf
(
"sort:%
ld
, rows:%d
\n
"
,
p1
-
p0
,
pDataBlock
->
info
.
rows
);
printf
(
"sort:%
"
PRId64
"
, rows:%d
\n
"
,
p1
-
p0
,
pDataBlock
->
info
.
rows
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
}
else
{
// var data type
}
else
{
// var data type
...
@@ -912,7 +912,7 @@ int32_t blockDataSort(SSDataBlock* pDataBlock, SArray* pOrderInfo, bool nullFirs
...
@@ -912,7 +912,7 @@ int32_t blockDataSort(SSDataBlock* pDataBlock, SArray* pOrderInfo, bool nullFirs
copyBackToBlock
(
pDataBlock
,
pCols
);
copyBackToBlock
(
pDataBlock
,
pCols
);
int64_t
p4
=
taosGetTimestampUs
();
int64_t
p4
=
taosGetTimestampUs
();
printf
(
"sort:%
ld, create:%ld, assign:%ld, copyback:%ld
, rows:%d
\n
"
,
p1
-
p0
,
p2
-
p1
,
p3
-
p2
,
p4
-
p3
,
rows
);
printf
(
"sort:%
"
PRId64
", create:%"
PRId64
", assign:%"
PRId64
", copyback:%"
PRId64
"
, rows:%d
\n
"
,
p1
-
p0
,
p2
-
p1
,
p3
-
p2
,
p4
-
p3
,
rows
);
destroyTupleIndex
(
index
);
destroyTupleIndex
(
index
);
return
TSDB_CODE_SUCCESS
;
return
TSDB_CODE_SUCCESS
;
...
@@ -1017,7 +1017,7 @@ int32_t dataBlockCompar_rv(const void* p1, const void* p2, const void* param) {
...
@@ -1017,7 +1017,7 @@ int32_t dataBlockCompar_rv(const void* p1, const void* p2, const void* param) {
}
}
int32_t
varColSort
(
SColumnInfoData
*
pColumnInfoData
,
SBlockOrderInfo
*
pOrder
)
{
int32_t
varColSort
(
SColumnInfoData
*
pColumnInfoData
,
SBlockOrderInfo
*
pOrder
)
{
return
0
;
}
}
int32_t
blockDataSort_rv
(
SSDataBlock
*
pDataBlock
,
SArray
*
pOrderInfo
,
bool
nullFirst
)
{
int32_t
blockDataSort_rv
(
SSDataBlock
*
pDataBlock
,
SArray
*
pOrderInfo
,
bool
nullFirst
)
{
...
@@ -1055,8 +1055,9 @@ int32_t blockDataSort_rv(SSDataBlock* pDataBlock, SArray* pOrderInfo, bool nullF
...
@@ -1055,8 +1055,9 @@ int32_t blockDataSort_rv(SSDataBlock* pDataBlock, SArray* pOrderInfo, bool nullF
copyBackToBlock
(
pDataBlock
,
pCols
);
copyBackToBlock
(
pDataBlock
,
pCols
);
int64_t
p4
=
taosGetTimestampUs
();
int64_t
p4
=
taosGetTimestampUs
();
printf
(
"sort:%
ld, create:%ld, assign:%ld, copyback:%ld
, rows:%d
\n
"
,
p1
-
p0
,
p2
-
p1
,
p3
-
p2
,
p4
-
p3
,
rows
);
printf
(
"sort:%
"
PRId64
", create:%"
PRId64
", assign:%"
PRId64
", copyback:%"
PRId64
"
, rows:%d
\n
"
,
p1
-
p0
,
p2
-
p1
,
p3
-
p2
,
p4
-
p3
,
rows
);
// destroyTupleIndex(index);
// destroyTupleIndex(index);
return
0
;
}
}
void
blockDataClearup
(
SSDataBlock
*
pDataBlock
)
{
void
blockDataClearup
(
SSDataBlock
*
pDataBlock
)
{
...
...
source/common/src/trow.c
浏览文件 @
ba12601d
...
@@ -353,10 +353,10 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, i
...
@@ -353,10 +353,10 @@ static void tdMergeTwoDataCols(SDataCols *target, SDataCols *src1, int *iter1, i
for
(
int
i
=
0
;
i
<
src2
->
numOfCols
;
i
++
)
{
for
(
int
i
=
0
;
i
<
src2
->
numOfCols
;
i
++
)
{
SCellVal
sVal
=
{
0
};
SCellVal
sVal
=
{
0
};
ASSERT
(
target
->
cols
[
i
].
type
==
src2
->
cols
[
i
].
type
);
ASSERT
(
target
->
cols
[
i
].
type
==
src2
->
cols
[
i
].
type
);
if
(
src2
->
cols
[
i
].
len
>
0
&&
!
isNull
(
src2
->
cols
[
i
].
pData
,
src2
->
cols
[
i
].
type
)
)
{
if
(
tdGetColDataOfRow
(
&
sVal
,
src2
->
cols
+
i
,
*
iter2
)
<
0
)
{
if
(
tdGetColDataOfRow
(
&
sVal
,
src1
->
cols
+
i
,
*
iter1
)
<
0
)
{
TASSERT
(
0
);
TASSERT
(
0
);
}
}
if
(
src2
->
cols
[
i
].
len
>
0
&&
!
tdValTypeIsNull
(
sVal
.
valType
))
{
tdAppendValToDataCol
(
&
(
target
->
cols
[
i
]),
sVal
.
valType
,
sVal
.
val
,
target
->
numOfRows
,
target
->
maxPoints
);
tdAppendValToDataCol
(
&
(
target
->
cols
[
i
]),
sVal
.
valType
,
sVal
.
val
,
target
->
numOfRows
,
target
->
maxPoints
);
}
else
if
(
!
forceSetNull
&&
key1
==
key2
&&
src1
->
cols
[
i
].
len
>
0
)
{
}
else
if
(
!
forceSetNull
&&
key1
==
key2
&&
src1
->
cols
[
i
].
len
>
0
)
{
if
(
tdGetColDataOfRow
(
&
sVal
,
src1
->
cols
+
i
,
*
iter1
)
<
0
)
{
if
(
tdGetColDataOfRow
(
&
sVal
,
src1
->
cols
+
i
,
*
iter1
)
<
0
)
{
...
...
source/common/src/ttszip.c
浏览文件 @
ba12601d
...
@@ -845,7 +845,11 @@ int32_t tsBufMerge(STSBuf* pDestBuf, const STSBuf* pSrcBuf) {
...
@@ -845,7 +845,11 @@ int32_t tsBufMerge(STSBuf* pDestBuf, const STSBuf* pSrcBuf) {
int64_t
offset
=
getDataStartOffset
();
int64_t
offset
=
getDataStartOffset
();
int32_t
size
=
(
int32_t
)
pSrcBuf
->
fileSize
-
(
int32_t
)
offset
;
int32_t
size
=
(
int32_t
)
pSrcBuf
->
fileSize
-
(
int32_t
)
offset
;
#if defined(_TD_DARWIN_64)
int64_t
written
=
taosFSendFile
(
pDestBuf
->
pFile
->
fp
,
pSrcBuf
->
pFile
->
fp
,
&
offset
,
size
);
#else
int64_t
written
=
taosFSendFile
(
pDestBuf
->
pFile
,
pSrcBuf
->
pFile
,
&
offset
,
size
);
int64_t
written
=
taosFSendFile
(
pDestBuf
->
pFile
,
pSrcBuf
->
pFile
,
&
offset
,
size
);
#endif
if
(
written
==
-
1
||
written
!=
size
)
{
if
(
written
==
-
1
||
written
!=
size
)
{
return
-
1
;
return
-
1
;
...
...
source/dnode/mnode/impl/src/mndConsumer.c
浏览文件 @
ba12601d
...
@@ -96,12 +96,12 @@ SSdbRaw *mndConsumerActionEncode(SMqConsumerObj *pConsumer) {
...
@@ -96,12 +96,12 @@ SSdbRaw *mndConsumerActionEncode(SMqConsumerObj *pConsumer) {
CM_ENCODE_OVER:
CM_ENCODE_OVER:
tfree
(
buf
);
tfree
(
buf
);
if
(
terrno
!=
0
)
{
if
(
terrno
!=
0
)
{
mError
(
"consumer:%
ld
, failed to encode to raw:%p since %s"
,
pConsumer
->
consumerId
,
pRaw
,
terrstr
());
mError
(
"consumer:%
"
PRId64
"
, failed to encode to raw:%p since %s"
,
pConsumer
->
consumerId
,
pRaw
,
terrstr
());
sdbFreeRaw
(
pRaw
);
sdbFreeRaw
(
pRaw
);
return
NULL
;
return
NULL
;
}
}
mTrace
(
"consumer:%
ld
, encode to raw:%p, row:%p"
,
pConsumer
->
consumerId
,
pRaw
,
pConsumer
);
mTrace
(
"consumer:%
"
PRId64
"
, encode to raw:%p, row:%p"
,
pConsumer
->
consumerId
,
pRaw
,
pConsumer
);
return
pRaw
;
return
pRaw
;
}
}
...
@@ -140,7 +140,7 @@ SSdbRow *mndConsumerActionDecode(SSdbRaw *pRaw) {
...
@@ -140,7 +140,7 @@ SSdbRow *mndConsumerActionDecode(SSdbRaw *pRaw) {
CM_DECODE_OVER:
CM_DECODE_OVER:
tfree
(
buf
);
tfree
(
buf
);
if
(
terrno
!=
TSDB_CODE_SUCCESS
)
{
if
(
terrno
!=
TSDB_CODE_SUCCESS
)
{
mError
(
"consumer:%
ld
, failed to decode from raw:%p since %s"
,
pConsumer
->
consumerId
,
pRaw
,
terrstr
());
mError
(
"consumer:%
"
PRId64
"
, failed to decode from raw:%p since %s"
,
pConsumer
->
consumerId
,
pRaw
,
terrstr
());
tfree
(
pRow
);
tfree
(
pRow
);
return
NULL
;
return
NULL
;
}
}
...
@@ -149,17 +149,17 @@ CM_DECODE_OVER:
...
@@ -149,17 +149,17 @@ CM_DECODE_OVER:
}
}
static
int32_t
mndConsumerActionInsert
(
SSdb
*
pSdb
,
SMqConsumerObj
*
pConsumer
)
{
static
int32_t
mndConsumerActionInsert
(
SSdb
*
pSdb
,
SMqConsumerObj
*
pConsumer
)
{
mTrace
(
"consumer:%
ld
, perform insert action"
,
pConsumer
->
consumerId
);
mTrace
(
"consumer:%
"
PRId64
"
, perform insert action"
,
pConsumer
->
consumerId
);
return
0
;
return
0
;
}
}
static
int32_t
mndConsumerActionDelete
(
SSdb
*
pSdb
,
SMqConsumerObj
*
pConsumer
)
{
static
int32_t
mndConsumerActionDelete
(
SSdb
*
pSdb
,
SMqConsumerObj
*
pConsumer
)
{
mTrace
(
"consumer:%
ld
, perform delete action"
,
pConsumer
->
consumerId
);
mTrace
(
"consumer:%
"
PRId64
"
, perform delete action"
,
pConsumer
->
consumerId
);
return
0
;
return
0
;
}
}
static
int32_t
mndConsumerActionUpdate
(
SSdb
*
pSdb
,
SMqConsumerObj
*
pOldConsumer
,
SMqConsumerObj
*
pNewConsumer
)
{
static
int32_t
mndConsumerActionUpdate
(
SSdb
*
pSdb
,
SMqConsumerObj
*
pOldConsumer
,
SMqConsumerObj
*
pNewConsumer
)
{
mTrace
(
"consumer:%
ld
, perform update action"
,
pOldConsumer
->
consumerId
);
mTrace
(
"consumer:%
"
PRId64
"
, perform update action"
,
pOldConsumer
->
consumerId
);
// TODO handle update
// TODO handle update
/*taosWLockLatch(&pOldConsumer->lock);*/
/*taosWLockLatch(&pOldConsumer->lock);*/
...
...
source/dnode/mnode/impl/src/mndSubscribe.c
浏览文件 @
ba12601d
...
@@ -448,7 +448,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
...
@@ -448,7 +448,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
for
(
int32_t
i
=
0
;
i
<
taosArrayGetSize
(
pRebSub
->
lostConsumers
);
i
++
)
{
for
(
int32_t
i
=
0
;
i
<
taosArrayGetSize
(
pRebSub
->
lostConsumers
);
i
++
)
{
int64_t
lostConsumerId
=
*
(
int64_t
*
)
taosArrayGet
(
pRebSub
->
lostConsumers
,
i
);
int64_t
lostConsumerId
=
*
(
int64_t
*
)
taosArrayGet
(
pRebSub
->
lostConsumers
,
i
);
mInfo
(
"mq remove lost consumer %
ld
"
,
lostConsumerId
);
mInfo
(
"mq remove lost consumer %
"
PRId64
"
"
,
lostConsumerId
);
for
(
int32_t
j
=
0
;
j
<
taosArrayGetSize
(
pSub
->
consumers
);
j
++
)
{
for
(
int32_t
j
=
0
;
j
<
taosArrayGetSize
(
pSub
->
consumers
);
j
++
)
{
SMqSubConsumer
*
pSubConsumer
=
taosArrayGet
(
pSub
->
consumers
,
j
);
SMqSubConsumer
*
pSubConsumer
=
taosArrayGet
(
pSub
->
consumers
,
j
);
...
@@ -479,7 +479,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
...
@@ -479,7 +479,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
else
else
vgThisConsumerAfterRb
=
vgEachConsumer
;
vgThisConsumerAfterRb
=
vgEachConsumer
;
mInfo
(
"mq consumer:%
ld
, connectted vgroup number change from %d to %d"
,
pSubConsumer
->
consumerId
,
mInfo
(
"mq consumer:%
"
PRId64
"
, connectted vgroup number change from %d to %d"
,
pSubConsumer
->
consumerId
,
vgThisConsumerBeforeRb
,
vgThisConsumerAfterRb
);
vgThisConsumerBeforeRb
,
vgThisConsumerAfterRb
);
while
(
taosArrayGetSize
(
pSubConsumer
->
vgInfo
)
>
vgThisConsumerAfterRb
)
{
while
(
taosArrayGetSize
(
pSubConsumer
->
vgInfo
)
>
vgThisConsumerAfterRb
)
{
...
@@ -503,7 +503,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
...
@@ -503,7 +503,7 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
atomic_store_32
(
&
pRebConsumer
->
status
,
MQ_CONSUMER_STATUS__IDLE
);
atomic_store_32
(
&
pRebConsumer
->
status
,
MQ_CONSUMER_STATUS__IDLE
);
}
}
mInfo
(
"mq consumer:%
ld
, status change from %d to %d"
,
pRebConsumer
->
consumerId
,
status
,
pRebConsumer
->
status
);
mInfo
(
"mq consumer:%
"
PRId64
"
, status change from %d to %d"
,
pRebConsumer
->
consumerId
,
status
,
pRebConsumer
->
status
);
SSdbRaw
*
pConsumerRaw
=
mndConsumerActionEncode
(
pRebConsumer
);
SSdbRaw
*
pConsumerRaw
=
mndConsumerActionEncode
(
pRebConsumer
);
sdbSetRawStatus
(
pConsumerRaw
,
SDB_STATUS_READY
);
sdbSetRawStatus
(
pConsumerRaw
,
SDB_STATUS_READY
);
...
@@ -537,13 +537,13 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
...
@@ -537,13 +537,13 @@ static int32_t mndProcessDoRebalanceMsg(SNodeMsg *pMsg) {
mndSplitSubscribeKey
(
pSub
->
key
,
topic
,
cgroup
);
mndSplitSubscribeKey
(
pSub
->
key
,
topic
,
cgroup
);
SMqTopicObj
*
pTopic
=
mndAcquireTopic
(
pMnode
,
topic
);
SMqTopicObj
*
pTopic
=
mndAcquireTopic
(
pMnode
,
topic
);
mInfo
(
"mq set conn: assign vgroup %d of topic %s to consumer %
ld
"
,
pConsumerEp
->
vgId
,
topic
,
mInfo
(
"mq set conn: assign vgroup %d of topic %s to consumer %
"
PRId64
"
"
,
pConsumerEp
->
vgId
,
topic
,
pConsumerEp
->
consumerId
);
pConsumerEp
->
consumerId
);
mndPersistMqSetConnReq
(
pMnode
,
pTrans
,
pTopic
,
cgroup
,
pConsumerEp
);
mndPersistMqSetConnReq
(
pMnode
,
pTrans
,
pTopic
,
cgroup
,
pConsumerEp
);
mndReleaseTopic
(
pMnode
,
pTopic
);
mndReleaseTopic
(
pMnode
,
pTopic
);
}
else
{
}
else
{
mInfo
(
"mq rebalance: assign vgroup %d, from consumer %
ld to consumer %ld
"
,
pConsumerEp
->
vgId
,
mInfo
(
"mq rebalance: assign vgroup %d, from consumer %
"
PRId64
" to consumer %"
PRId64
"
"
,
pConsumerEp
->
vgId
,
pConsumerEp
->
oldConsumerId
,
pConsumerEp
->
consumerId
);
pConsumerEp
->
oldConsumerId
,
pConsumerEp
->
consumerId
);
mndPersistRebalanceMsg
(
pMnode
,
pTrans
,
pConsumerEp
);
mndPersistRebalanceMsg
(
pMnode
,
pTrans
,
pConsumerEp
);
...
@@ -1099,7 +1099,7 @@ static int32_t mndProcessSubscribeReq(SNodeMsg *pMsg) {
...
@@ -1099,7 +1099,7 @@ static int32_t mndProcessSubscribeReq(SNodeMsg *pMsg) {
SMqSubscribeObj
*
pSub
=
mndAcquireSubscribe
(
pMnode
,
cgroup
,
newTopicName
);
SMqSubscribeObj
*
pSub
=
mndAcquireSubscribe
(
pMnode
,
cgroup
,
newTopicName
);
bool
createSub
=
false
;
bool
createSub
=
false
;
if
(
pSub
==
NULL
)
{
if
(
pSub
==
NULL
)
{
mDebug
(
"create new subscription by consumer %
ld
, group: %s, topic %s"
,
consumerId
,
cgroup
,
newTopicName
);
mDebug
(
"create new subscription by consumer %
"
PRId64
"
, group: %s, topic %s"
,
consumerId
,
cgroup
,
newTopicName
);
pSub
=
mndCreateSubscription
(
pMnode
,
pTopic
,
cgroup
);
pSub
=
mndCreateSubscription
(
pMnode
,
pTopic
,
cgroup
);
createSub
=
true
;
createSub
=
true
;
...
@@ -1118,7 +1118,7 @@ static int32_t mndProcessSubscribeReq(SNodeMsg *pMsg) {
...
@@ -1118,7 +1118,7 @@ static int32_t mndProcessSubscribeReq(SNodeMsg *pMsg) {
pConsumerEp
->
consumerId
=
consumerId
;
pConsumerEp
->
consumerId
=
consumerId
;
taosArrayPush
(
mqSubConsumer
.
vgInfo
,
pConsumerEp
);
taosArrayPush
(
mqSubConsumer
.
vgInfo
,
pConsumerEp
);
if
(
pConsumerEp
->
oldConsumerId
==
-
1
)
{
if
(
pConsumerEp
->
oldConsumerId
==
-
1
)
{
mInfo
(
"mq set conn: assign vgroup %d of topic %s to consumer %
ld
"
,
pConsumerEp
->
vgId
,
newTopicName
,
mInfo
(
"mq set conn: assign vgroup %d of topic %s to consumer %
"
PRId64
"
"
,
pConsumerEp
->
vgId
,
newTopicName
,
pConsumerEp
->
consumerId
);
pConsumerEp
->
consumerId
);
mndPersistMqSetConnReq
(
pMnode
,
pTrans
,
pTopic
,
cgroup
,
pConsumerEp
);
mndPersistMqSetConnReq
(
pMnode
,
pTrans
,
pTopic
,
cgroup
,
pConsumerEp
);
}
else
{
}
else
{
...
...
source/dnode/mnode/sdb/src/sdbFile.c
浏览文件 @
ba12601d
...
@@ -196,7 +196,7 @@ int32_t sdbReadFile(SSdb *pSdb) {
...
@@ -196,7 +196,7 @@ int32_t sdbReadFile(SSdb *pSdb) {
}
}
int32_t
totalLen
=
sizeof
(
SSdbRaw
)
+
pRaw
->
dataLen
+
sizeof
(
int32_t
);
int32_t
totalLen
=
sizeof
(
SSdbRaw
)
+
pRaw
->
dataLen
+
sizeof
(
int32_t
);
if
(
!
taosCheckChecksumWhole
((
const
uint8_t
*
)
pRaw
,
totalLen
)
!=
0
)
{
if
(
(
!
taosCheckChecksumWhole
((
const
uint8_t
*
)
pRaw
,
totalLen
)
)
!=
0
)
{
code
=
TSDB_CODE_CHECKSUM_ERROR
;
code
=
TSDB_CODE_CHECKSUM_ERROR
;
mError
(
"failed to read file:%s since %s"
,
file
,
tstrerror
(
code
));
mError
(
"failed to read file:%s since %s"
,
file
,
tstrerror
(
code
));
break
;
break
;
...
...
source/libs/catalog/src/catalog.c
浏览文件 @
ba12601d
...
@@ -1062,7 +1062,7 @@ int32_t ctgMetaRentInit(SCtgRentMgmt *mgmt, uint32_t rentSec, int8_t type) {
...
@@ -1062,7 +1062,7 @@ int32_t ctgMetaRentInit(SCtgRentMgmt *mgmt, uint32_t rentSec, int8_t type) {
int32_t
ctgMetaRentAdd
(
SCtgRentMgmt
*
mgmt
,
void
*
meta
,
int64_t
id
,
int32_t
size
)
{
int32_t
ctgMetaRentAdd
(
SCtgRentMgmt
*
mgmt
,
void
*
meta
,
int64_t
id
,
int32_t
size
)
{
int16_t
widx
=
abs
(
id
%
mgmt
->
slotNum
);
int16_t
widx
=
abs
(
(
int
)(
id
%
mgmt
->
slotNum
)
);
SCtgRentSlot
*
slot
=
&
mgmt
->
slots
[
widx
];
SCtgRentSlot
*
slot
=
&
mgmt
->
slots
[
widx
];
int32_t
code
=
0
;
int32_t
code
=
0
;
...
@@ -1092,11 +1092,11 @@ _return:
...
@@ -1092,11 +1092,11 @@ _return:
}
}
int32_t
ctgMetaRentUpdate
(
SCtgRentMgmt
*
mgmt
,
void
*
meta
,
int64_t
id
,
int32_t
size
,
__compar_fn_t
sortCompare
,
__compar_fn_t
searchCompare
)
{
int32_t
ctgMetaRentUpdate
(
SCtgRentMgmt
*
mgmt
,
void
*
meta
,
int64_t
id
,
int32_t
size
,
__compar_fn_t
sortCompare
,
__compar_fn_t
searchCompare
)
{
int16_t
widx
=
abs
(
id
%
mgmt
->
slotNum
);
int16_t
widx
=
abs
(
(
int
)(
id
%
mgmt
->
slotNum
)
);
SCtgRentSlot
*
slot
=
&
mgmt
->
slots
[
widx
];
SCtgRentSlot
*
slot
=
&
mgmt
->
slots
[
widx
];
int32_t
code
=
0
;
int32_t
code
=
0
;
CTG_LOCK
(
CTG_WRITE
,
&
slot
->
lock
);
CTG_LOCK
(
CTG_WRITE
,
&
slot
->
lock
);
if
(
NULL
==
slot
->
meta
)
{
if
(
NULL
==
slot
->
meta
)
{
qError
(
"empty meta slot, id:%"
PRIx64
", slot idx:%d, type:%d"
,
id
,
widx
,
mgmt
->
type
);
qError
(
"empty meta slot, id:%"
PRIx64
", slot idx:%d, type:%d"
,
id
,
widx
,
mgmt
->
type
);
...
@@ -1133,7 +1133,7 @@ _return:
...
@@ -1133,7 +1133,7 @@ _return:
}
}
int32_t
ctgMetaRentRemove
(
SCtgRentMgmt
*
mgmt
,
int64_t
id
,
__compar_fn_t
sortCompare
,
__compar_fn_t
searchCompare
)
{
int32_t
ctgMetaRentRemove
(
SCtgRentMgmt
*
mgmt
,
int64_t
id
,
__compar_fn_t
sortCompare
,
__compar_fn_t
searchCompare
)
{
int16_t
widx
=
abs
(
id
%
mgmt
->
slotNum
);
int16_t
widx
=
abs
(
(
int
)(
id
%
mgmt
->
slotNum
)
);
SCtgRentSlot
*
slot
=
&
mgmt
->
slots
[
widx
];
SCtgRentSlot
*
slot
=
&
mgmt
->
slots
[
widx
];
int32_t
code
=
0
;
int32_t
code
=
0
;
...
...
source/libs/executor/src/dataSinkMgt.c
浏览文件 @
ba12601d
...
@@ -23,6 +23,7 @@ static SDataSinkManager gDataSinkManager = {0};
...
@@ -23,6 +23,7 @@ static SDataSinkManager gDataSinkManager = {0};
int32_t
dsDataSinkMgtInit
(
SDataSinkMgtCfg
*
cfg
)
{
int32_t
dsDataSinkMgtInit
(
SDataSinkMgtCfg
*
cfg
)
{
gDataSinkManager
.
cfg
=
*
cfg
;
gDataSinkManager
.
cfg
=
*
cfg
;
pthread_mutex_init
(
&
gDataSinkManager
.
mutex
,
NULL
);
pthread_mutex_init
(
&
gDataSinkManager
.
mutex
,
NULL
);
return
0
;
// to avoid compiler eror
}
}
int32_t
dsCreateDataSinker
(
const
SDataSinkNode
*
pDataSink
,
DataSinkHandle
*
pHandle
)
{
int32_t
dsCreateDataSinker
(
const
SDataSinkNode
*
pDataSink
,
DataSinkHandle
*
pHandle
)
{
...
...
source/libs/executor/src/tlinearhash.c
浏览文件 @
ba12601d
...
@@ -413,7 +413,7 @@ int32_t tHashRemove(SLHashObj* pHashObj, const void *key, size_t keyLen) {
...
@@ -413,7 +413,7 @@ int32_t tHashRemove(SLHashObj* pHashObj, const void *key, size_t keyLen) {
void
tHashPrint
(
const
SLHashObj
*
pHashObj
,
int32_t
type
)
{
void
tHashPrint
(
const
SLHashObj
*
pHashObj
,
int32_t
type
)
{
printf
(
"==================== linear hash ====================
\n
"
);
printf
(
"==================== linear hash ====================
\n
"
);
printf
(
"total bucket:%d, size:%
ld
, ratio:%.2f
\n
"
,
pHashObj
->
numOfBuckets
,
pHashObj
->
size
,
LHASH_CAP_RATIO
);
printf
(
"total bucket:%d, size:%
"
PRId64
"
, ratio:%.2f
\n
"
,
pHashObj
->
numOfBuckets
,
pHashObj
->
size
,
LHASH_CAP_RATIO
);
dBufSetPrintInfo
(
pHashObj
->
pBuf
);
dBufSetPrintInfo
(
pHashObj
->
pBuf
);
...
@@ -425,4 +425,4 @@ void tHashPrint(const SLHashObj* pHashObj, int32_t type) {
...
@@ -425,4 +425,4 @@ void tHashPrint(const SLHashObj* pHashObj, int32_t type) {
}
else
{
}
else
{
dBufPrintStatis
(
pHashObj
->
pBuf
);
dBufPrintStatis
(
pHashObj
->
pBuf
);
}
}
}
}
\ No newline at end of file
source/libs/index/src/index.c
浏览文件 @
ba12601d
...
@@ -240,6 +240,7 @@ int indexRebuild(SIndex* index, SIndexOpts* opts){
...
@@ -240,6 +240,7 @@ int indexRebuild(SIndex* index, SIndexOpts* opts){
#ifdef USE_INVERTED_INDEX
#ifdef USE_INVERTED_INDEX
#endif
#endif
return
0
;
}
}
SIndexOpts
*
indexOptsCreate
()
{
SIndexOpts
*
indexOptsCreate
()
{
...
...
source/libs/index/src/index_cache.c
浏览文件 @
ba12601d
...
@@ -190,7 +190,10 @@ int indexCacheSchedToMerge(IndexCache* pCache) {
...
@@ -190,7 +190,10 @@ int indexCacheSchedToMerge(IndexCache* pCache) {
schedMsg
.
msg
=
NULL
;
schedMsg
.
msg
=
NULL
;
taosScheduleTask
(
indexQhandle
,
&
schedMsg
);
taosScheduleTask
(
indexQhandle
,
&
schedMsg
);
return
0
;
}
}
static
void
indexCacheMakeRoomForWrite
(
IndexCache
*
cache
)
{
static
void
indexCacheMakeRoomForWrite
(
IndexCache
*
cache
)
{
while
(
true
)
{
while
(
true
)
{
if
(
cache
->
occupiedMem
*
MEM_ESTIMATE_RADIO
<
MEM_THRESHOLD
)
{
if
(
cache
->
occupiedMem
*
MEM_ESTIMATE_RADIO
<
MEM_THRESHOLD
)
{
...
...
source/libs/index/src/index_fst.c
浏览文件 @
ba12601d
...
@@ -571,6 +571,8 @@ uint64_t fstStateFindInput(FstState* s, FstNode* node, uint8_t b, bool* null) {
...
@@ -571,6 +571,8 @@ uint64_t fstStateFindInput(FstState* s, FstNode* node, uint8_t b, bool* null) {
}
}
fstSliceDestroy
(
&
t
);
fstSliceDestroy
(
&
t
);
}
}
return
0
;
}
}
// fst node function
// fst node function
...
@@ -1027,6 +1029,8 @@ Fst* fstCreate(FstSlice* slice) {
...
@@ -1027,6 +1029,8 @@ Fst* fstCreate(FstSlice* slice) {
FST_CREAT_FAILED:
FST_CREAT_FAILED:
free
(
fst
->
meta
);
free
(
fst
->
meta
);
free
(
fst
);
free
(
fst
);
return
NULL
;
}
}
void
fstDestroy
(
Fst
*
fst
)
{
void
fstDestroy
(
Fst
*
fst
)
{
if
(
fst
)
{
if
(
fst
)
{
...
@@ -1286,6 +1290,8 @@ bool streamWithStateSeekMin(StreamWithState* sws, FstBoundWithData* min) {
...
@@ -1286,6 +1290,8 @@ bool streamWithStateSeekMin(StreamWithState* sws, FstBoundWithData* min) {
}
}
return
false
;
return
false
;
}
}
return
false
;
}
}
StreamWithStateResult
*
streamWithStateNextWith
(
StreamWithState
*
sws
,
StreamCallback
callback
)
{
StreamWithStateResult
*
streamWithStateNextWith
(
StreamWithState
*
sws
,
StreamCallback
callback
)
{
...
...
source/libs/parser/src/parInsert.c
浏览文件 @
ba12601d
...
@@ -763,6 +763,8 @@ static int32_t parseTagsClause(SInsertParseContext* pCxt, SSchema* pTagsSchema,
...
@@ -763,6 +763,8 @@ static int32_t parseTagsClause(SInsertParseContext* pCxt, SSchema* pTagsSchema,
// todo construct payload
// todo construct payload
tfree
(
row
);
tfree
(
row
);
return
0
;
}
}
// pSql -> stb_name [(tag1_name, ...)] TAGS (tag1_value, ...)
// pSql -> stb_name [(tag1_name, ...)] TAGS (tag1_value, ...)
...
...
source/libs/planner/src/planLogicCreater.c
浏览文件 @
ba12601d
...
@@ -425,6 +425,7 @@ static SLogicNode* createQueryLogicNode(SLogicPlanContext* pCxt, SNode* pStmt) {
...
@@ -425,6 +425,7 @@ static SLogicNode* createQueryLogicNode(SLogicPlanContext* pCxt, SNode* pStmt) {
default:
default:
break
;
break
;
}
}
return
NULL
;
// to avoid compiler error
}
}
int32_t
createLogicPlan
(
SPlanContext
*
pCxt
,
SLogicNode
**
pLogicNode
)
{
int32_t
createLogicPlan
(
SPlanContext
*
pCxt
,
SLogicNode
**
pLogicNode
)
{
...
...
source/libs/scalar/src/filter.c
浏览文件 @
ba12601d
...
@@ -792,7 +792,7 @@ int32_t filterDetachCnfGroups(SArray* group, SArray* left, SArray* right) {
...
@@ -792,7 +792,7 @@ int32_t filterDetachCnfGroups(SArray* group, SArray* left, SArray* right) {
}
}
SFilterGroup
*
gp
=
NULL
;
SFilterGroup
*
gp
=
NULL
;
while
(
gp
=
(
SFilterGroup
*
)
taosArrayPop
(
right
)
)
{
while
(
(
gp
=
(
SFilterGroup
*
)
taosArrayPop
(
right
))
!=
NULL
)
{
taosArrayPush
(
group
,
gp
);
taosArrayPush
(
group
,
gp
);
}
}
...
@@ -801,7 +801,7 @@ int32_t filterDetachCnfGroups(SArray* group, SArray* left, SArray* right) {
...
@@ -801,7 +801,7 @@ int32_t filterDetachCnfGroups(SArray* group, SArray* left, SArray* right) {
if
(
taosArrayGetSize
(
right
)
<=
0
)
{
if
(
taosArrayGetSize
(
right
)
<=
0
)
{
SFilterGroup
*
gp
=
NULL
;
SFilterGroup
*
gp
=
NULL
;
while
(
gp
=
(
SFilterGroup
*
)
taosArrayPop
(
left
)
)
{
while
(
(
gp
=
(
SFilterGroup
*
)
taosArrayPop
(
left
))
!=
NULL
)
{
taosArrayPush
(
group
,
gp
);
taosArrayPush
(
group
,
gp
);
}
}
...
...
source/libs/scalar/src/scalar.c
浏览文件 @
ba12601d
...
@@ -239,6 +239,9 @@ int32_t sclInitParam(SNode* node, SScalarParam *param, SScalarCtx *ctx, int32_t
...
@@ -239,6 +239,9 @@ int32_t sclInitParam(SNode* node, SScalarParam *param, SScalarCtx *ctx, int32_t
break
;
break
;
}
}
default:
break
;
}
}
if
(
param
->
num
>
*
rowNum
)
{
if
(
param
->
num
>
*
rowNum
)
{
...
...
source/libs/scheduler/src/schFlowCtrl.c
浏览文件 @
ba12601d
...
@@ -282,8 +282,10 @@ int32_t schLaunchTasksInFlowCtrlList(SSchJob *pJob, SSchTask *pTask) {
...
@@ -282,8 +282,10 @@ int32_t schLaunchTasksInFlowCtrlList(SSchJob *pJob, SSchTask *pTask) {
SCH_ERR_RET
(
TSDB_CODE_SCH_INTERNAL_ERROR
);
SCH_ERR_RET
(
TSDB_CODE_SCH_INTERNAL_ERROR
);
}
}
SCH_ERR_RET
(
schLaunchTasksInFlowCtrlListImpl
(
pJob
,
ctrl
));
int32_t
code
=
schLaunchTasksInFlowCtrlListImpl
(
pJob
,
ctrl
);;
SCH_ERR_RET
(
code
);
return
code
;
// to avoid compiler error
}
}
source/libs/sync/src/syncAppendEntriesReply.c
浏览文件 @
ba12601d
...
@@ -39,7 +39,7 @@ int32_t syncNodeOnAppendEntriesReplyCb(SSyncNode* ths, SyncAppendEntriesReply* p
...
@@ -39,7 +39,7 @@ int32_t syncNodeOnAppendEntriesReplyCb(SSyncNode* ths, SyncAppendEntriesReply* p
syncAppendEntriesReplyLog2
(
"==syncNodeOnAppendEntriesReplyCb=="
,
pMsg
);
syncAppendEntriesReplyLog2
(
"==syncNodeOnAppendEntriesReplyCb=="
,
pMsg
);
if
(
pMsg
->
term
<
ths
->
pRaftStore
->
currentTerm
)
{
if
(
pMsg
->
term
<
ths
->
pRaftStore
->
currentTerm
)
{
sTrace
(
"DropStaleResponse, receive term:%
lu, current term:%lu
"
,
pMsg
->
term
,
ths
->
pRaftStore
->
currentTerm
);
sTrace
(
"DropStaleResponse, receive term:%
"
PRIu64
", current term:%"
PRIu64
"
"
,
pMsg
->
term
,
ths
->
pRaftStore
->
currentTerm
);
return
ret
;
return
ret
;
}
}
...
...
source/libs/sync/src/syncEnv.c
浏览文件 @
ba12601d
...
@@ -55,7 +55,7 @@ static void syncEnvTick(void *param, void *tmrId) {
...
@@ -55,7 +55,7 @@ static void syncEnvTick(void *param, void *tmrId) {
if
(
atomic_load_64
(
&
pSyncEnv
->
envTickTimerLogicClockUser
)
<=
atomic_load_64
(
&
pSyncEnv
->
envTickTimerLogicClock
))
{
if
(
atomic_load_64
(
&
pSyncEnv
->
envTickTimerLogicClockUser
)
<=
atomic_load_64
(
&
pSyncEnv
->
envTickTimerLogicClock
))
{
++
(
pSyncEnv
->
envTickTimerCounter
);
++
(
pSyncEnv
->
envTickTimerCounter
);
sTrace
(
sTrace
(
"syncEnvTick do ... envTickTimerLogicClockUser:%
lu, envTickTimerLogicClock:%lu, envTickTimerCounter:%lu
, "
"syncEnvTick do ... envTickTimerLogicClockUser:%
"
PRIu64
", envTickTimerLogicClock:%"
PRIu64
", envTickTimerCounter:%"
PRIu64
"
, "
"envTickTimerMS:%d, tmrId:%p"
,
"envTickTimerMS:%d, tmrId:%p"
,
pSyncEnv
->
envTickTimerLogicClockUser
,
pSyncEnv
->
envTickTimerLogicClock
,
pSyncEnv
->
envTickTimerCounter
,
pSyncEnv
->
envTickTimerLogicClockUser
,
pSyncEnv
->
envTickTimerLogicClock
,
pSyncEnv
->
envTickTimerCounter
,
pSyncEnv
->
envTickTimerMS
,
tmrId
);
pSyncEnv
->
envTickTimerMS
,
tmrId
);
...
@@ -64,7 +64,7 @@ static void syncEnvTick(void *param, void *tmrId) {
...
@@ -64,7 +64,7 @@ static void syncEnvTick(void *param, void *tmrId) {
taosTmrReset
(
syncEnvTick
,
pSyncEnv
->
envTickTimerMS
,
pSyncEnv
,
pSyncEnv
->
pTimerManager
,
&
pSyncEnv
->
pEnvTickTimer
);
taosTmrReset
(
syncEnvTick
,
pSyncEnv
->
envTickTimerMS
,
pSyncEnv
,
pSyncEnv
->
pTimerManager
,
&
pSyncEnv
->
pEnvTickTimer
);
}
else
{
}
else
{
sTrace
(
sTrace
(
"syncEnvTick pass ... envTickTimerLogicClockUser:%
lu, envTickTimerLogicClock:%lu, envTickTimerCounter:%lu
, "
"syncEnvTick pass ... envTickTimerLogicClockUser:%
"
PRIu64
", envTickTimerLogicClock:%"
PRIu64
", envTickTimerCounter:%"
PRIu64
"
, "
"envTickTimerMS:%d, tmrId:%p"
,
"envTickTimerMS:%d, tmrId:%p"
,
pSyncEnv
->
envTickTimerLogicClockUser
,
pSyncEnv
->
envTickTimerLogicClock
,
pSyncEnv
->
envTickTimerCounter
,
pSyncEnv
->
envTickTimerLogicClockUser
,
pSyncEnv
->
envTickTimerLogicClock
,
pSyncEnv
->
envTickTimerCounter
,
pSyncEnv
->
envTickTimerMS
,
tmrId
);
pSyncEnv
->
envTickTimerMS
,
tmrId
);
...
@@ -74,7 +74,7 @@ static void syncEnvTick(void *param, void *tmrId) {
...
@@ -74,7 +74,7 @@ static void syncEnvTick(void *param, void *tmrId) {
static
SSyncEnv
*
doSyncEnvStart
()
{
static
SSyncEnv
*
doSyncEnvStart
()
{
SSyncEnv
*
pSyncEnv
=
(
SSyncEnv
*
)
malloc
(
sizeof
(
SSyncEnv
));
SSyncEnv
*
pSyncEnv
=
(
SSyncEnv
*
)
malloc
(
sizeof
(
SSyncEnv
));
assert
(
pSyncEnv
!=
NULL
);
assert
(
pSyncEnv
!=
NULL
);
memset
(
pSyncEnv
,
0
,
sizeof
(
p
SyncEnv
));
memset
(
pSyncEnv
,
0
,
sizeof
(
S
SyncEnv
));
pSyncEnv
->
envTickTimerCounter
=
0
;
pSyncEnv
->
envTickTimerCounter
=
0
;
pSyncEnv
->
envTickTimerMS
=
ENV_TICK_TIMER_MS
;
pSyncEnv
->
envTickTimerMS
=
ENV_TICK_TIMER_MS
;
...
...
source/libs/sync/src/syncMain.c
浏览文件 @
ba12601d
...
@@ -420,46 +420,46 @@ cJSON* syncNode2Json(const SSyncNode* pSyncNode) {
...
@@ -420,46 +420,46 @@ cJSON* syncNode2Json(const SSyncNode* pSyncNode) {
// tla+ log vars
// tla+ log vars
cJSON_AddItemToObject
(
pRoot
,
"pLogStore"
,
logStore2Json
(
pSyncNode
->
pLogStore
));
cJSON_AddItemToObject
(
pRoot
,
"pLogStore"
,
logStore2Json
(
pSyncNode
->
pLogStore
));
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
ld
"
,
pSyncNode
->
commitIndex
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRId64
"
"
,
pSyncNode
->
commitIndex
);
cJSON_AddStringToObject
(
pRoot
,
"commitIndex"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"commitIndex"
,
u64buf
);
// ping timer
// ping timer
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
pPingTimer
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
pPingTimer
);
cJSON_AddStringToObject
(
pRoot
,
"pPingTimer"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pPingTimer"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"pingTimerMS"
,
pSyncNode
->
pingTimerMS
);
cJSON_AddNumberToObject
(
pRoot
,
"pingTimerMS"
,
pSyncNode
->
pingTimerMS
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
pingTimerLogicClock
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
pingTimerLogicClock
);
cJSON_AddStringToObject
(
pRoot
,
"pingTimerLogicClock"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pingTimerLogicClock"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
pingTimerLogicClockUser
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
pingTimerLogicClockUser
);
cJSON_AddStringToObject
(
pRoot
,
"pingTimerLogicClockUser"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pingTimerLogicClockUser"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
FpPingTimerCB
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
FpPingTimerCB
);
cJSON_AddStringToObject
(
pRoot
,
"FpPingTimerCB"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"FpPingTimerCB"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
pingTimerCounter
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
pingTimerCounter
);
cJSON_AddStringToObject
(
pRoot
,
"pingTimerCounter"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pingTimerCounter"
,
u64buf
);
// elect timer
// elect timer
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
pElectTimer
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
pElectTimer
);
cJSON_AddStringToObject
(
pRoot
,
"pElectTimer"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pElectTimer"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"electTimerMS"
,
pSyncNode
->
electTimerMS
);
cJSON_AddNumberToObject
(
pRoot
,
"electTimerMS"
,
pSyncNode
->
electTimerMS
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
electTimerLogicClock
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
electTimerLogicClock
);
cJSON_AddStringToObject
(
pRoot
,
"electTimerLogicClock"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"electTimerLogicClock"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
electTimerLogicClockUser
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
electTimerLogicClockUser
);
cJSON_AddStringToObject
(
pRoot
,
"electTimerLogicClockUser"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"electTimerLogicClockUser"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
FpElectTimerCB
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
FpElectTimerCB
);
cJSON_AddStringToObject
(
pRoot
,
"FpElectTimerCB"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"FpElectTimerCB"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
electTimerCounter
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
electTimerCounter
);
cJSON_AddStringToObject
(
pRoot
,
"electTimerCounter"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"electTimerCounter"
,
u64buf
);
// heartbeat timer
// heartbeat timer
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
pHeartbeatTimer
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
pHeartbeatTimer
);
cJSON_AddStringToObject
(
pRoot
,
"pHeartbeatTimer"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pHeartbeatTimer"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"heartbeatTimerMS"
,
pSyncNode
->
heartbeatTimerMS
);
cJSON_AddNumberToObject
(
pRoot
,
"heartbeatTimerMS"
,
pSyncNode
->
heartbeatTimerMS
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
heartbeatTimerLogicClock
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
heartbeatTimerLogicClock
);
cJSON_AddStringToObject
(
pRoot
,
"heartbeatTimerLogicClock"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"heartbeatTimerLogicClock"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
heartbeatTimerLogicClockUser
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
heartbeatTimerLogicClockUser
);
cJSON_AddStringToObject
(
pRoot
,
"heartbeatTimerLogicClockUser"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"heartbeatTimerLogicClockUser"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
FpHeartbeatTimerCB
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pSyncNode
->
FpHeartbeatTimerCB
);
cJSON_AddStringToObject
(
pRoot
,
"FpHeartbeatTimerCB"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"FpHeartbeatTimerCB"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pSyncNode
->
heartbeatTimerCounter
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pSyncNode
->
heartbeatTimerCounter
);
cJSON_AddStringToObject
(
pRoot
,
"heartbeatTimerCounter"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"heartbeatTimerCounter"
,
u64buf
);
// callback
// callback
...
@@ -634,7 +634,7 @@ static void syncNodeEqPingTimer(void* param, void* tmrId) {
...
@@ -634,7 +634,7 @@ static void syncNodeEqPingTimer(void* param, void* tmrId) {
taosTmrReset
(
syncNodeEqPingTimer
,
pSyncNode
->
pingTimerMS
,
pSyncNode
,
gSyncEnv
->
pTimerManager
,
taosTmrReset
(
syncNodeEqPingTimer
,
pSyncNode
->
pingTimerMS
,
pSyncNode
,
gSyncEnv
->
pTimerManager
,
&
pSyncNode
->
pPingTimer
);
&
pSyncNode
->
pPingTimer
);
}
else
{
}
else
{
sTrace
(
"==syncNodeEqPingTimer== pingTimerLogicClock:%
lu, pingTimerLogicClockUser:%lu
"
,
sTrace
(
"==syncNodeEqPingTimer== pingTimerLogicClock:%
"
PRIu64
", pingTimerLogicClockUser:%"
PRIu64
"
"
,
pSyncNode
->
pingTimerLogicClock
,
pSyncNode
->
pingTimerLogicClockUser
);
pSyncNode
->
pingTimerLogicClock
,
pSyncNode
->
pingTimerLogicClockUser
);
}
}
}
}
...
@@ -655,7 +655,7 @@ static void syncNodeEqElectTimer(void* param, void* tmrId) {
...
@@ -655,7 +655,7 @@ static void syncNodeEqElectTimer(void* param, void* tmrId) {
taosTmrReset
(
syncNodeEqPingTimer
,
pSyncNode
->
pingTimerMS
,
pSyncNode
,
gSyncEnv
->
pTimerManager
,
taosTmrReset
(
syncNodeEqPingTimer
,
pSyncNode
->
pingTimerMS
,
pSyncNode
,
gSyncEnv
->
pTimerManager
,
&
pSyncNode
->
pPingTimer
);
&
pSyncNode
->
pPingTimer
);
}
else
{
}
else
{
sTrace
(
"==syncNodeEqElectTimer== electTimerLogicClock:%
lu, electTimerLogicClockUser:%lu
"
,
sTrace
(
"==syncNodeEqElectTimer== electTimerLogicClock:%
"
PRIu64
", electTimerLogicClockUser:%"
PRIu64
"
"
,
pSyncNode
->
electTimerLogicClock
,
pSyncNode
->
electTimerLogicClockUser
);
pSyncNode
->
electTimerLogicClock
,
pSyncNode
->
electTimerLogicClockUser
);
}
}
}
}
...
@@ -676,7 +676,7 @@ static void syncNodeEqHeartbeatTimer(void* param, void* tmrId) {
...
@@ -676,7 +676,7 @@ static void syncNodeEqHeartbeatTimer(void* param, void* tmrId) {
taosTmrReset
(
syncNodeEqHeartbeatTimer
,
pSyncNode
->
heartbeatTimerMS
,
pSyncNode
,
gSyncEnv
->
pTimerManager
,
taosTmrReset
(
syncNodeEqHeartbeatTimer
,
pSyncNode
->
heartbeatTimerMS
,
pSyncNode
,
gSyncEnv
->
pTimerManager
,
&
pSyncNode
->
pHeartbeatTimer
);
&
pSyncNode
->
pHeartbeatTimer
);
}
else
{
}
else
{
sTrace
(
"==syncNodeEqHeartbeatTimer== heartbeatTimerLogicClock:%
lu, heartbeatTimerLogicClockUser:%lu
"
,
sTrace
(
"==syncNodeEqHeartbeatTimer== heartbeatTimerLogicClock:%
"
PRIu64
", heartbeatTimerLogicClockUser:%"
PRIu64
"
"
,
pSyncNode
->
heartbeatTimerLogicClock
,
pSyncNode
->
heartbeatTimerLogicClockUser
);
pSyncNode
->
heartbeatTimerLogicClock
,
pSyncNode
->
heartbeatTimerLogicClockUser
);
}
}
}
}
...
@@ -713,4 +713,4 @@ static int32_t syncNodeOnClientRequestCb(SSyncNode* ths, SyncClientRequest* pMsg
...
@@ -713,4 +713,4 @@ static int32_t syncNodeOnClientRequestCb(SSyncNode* ths, SyncClientRequest* pMsg
}
}
return
ret
;
return
ret
;
}
}
\ No newline at end of file
source/libs/sync/src/syncMessage.c
浏览文件 @
ba12601d
...
@@ -218,7 +218,7 @@ cJSON* syncTimeout2Json(const SyncTimeout* pMsg) {
...
@@ -218,7 +218,7 @@ cJSON* syncTimeout2Json(const SyncTimeout* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"bytes"
,
pMsg
->
bytes
);
cJSON_AddNumberToObject
(
pRoot
,
"bytes"
,
pMsg
->
bytes
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"timeoutType"
,
pMsg
->
timeoutType
);
cJSON_AddNumberToObject
(
pRoot
,
"timeoutType"
,
pMsg
->
timeoutType
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
logicClock
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
logicClock
);
cJSON_AddStringToObject
(
pRoot
,
"logicClock"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"logicClock"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"timerMS"
,
pMsg
->
timerMS
);
cJSON_AddNumberToObject
(
pRoot
,
"timerMS"
,
pMsg
->
timerMS
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pMsg
->
data
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pMsg
->
data
);
...
@@ -239,7 +239,7 @@ char* syncTimeout2Str(const SyncTimeout* pMsg) {
...
@@ -239,7 +239,7 @@ char* syncTimeout2Str(const SyncTimeout* pMsg) {
// for debug ----------------------
// for debug ----------------------
void
syncTimeoutPrint
(
const
SyncTimeout
*
pMsg
)
{
void
syncTimeoutPrint
(
const
SyncTimeout
*
pMsg
)
{
char
*
serialized
=
syncTimeout2Str
(
pMsg
);
char
*
serialized
=
syncTimeout2Str
(
pMsg
);
printf
(
"syncTimeoutPrint | len:%
l
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
printf
(
"syncTimeoutPrint | len:%
z
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
...
@@ -349,7 +349,7 @@ cJSON* syncPing2Json(const SyncPing* pMsg) {
...
@@ -349,7 +349,7 @@ cJSON* syncPing2Json(const SyncPing* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON
*
pSrcId
=
cJSON_CreateObject
();
cJSON
*
pSrcId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
srcId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
srcId
.
addr
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
...
@@ -364,7 +364,7 @@ cJSON* syncPing2Json(const SyncPing* pMsg) {
...
@@ -364,7 +364,7 @@ cJSON* syncPing2Json(const SyncPing* pMsg) {
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON
*
pDestId
=
cJSON_CreateObject
();
cJSON
*
pDestId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
destId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
destId
.
addr
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
destId
.
addr
;
uint64_t
u64
=
pMsg
->
destId
.
addr
;
...
@@ -512,7 +512,7 @@ cJSON* syncPingReply2Json(const SyncPingReply* pMsg) {
...
@@ -512,7 +512,7 @@ cJSON* syncPingReply2Json(const SyncPingReply* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON
*
pSrcId
=
cJSON_CreateObject
();
cJSON
*
pSrcId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
srcId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
srcId
.
addr
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
...
@@ -527,7 +527,7 @@ cJSON* syncPingReply2Json(const SyncPingReply* pMsg) {
...
@@ -527,7 +527,7 @@ cJSON* syncPingReply2Json(const SyncPingReply* pMsg) {
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON
*
pDestId
=
cJSON_CreateObject
();
cJSON
*
pDestId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
destId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
destId
.
addr
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
destId
.
addr
;
uint64_t
u64
=
pMsg
->
destId
.
addr
;
...
@@ -565,27 +565,27 @@ char* syncPingReply2Str(const SyncPingReply* pMsg) {
...
@@ -565,27 +565,27 @@ char* syncPingReply2Str(const SyncPingReply* pMsg) {
// for debug ----------------------
// for debug ----------------------
void
syncPingReplyPrint
(
const
SyncPingReply
*
pMsg
)
{
void
syncPingReplyPrint
(
const
SyncPingReply
*
pMsg
)
{
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
printf
(
"syncPingReplyPrint | len:%
l
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
printf
(
"syncPingReplyPrint | len:%
z
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
syncPingReplyPrint2
(
char
*
s
,
const
SyncPingReply
*
pMsg
)
{
void
syncPingReplyPrint2
(
char
*
s
,
const
SyncPingReply
*
pMsg
)
{
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
printf
(
"syncPingReplyPrint2 | len:%
l
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
printf
(
"syncPingReplyPrint2 | len:%
z
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
syncPingReplyLog
(
const
SyncPingReply
*
pMsg
)
{
void
syncPingReplyLog
(
const
SyncPingReply
*
pMsg
)
{
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
sTrace
(
"syncPingReplyLog | len:%
l
u | %s"
,
strlen
(
serialized
),
serialized
);
sTrace
(
"syncPingReplyLog | len:%
z
u | %s"
,
strlen
(
serialized
),
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
void
syncPingReplyLog2
(
char
*
s
,
const
SyncPingReply
*
pMsg
)
{
void
syncPingReplyLog2
(
char
*
s
,
const
SyncPingReply
*
pMsg
)
{
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
char
*
serialized
=
syncPingReply2Str
(
pMsg
);
sTrace
(
"syncPingReplyLog2 | len:%
l
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
sTrace
(
"syncPingReplyLog2 | len:%
z
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
...
@@ -670,7 +670,7 @@ cJSON* syncClientRequest2Json(const SyncClientRequest* pMsg) {
...
@@ -670,7 +670,7 @@ cJSON* syncClientRequest2Json(const SyncClientRequest* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"bytes"
,
pMsg
->
bytes
);
cJSON_AddNumberToObject
(
pRoot
,
"bytes"
,
pMsg
->
bytes
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"originalRpcType"
,
pMsg
->
originalRpcType
);
cJSON_AddNumberToObject
(
pRoot
,
"originalRpcType"
,
pMsg
->
originalRpcType
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
seqNum
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
seqNum
);
cJSON_AddStringToObject
(
pRoot
,
"seqNum"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"seqNum"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"isWeak"
,
pMsg
->
isWeak
);
cJSON_AddNumberToObject
(
pRoot
,
"isWeak"
,
pMsg
->
isWeak
);
cJSON_AddNumberToObject
(
pRoot
,
"dataLen"
,
pMsg
->
dataLen
);
cJSON_AddNumberToObject
(
pRoot
,
"dataLen"
,
pMsg
->
dataLen
);
...
@@ -792,7 +792,7 @@ cJSON* syncRequestVote2Json(const SyncRequestVote* pMsg) {
...
@@ -792,7 +792,7 @@ cJSON* syncRequestVote2Json(const SyncRequestVote* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON
*
pSrcId
=
cJSON_CreateObject
();
cJSON
*
pSrcId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
srcId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
srcId
.
addr
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
...
@@ -820,11 +820,11 @@ cJSON* syncRequestVote2Json(const SyncRequestVote* pMsg) {
...
@@ -820,11 +820,11 @@ cJSON* syncRequestVote2Json(const SyncRequestVote* pMsg) {
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
term
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
term
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
lastLogIndex
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
lastLogIndex
);
cJSON_AddStringToObject
(
pRoot
,
"lastLogIndex"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"lastLogIndex"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
lastLogTerm
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
lastLogTerm
);
cJSON_AddStringToObject
(
pRoot
,
"lastLogTerm"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"lastLogTerm"
,
u64buf
);
cJSON
*
pJson
=
cJSON_CreateObject
();
cJSON
*
pJson
=
cJSON_CreateObject
();
...
@@ -936,7 +936,7 @@ cJSON* syncRequestVoteReply2Json(const SyncRequestVoteReply* pMsg) {
...
@@ -936,7 +936,7 @@ cJSON* syncRequestVoteReply2Json(const SyncRequestVoteReply* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON
*
pSrcId
=
cJSON_CreateObject
();
cJSON
*
pSrcId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
srcId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
srcId
.
addr
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
...
@@ -964,7 +964,7 @@ cJSON* syncRequestVoteReply2Json(const SyncRequestVoteReply* pMsg) {
...
@@ -964,7 +964,7 @@ cJSON* syncRequestVoteReply2Json(const SyncRequestVoteReply* pMsg) {
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
term
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
term
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"vote_granted"
,
pMsg
->
voteGranted
);
cJSON_AddNumberToObject
(
pRoot
,
"vote_granted"
,
pMsg
->
voteGranted
);
...
@@ -1079,7 +1079,7 @@ cJSON* syncAppendEntries2Json(const SyncAppendEntries* pMsg) {
...
@@ -1079,7 +1079,7 @@ cJSON* syncAppendEntries2Json(const SyncAppendEntries* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON
*
pSrcId
=
cJSON_CreateObject
();
cJSON
*
pSrcId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
srcId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
srcId
.
addr
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
...
@@ -1094,7 +1094,7 @@ cJSON* syncAppendEntries2Json(const SyncAppendEntries* pMsg) {
...
@@ -1094,7 +1094,7 @@ cJSON* syncAppendEntries2Json(const SyncAppendEntries* pMsg) {
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON
*
pDestId
=
cJSON_CreateObject
();
cJSON
*
pDestId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
destId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
destId
.
addr
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
destId
.
addr
;
uint64_t
u64
=
pMsg
->
destId
.
addr
;
...
@@ -1108,16 +1108,16 @@ cJSON* syncAppendEntries2Json(const SyncAppendEntries* pMsg) {
...
@@ -1108,16 +1108,16 @@ cJSON* syncAppendEntries2Json(const SyncAppendEntries* pMsg) {
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
term
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
term
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
prevLogIndex
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
prevLogIndex
);
cJSON_AddStringToObject
(
pRoot
,
"pre_log_index"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pre_log_index"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
prevLogTerm
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
prevLogTerm
);
cJSON_AddStringToObject
(
pRoot
,
"pre_log_term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pre_log_term"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
commitIndex
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
commitIndex
);
cJSON_AddStringToObject
(
pRoot
,
"commit_index"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"commit_index"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"dataLen"
,
pMsg
->
dataLen
);
cJSON_AddNumberToObject
(
pRoot
,
"dataLen"
,
pMsg
->
dataLen
);
...
@@ -1238,7 +1238,7 @@ cJSON* syncAppendEntriesReply2Json(const SyncAppendEntriesReply* pMsg) {
...
@@ -1238,7 +1238,7 @@ cJSON* syncAppendEntriesReply2Json(const SyncAppendEntriesReply* pMsg) {
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pMsg
->
msgType
);
cJSON
*
pSrcId
=
cJSON_CreateObject
();
cJSON
*
pSrcId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
srcId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
srcId
.
addr
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pSrcId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
uint64_t
u64
=
pMsg
->
srcId
.
addr
;
...
@@ -1253,7 +1253,7 @@ cJSON* syncAppendEntriesReply2Json(const SyncAppendEntriesReply* pMsg) {
...
@@ -1253,7 +1253,7 @@ cJSON* syncAppendEntriesReply2Json(const SyncAppendEntriesReply* pMsg) {
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON_AddItemToObject
(
pRoot
,
"srcId"
,
pSrcId
);
cJSON
*
pDestId
=
cJSON_CreateObject
();
cJSON
*
pDestId
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
destId
.
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
destId
.
addr
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pDestId
,
"addr"
,
u64buf
);
{
{
uint64_t
u64
=
pMsg
->
destId
.
addr
;
uint64_t
u64
=
pMsg
->
destId
.
addr
;
...
@@ -1267,10 +1267,10 @@ cJSON* syncAppendEntriesReply2Json(const SyncAppendEntriesReply* pMsg) {
...
@@ -1267,10 +1267,10 @@ cJSON* syncAppendEntriesReply2Json(const SyncAppendEntriesReply* pMsg) {
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddNumberToObject
(
pDestId
,
"vgId"
,
pMsg
->
destId
.
vgId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
cJSON_AddItemToObject
(
pRoot
,
"destId"
,
pDestId
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
term
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
term
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"success"
,
pMsg
->
success
);
cJSON_AddNumberToObject
(
pRoot
,
"success"
,
pMsg
->
success
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pMsg
->
matchIndex
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pMsg
->
matchIndex
);
cJSON_AddStringToObject
(
pRoot
,
"matchIndex"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"matchIndex"
,
u64buf
);
cJSON
*
pJson
=
cJSON_CreateObject
();
cJSON
*
pJson
=
cJSON_CreateObject
();
...
...
source/libs/sync/src/syncRaftEntry.c
浏览文件 @
ba12601d
...
@@ -74,12 +74,12 @@ cJSON* syncEntry2Json(const SSyncRaftEntry* pEntry) {
...
@@ -74,12 +74,12 @@ cJSON* syncEntry2Json(const SSyncRaftEntry* pEntry) {
cJSON_AddNumberToObject
(
pRoot
,
"bytes"
,
pEntry
->
bytes
);
cJSON_AddNumberToObject
(
pRoot
,
"bytes"
,
pEntry
->
bytes
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pEntry
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"msgType"
,
pEntry
->
msgType
);
cJSON_AddNumberToObject
(
pRoot
,
"originalRpcType"
,
pEntry
->
originalRpcType
);
cJSON_AddNumberToObject
(
pRoot
,
"originalRpcType"
,
pEntry
->
originalRpcType
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pEntry
->
seqNum
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pEntry
->
seqNum
);
cJSON_AddStringToObject
(
pRoot
,
"seqNum"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"seqNum"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"isWeak"
,
pEntry
->
isWeak
);
cJSON_AddNumberToObject
(
pRoot
,
"isWeak"
,
pEntry
->
isWeak
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pEntry
->
term
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pEntry
->
term
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pEntry
->
index
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pEntry
->
index
);
cJSON_AddStringToObject
(
pRoot
,
"index"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"index"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"dataLen"
,
pEntry
->
dataLen
);
cJSON_AddNumberToObject
(
pRoot
,
"dataLen"
,
pEntry
->
dataLen
);
...
@@ -107,26 +107,26 @@ char* syncEntry2Str(const SSyncRaftEntry* pEntry) {
...
@@ -107,26 +107,26 @@ char* syncEntry2Str(const SSyncRaftEntry* pEntry) {
// for debug ----------------------
// for debug ----------------------
void
syncEntryPrint
(
const
SSyncRaftEntry
*
pObj
)
{
void
syncEntryPrint
(
const
SSyncRaftEntry
*
pObj
)
{
char
*
serialized
=
syncEntry2Str
(
pObj
);
char
*
serialized
=
syncEntry2Str
(
pObj
);
printf
(
"syncEntryPrint | len:%
l
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
printf
(
"syncEntryPrint | len:%
z
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
syncEntryPrint2
(
char
*
s
,
const
SSyncRaftEntry
*
pObj
)
{
void
syncEntryPrint2
(
char
*
s
,
const
SSyncRaftEntry
*
pObj
)
{
char
*
serialized
=
syncEntry2Str
(
pObj
);
char
*
serialized
=
syncEntry2Str
(
pObj
);
printf
(
"syncEntryPrint2 | len:%
l
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
printf
(
"syncEntryPrint2 | len:%
z
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
syncEntryLog
(
const
SSyncRaftEntry
*
pObj
)
{
void
syncEntryLog
(
const
SSyncRaftEntry
*
pObj
)
{
char
*
serialized
=
syncEntry2Str
(
pObj
);
char
*
serialized
=
syncEntry2Str
(
pObj
);
sTrace
(
"syncEntryLog | len:%
l
u | %s"
,
strlen
(
serialized
),
serialized
);
sTrace
(
"syncEntryLog | len:%
z
u | %s"
,
strlen
(
serialized
),
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
void
syncEntryLog2
(
char
*
s
,
const
SSyncRaftEntry
*
pObj
)
{
void
syncEntryLog2
(
char
*
s
,
const
SSyncRaftEntry
*
pObj
)
{
char
*
serialized
=
syncEntry2Str
(
pObj
);
char
*
serialized
=
syncEntry2Str
(
pObj
);
sTrace
(
"syncEntryLog2 | len:%
l
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
sTrace
(
"syncEntryLog2 | len:%
z
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
\ No newline at end of file
source/libs/sync/src/syncRaftLog.c
浏览文件 @
ba12601d
...
@@ -34,6 +34,7 @@ SSyncLogStore* logStoreCreate(SSyncNode* pSyncNode) {
...
@@ -34,6 +34,7 @@ SSyncLogStore* logStoreCreate(SSyncNode* pSyncNode) {
pLogStore
->
getLastTerm
=
logStoreLastTerm
;
pLogStore
->
getLastTerm
=
logStoreLastTerm
;
pLogStore
->
updateCommitIndex
=
logStoreUpdateCommitIndex
;
pLogStore
->
updateCommitIndex
=
logStoreUpdateCommitIndex
;
pLogStore
->
getCommitIndex
=
logStoreGetCommitIndex
;
pLogStore
->
getCommitIndex
=
logStoreGetCommitIndex
;
return
pLogStore
;
// to avoid compiler error
}
}
void
logStoreDestory
(
SSyncLogStore
*
pLogStore
)
{
void
logStoreDestory
(
SSyncLogStore
*
pLogStore
)
{
...
@@ -58,6 +59,7 @@ int32_t logStoreAppendEntry(SSyncLogStore* pLogStore, SSyncRaftEntry* pEntry) {
...
@@ -58,6 +59,7 @@ int32_t logStoreAppendEntry(SSyncLogStore* pLogStore, SSyncRaftEntry* pEntry) {
walFsync
(
pWal
,
true
);
walFsync
(
pWal
,
true
);
free
(
serialized
);
free
(
serialized
);
return
code
;
// to avoid compiler error
}
}
SSyncRaftEntry
*
logStoreGetEntry
(
SSyncLogStore
*
pLogStore
,
SyncIndex
index
)
{
SSyncRaftEntry
*
logStoreGetEntry
(
SSyncLogStore
*
pLogStore
,
SyncIndex
index
)
{
...
@@ -79,6 +81,7 @@ int32_t logStoreTruncate(SSyncLogStore* pLogStore, SyncIndex fromIndex) {
...
@@ -79,6 +81,7 @@ int32_t logStoreTruncate(SSyncLogStore* pLogStore, SyncIndex fromIndex) {
SSyncLogStoreData
*
pData
=
pLogStore
->
data
;
SSyncLogStoreData
*
pData
=
pLogStore
->
data
;
SWal
*
pWal
=
pData
->
pWal
;
SWal
*
pWal
=
pData
->
pWal
;
walRollback
(
pWal
,
fromIndex
);
walRollback
(
pWal
,
fromIndex
);
return
0
;
// to avoid compiler error
}
}
SyncIndex
logStoreLastIndex
(
SSyncLogStore
*
pLogStore
)
{
SyncIndex
logStoreLastIndex
(
SSyncLogStore
*
pLogStore
)
{
...
@@ -102,6 +105,7 @@ int32_t logStoreUpdateCommitIndex(SSyncLogStore* pLogStore, SyncIndex index) {
...
@@ -102,6 +105,7 @@ int32_t logStoreUpdateCommitIndex(SSyncLogStore* pLogStore, SyncIndex index) {
SSyncLogStoreData
*
pData
=
pLogStore
->
data
;
SSyncLogStoreData
*
pData
=
pLogStore
->
data
;
SWal
*
pWal
=
pData
->
pWal
;
SWal
*
pWal
=
pData
->
pWal
;
walCommit
(
pWal
,
index
);
walCommit
(
pWal
,
index
);
return
0
;
// to avoid compiler error
}
}
SyncIndex
logStoreGetCommitIndex
(
SSyncLogStore
*
pLogStore
)
{
SyncIndex
logStoreGetCommitIndex
(
SSyncLogStore
*
pLogStore
)
{
...
@@ -130,9 +134,9 @@ cJSON* logStore2Json(SSyncLogStore* pLogStore) {
...
@@ -130,9 +134,9 @@ cJSON* logStore2Json(SSyncLogStore* pLogStore) {
cJSON_AddStringToObject
(
pRoot
,
"pSyncNode"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pSyncNode"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pData
->
pWal
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pData
->
pWal
);
cJSON_AddStringToObject
(
pRoot
,
"pWal"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pWal"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
ld
"
,
logStoreLastIndex
(
pLogStore
));
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRId64
"
"
,
logStoreLastIndex
(
pLogStore
));
cJSON_AddStringToObject
(
pRoot
,
"LastIndex"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"LastIndex"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
logStoreLastTerm
(
pLogStore
));
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
logStoreLastTerm
(
pLogStore
));
cJSON_AddStringToObject
(
pRoot
,
"LastTerm"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"LastTerm"
,
u64buf
);
cJSON
*
pEntries
=
cJSON_CreateArray
();
cJSON
*
pEntries
=
cJSON_CreateArray
();
...
@@ -181,4 +185,4 @@ void logStoreLog2(char* s, SSyncLogStore* pLogStore) {
...
@@ -181,4 +185,4 @@ void logStoreLog2(char* s, SSyncLogStore* pLogStore) {
char
*
serialized
=
logStore2Str
(
pLogStore
);
char
*
serialized
=
logStore2Str
(
pLogStore
);
sTrace
(
"logStorePrint | len:%lu | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
sTrace
(
"logStorePrint | len:%lu | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
\ No newline at end of file
source/libs/sync/src/syncRequestVoteReply.c
浏览文件 @
ba12601d
...
@@ -41,7 +41,7 @@ int32_t syncNodeOnRequestVoteReplyCb(SSyncNode* ths, SyncRequestVoteReply* pMsg)
...
@@ -41,7 +41,7 @@ int32_t syncNodeOnRequestVoteReplyCb(SSyncNode* ths, SyncRequestVoteReply* pMsg)
syncRequestVoteReplyLog2
(
"==syncNodeOnRequestVoteReplyCb=="
,
pMsg
);
syncRequestVoteReplyLog2
(
"==syncNodeOnRequestVoteReplyCb=="
,
pMsg
);
if
(
pMsg
->
term
<
ths
->
pRaftStore
->
currentTerm
)
{
if
(
pMsg
->
term
<
ths
->
pRaftStore
->
currentTerm
)
{
sTrace
(
"DropStaleResponse, receive term:%
lu, current term:%lu
"
,
pMsg
->
term
,
ths
->
pRaftStore
->
currentTerm
);
sTrace
(
"DropStaleResponse, receive term:%
"
PRIu64
", current term:%"
PRIu64
"
"
,
pMsg
->
term
,
ths
->
pRaftStore
->
currentTerm
);
return
ret
;
return
ret
;
}
}
...
...
source/libs/sync/src/syncUtil.c
浏览文件 @
ba12601d
...
@@ -119,7 +119,7 @@ cJSON* syncUtilRaftId2Json(const SRaftId* p) {
...
@@ -119,7 +119,7 @@ cJSON* syncUtilRaftId2Json(const SRaftId* p) {
char
u64buf
[
128
];
char
u64buf
[
128
];
cJSON
*
pRoot
=
cJSON_CreateObject
();
cJSON
*
pRoot
=
cJSON_CreateObject
();
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
p
->
addr
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
p
->
addr
);
cJSON_AddStringToObject
(
pRoot
,
"addr"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"addr"
,
u64buf
);
char
host
[
128
];
char
host
[
128
];
uint16_t
port
;
uint16_t
port
;
...
@@ -196,4 +196,4 @@ SyncIndex syncUtilMinIndex(SyncIndex a, SyncIndex b) {
...
@@ -196,4 +196,4 @@ SyncIndex syncUtilMinIndex(SyncIndex a, SyncIndex b) {
SyncIndex
syncUtilMaxIndex
(
SyncIndex
a
,
SyncIndex
b
)
{
SyncIndex
syncUtilMaxIndex
(
SyncIndex
a
,
SyncIndex
b
)
{
SyncIndex
r
=
a
>
b
?
a
:
b
;
SyncIndex
r
=
a
>
b
?
a
:
b
;
return
r
;
return
r
;
}
}
\ No newline at end of file
source/libs/sync/src/syncVoteMgr.c
浏览文件 @
ba12601d
...
@@ -97,7 +97,7 @@ cJSON *voteGranted2Json(SVotesGranted *pVotesGranted) {
...
@@ -97,7 +97,7 @@ cJSON *voteGranted2Json(SVotesGranted *pVotesGranted) {
cJSON_AddItemToObject
(
pRoot
,
"isGranted"
,
pIsGranted
);
cJSON_AddItemToObject
(
pRoot
,
"isGranted"
,
pIsGranted
);
cJSON_AddNumberToObject
(
pRoot
,
"votes"
,
pVotesGranted
->
votes
);
cJSON_AddNumberToObject
(
pRoot
,
"votes"
,
pVotesGranted
->
votes
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pVotesGranted
->
term
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pVotesGranted
->
term
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddNumberToObject
(
pRoot
,
"quorum"
,
pVotesGranted
->
quorum
);
cJSON_AddNumberToObject
(
pRoot
,
"quorum"
,
pVotesGranted
->
quorum
);
cJSON_AddNumberToObject
(
pRoot
,
"toLeader"
,
pVotesGranted
->
toLeader
);
cJSON_AddNumberToObject
(
pRoot
,
"toLeader"
,
pVotesGranted
->
toLeader
);
...
@@ -122,27 +122,27 @@ char *voteGranted2Str(SVotesGranted *pVotesGranted) {
...
@@ -122,27 +122,27 @@ char *voteGranted2Str(SVotesGranted *pVotesGranted) {
// for debug -------------------
// for debug -------------------
void
voteGrantedPrint
(
SVotesGranted
*
pObj
)
{
void
voteGrantedPrint
(
SVotesGranted
*
pObj
)
{
char
*
serialized
=
voteGranted2Str
(
pObj
);
char
*
serialized
=
voteGranted2Str
(
pObj
);
printf
(
"voteGrantedPrint | len:%
l
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
printf
(
"voteGrantedPrint | len:%
z
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
voteGrantedPrint2
(
char
*
s
,
SVotesGranted
*
pObj
)
{
void
voteGrantedPrint2
(
char
*
s
,
SVotesGranted
*
pObj
)
{
char
*
serialized
=
voteGranted2Str
(
pObj
);
char
*
serialized
=
voteGranted2Str
(
pObj
);
printf
(
"voteGrantedPrint2 | len:%
l
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
printf
(
"voteGrantedPrint2 | len:%
z
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
voteGrantedLog
(
SVotesGranted
*
pObj
)
{
void
voteGrantedLog
(
SVotesGranted
*
pObj
)
{
char
*
serialized
=
voteGranted2Str
(
pObj
);
char
*
serialized
=
voteGranted2Str
(
pObj
);
sTrace
(
"voteGrantedLog | len:%
l
u | %s"
,
strlen
(
serialized
),
serialized
);
sTrace
(
"voteGrantedLog | len:%
z
u | %s"
,
strlen
(
serialized
),
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
void
voteGrantedLog2
(
char
*
s
,
SVotesGranted
*
pObj
)
{
void
voteGrantedLog2
(
char
*
s
,
SVotesGranted
*
pObj
)
{
char
*
serialized
=
voteGranted2Str
(
pObj
);
char
*
serialized
=
voteGranted2Str
(
pObj
);
sTrace
(
"voteGrantedLog2 | len:%
l
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
sTrace
(
"voteGrantedLog2 | len:%
z
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
...
@@ -222,7 +222,7 @@ cJSON *votesRespond2Json(SVotesRespond *pVotesRespond) {
...
@@ -222,7 +222,7 @@ cJSON *votesRespond2Json(SVotesRespond *pVotesRespond) {
cJSON_AddItemToObject
(
pRoot
,
"isRespond"
,
pIsRespond
);
cJSON_AddItemToObject
(
pRoot
,
"isRespond"
,
pIsRespond
);
cJSON_AddNumberToObject
(
pRoot
,
"respondNum"
,
respondNum
);
cJSON_AddNumberToObject
(
pRoot
,
"respondNum"
,
respondNum
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
lu
"
,
pVotesRespond
->
term
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%
"
PRIu64
"
"
,
pVotesRespond
->
term
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"term"
,
u64buf
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pVotesRespond
->
pSyncNode
);
snprintf
(
u64buf
,
sizeof
(
u64buf
),
"%p"
,
pVotesRespond
->
pSyncNode
);
cJSON_AddStringToObject
(
pRoot
,
"pSyncNode"
,
u64buf
);
cJSON_AddStringToObject
(
pRoot
,
"pSyncNode"
,
u64buf
);
...
@@ -242,26 +242,26 @@ char *votesRespond2Str(SVotesRespond *pVotesRespond) {
...
@@ -242,26 +242,26 @@ char *votesRespond2Str(SVotesRespond *pVotesRespond) {
// for debug -------------------
// for debug -------------------
void
votesRespondPrint
(
SVotesRespond
*
pObj
)
{
void
votesRespondPrint
(
SVotesRespond
*
pObj
)
{
char
*
serialized
=
votesRespond2Str
(
pObj
);
char
*
serialized
=
votesRespond2Str
(
pObj
);
printf
(
"votesRespondPrint | len:%
l
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
printf
(
"votesRespondPrint | len:%
z
u | %s
\n
"
,
strlen
(
serialized
),
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
votesRespondPrint2
(
char
*
s
,
SVotesRespond
*
pObj
)
{
void
votesRespondPrint2
(
char
*
s
,
SVotesRespond
*
pObj
)
{
char
*
serialized
=
votesRespond2Str
(
pObj
);
char
*
serialized
=
votesRespond2Str
(
pObj
);
printf
(
"votesRespondPrint2 | len:%
l
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
printf
(
"votesRespondPrint2 | len:%
z
u | %s | %s
\n
"
,
strlen
(
serialized
),
s
,
serialized
);
fflush
(
NULL
);
fflush
(
NULL
);
free
(
serialized
);
free
(
serialized
);
}
}
void
votesRespondLog
(
SVotesRespond
*
pObj
)
{
void
votesRespondLog
(
SVotesRespond
*
pObj
)
{
char
*
serialized
=
votesRespond2Str
(
pObj
);
char
*
serialized
=
votesRespond2Str
(
pObj
);
sTrace
(
"votesRespondLog | len:%
l
u | %s"
,
strlen
(
serialized
),
serialized
);
sTrace
(
"votesRespondLog | len:%
z
u | %s"
,
strlen
(
serialized
),
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
void
votesRespondLog2
(
char
*
s
,
SVotesRespond
*
pObj
)
{
void
votesRespondLog2
(
char
*
s
,
SVotesRespond
*
pObj
)
{
char
*
serialized
=
votesRespond2Str
(
pObj
);
char
*
serialized
=
votesRespond2Str
(
pObj
);
sTrace
(
"votesRespondLog2 | len:%
l
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
sTrace
(
"votesRespondLog2 | len:%
z
u | %s | %s"
,
strlen
(
serialized
),
s
,
serialized
);
free
(
serialized
);
free
(
serialized
);
}
}
\ No newline at end of file
source/libs/tfs/src/tfs.c
浏览文件 @
ba12601d
...
@@ -558,4 +558,4 @@ void tfsGetMonitorInfo(STfs *pTfs, SMonDiskInfo *pInfo) {
...
@@ -558,4 +558,4 @@ void tfsGetMonitorInfo(STfs *pTfs, SMonDiskInfo *pInfo) {
}
}
}
}
tfsUnLock
(
pTfs
);
tfsUnLock
(
pTfs
);
}
}
\ No newline at end of file
source/libs/transport/inc/transComm.h
浏览文件 @
ba12601d
...
@@ -125,9 +125,8 @@ typedef SRpcInfo STrans;
...
@@ -125,9 +125,8 @@ typedef SRpcInfo STrans;
typedef
SRpcConnInfo
STransHandleInfo
;
typedef
SRpcConnInfo
STransHandleInfo
;
typedef
struct
{
typedef
struct
{
SEpSet
epSet
;
// ip list provided by app
SEpSet
epSet
;
// ip list provided by app
void
*
ahandle
;
// handle provided by app
void
*
ahandle
;
// handle provided by app
// struct SRpcConn* pConn; // pConn allocated
tmsg_t
msgType
;
// message type
tmsg_t
msgType
;
// message type
uint8_t
*
pCont
;
// content provided by app
uint8_t
*
pCont
;
// content provided by app
int32_t
contLen
;
// content length
int32_t
contLen
;
// content length
...
@@ -135,7 +134,7 @@ typedef struct {
...
@@ -135,7 +134,7 @@ typedef struct {
// int16_t numOfTry; // number of try for different servers
// int16_t numOfTry; // number of try for different servers
// int8_t oldInUse; // server EP inUse passed by app
// int8_t oldInUse; // server EP inUse passed by app
// int8_t redirect; // flag to indicate redirect
// int8_t redirect; // flag to indicate redirect
int8_t
connType
;
// connection type
int8_t
connType
;
// connection type
cli/srv
int64_t
rid
;
// refId returned by taosAddRef
int64_t
rid
;
// refId returned by taosAddRef
STransMsg
*
pRsp
;
// for synchronous API
STransMsg
*
pRsp
;
// for synchronous API
...
@@ -253,6 +252,9 @@ void transUnrefSrvHandle(void* handle);
...
@@ -253,6 +252,9 @@ void transUnrefSrvHandle(void* handle);
void
transRefCliHandle
(
void
*
handle
);
void
transRefCliHandle
(
void
*
handle
);
void
transUnrefCliHandle
(
void
*
handle
);
void
transUnrefCliHandle
(
void
*
handle
);
void
transReleaseCliHandle
(
void
*
handle
);
void
transReleaseSrvHandle
(
void
*
handle
);
void
transSendRequest
(
void
*
shandle
,
const
char
*
ip
,
uint32_t
port
,
STransMsg
*
pMsg
);
void
transSendRequest
(
void
*
shandle
,
const
char
*
ip
,
uint32_t
port
,
STransMsg
*
pMsg
);
void
transSendRecv
(
void
*
shandle
,
const
char
*
ip
,
uint32_t
port
,
STransMsg
*
pMsg
,
STransMsg
*
pRsp
);
void
transSendRecv
(
void
*
shandle
,
const
char
*
ip
,
uint32_t
port
,
STransMsg
*
pMsg
,
STransMsg
*
pRsp
);
void
transSendResponse
(
const
STransMsg
*
pMsg
);
void
transSendResponse
(
const
STransMsg
*
pMsg
);
...
...
source/libs/transport/inc/transportInt.h
浏览文件 @
ba12601d
...
@@ -65,6 +65,7 @@ typedef struct {
...
@@ -65,6 +65,7 @@ typedef struct {
int
(
*
afp
)(
void
*
parent
,
char
*
user
,
char
*
spi
,
char
*
encrypt
,
char
*
secret
,
char
*
ckey
);
int
(
*
afp
)(
void
*
parent
,
char
*
user
,
char
*
spi
,
char
*
encrypt
,
char
*
secret
,
char
*
ckey
);
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
);
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
);
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
);
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
);
bool
(
*
efp
)(
void
*
parent
,
tmsg_t
msgType
);
int32_t
refCount
;
int32_t
refCount
;
void
*
parent
;
void
*
parent
;
...
...
source/libs/transport/src/trans.c
浏览文件 @
ba12601d
...
@@ -22,6 +22,11 @@ void* (*taosInitHandle[])(uint32_t ip, uint32_t port, char* label, int numOfThre
...
@@ -22,6 +22,11 @@ void* (*taosInitHandle[])(uint32_t ip, uint32_t port, char* label, int numOfThre
void
(
*
taosCloseHandle
[])(
void
*
arg
)
=
{
transCloseServer
,
transCloseClient
};
void
(
*
taosCloseHandle
[])(
void
*
arg
)
=
{
transCloseServer
,
transCloseClient
};
void
(
*
taosRefHandle
[])(
void
*
handle
)
=
{
transRefSrvHandle
,
transRefCliHandle
};
void
(
*
taosUnRefHandle
[])(
void
*
handle
)
=
{
transUnrefSrvHandle
,
transUnrefCliHandle
};
void
(
*
transReleaseHandle
[])(
void
*
handle
)
=
{
transReleaseSrvHandle
,
transReleaseCliHandle
};
void
*
rpcOpen
(
const
SRpcInit
*
pInit
)
{
void
*
rpcOpen
(
const
SRpcInit
*
pInit
)
{
SRpcInfo
*
pRpc
=
calloc
(
1
,
sizeof
(
SRpcInfo
));
SRpcInfo
*
pRpc
=
calloc
(
1
,
sizeof
(
SRpcInfo
));
if
(
pRpc
==
NULL
)
{
if
(
pRpc
==
NULL
)
{
...
@@ -36,6 +41,7 @@ void* rpcOpen(const SRpcInit* pInit) {
...
@@ -36,6 +41,7 @@ void* rpcOpen(const SRpcInit* pInit) {
pRpc
->
afp
=
pInit
->
afp
;
pRpc
->
afp
=
pInit
->
afp
;
pRpc
->
pfp
=
pInit
->
pfp
;
pRpc
->
pfp
=
pInit
->
pfp
;
pRpc
->
mfp
=
pInit
->
mfp
;
pRpc
->
mfp
=
pInit
->
mfp
;
pRpc
->
efp
=
pInit
->
efp
;
if
(
pInit
->
connType
==
TAOS_CONN_SERVER
)
{
if
(
pInit
->
connType
==
TAOS_CONN_SERVER
)
{
pRpc
->
numOfThreads
=
pInit
->
numOfThreads
>
TSDB_MAX_RPC_THREADS
?
TSDB_MAX_RPC_THREADS
:
pInit
->
numOfThreads
;
pRpc
->
numOfThreads
=
pInit
->
numOfThreads
>
TSDB_MAX_RPC_THREADS
?
TSDB_MAX_RPC_THREADS
:
pInit
->
numOfThreads
;
...
@@ -126,9 +132,6 @@ void rpcSendRecv(void* shandle, SEpSet* pEpSet, SRpcMsg* pMsg, SRpcMsg* pRsp) {
...
@@ -126,9 +132,6 @@ void rpcSendRecv(void* shandle, SEpSet* pEpSet, SRpcMsg* pMsg, SRpcMsg* pRsp) {
void
rpcSendResponse
(
const
SRpcMsg
*
pMsg
)
{
transSendResponse
(
pMsg
);
}
void
rpcSendResponse
(
const
SRpcMsg
*
pMsg
)
{
transSendResponse
(
pMsg
);
}
int
rpcGetConnInfo
(
void
*
thandle
,
SRpcConnInfo
*
pInfo
)
{
return
transGetConnInfo
((
void
*
)
thandle
,
pInfo
);
}
int
rpcGetConnInfo
(
void
*
thandle
,
SRpcConnInfo
*
pInfo
)
{
return
transGetConnInfo
((
void
*
)
thandle
,
pInfo
);
}
void
(
*
taosRefHandle
[])(
void
*
handle
)
=
{
transRefSrvHandle
,
transRefCliHandle
};
void
(
*
taosUnRefHandle
[])(
void
*
handle
)
=
{
transUnrefSrvHandle
,
transUnrefCliHandle
};
void
rpcRefHandle
(
void
*
handle
,
int8_t
type
)
{
void
rpcRefHandle
(
void
*
handle
,
int8_t
type
)
{
assert
(
type
==
TAOS_CONN_SERVER
||
type
==
TAOS_CONN_CLIENT
);
assert
(
type
==
TAOS_CONN_SERVER
||
type
==
TAOS_CONN_CLIENT
);
(
*
taosRefHandle
[
type
])(
handle
);
(
*
taosRefHandle
[
type
])(
handle
);
...
@@ -139,6 +142,11 @@ void rpcUnrefHandle(void* handle, int8_t type) {
...
@@ -139,6 +142,11 @@ void rpcUnrefHandle(void* handle, int8_t type) {
(
*
taosUnRefHandle
[
type
])(
handle
);
(
*
taosUnRefHandle
[
type
])(
handle
);
}
}
void
rpcReleaseHandle
(
void
*
handle
,
int8_t
type
)
{
assert
(
type
==
TAOS_CONN_SERVER
||
type
==
TAOS_CONN_CLIENT
);
(
*
transReleaseHandle
[
type
])(
handle
);
}
int32_t
rpcInit
()
{
int32_t
rpcInit
()
{
// impl later
// impl later
return
0
;
return
0
;
...
...
source/libs/transport/src/transCli.c
浏览文件 @
ba12601d
...
@@ -17,6 +17,11 @@
...
@@ -17,6 +17,11 @@
#include "transComm.h"
#include "transComm.h"
// Normal(default): send/recv msg
// Quit: quit rpc inst
// Release: release handle to rpc inst
typedef
enum
{
Normal
,
Quit
,
Release
}
SCliMsgType
;
typedef
struct
SCliConn
{
typedef
struct
SCliConn
{
T_REF_DECLARE
()
T_REF_DECLARE
()
uv_connect_t
connReq
;
uv_connect_t
connReq
;
...
@@ -34,6 +39,10 @@ typedef struct SCliConn {
...
@@ -34,6 +39,10 @@ typedef struct SCliConn {
// spi configure
// spi configure
char
spi
;
char
spi
;
char
secured
;
char
secured
;
char
*
ip
;
uint32_t
port
;
// debug and log info
// debug and log info
struct
sockaddr_in
addr
;
struct
sockaddr_in
addr
;
struct
sockaddr_in
locaddr
;
struct
sockaddr_in
locaddr
;
...
@@ -45,6 +54,7 @@ typedef struct SCliMsg {
...
@@ -45,6 +54,7 @@ typedef struct SCliMsg {
STransMsg
msg
;
STransMsg
msg
;
queue
q
;
queue
q
;
uint64_t
st
;
uint64_t
st
;
SCliMsgType
type
;
}
SCliMsg
;
}
SCliMsg
;
typedef
struct
SCliThrdObj
{
typedef
struct
SCliThrdObj
{
...
@@ -79,7 +89,7 @@ typedef struct SConnList {
...
@@ -79,7 +89,7 @@ typedef struct SConnList {
static
void
*
createConnPool
(
int
size
);
static
void
*
createConnPool
(
int
size
);
static
void
*
destroyConnPool
(
void
*
pool
);
static
void
*
destroyConnPool
(
void
*
pool
);
static
SCliConn
*
getConnFromPool
(
void
*
pool
,
char
*
ip
,
uint32_t
port
);
static
SCliConn
*
getConnFromPool
(
void
*
pool
,
char
*
ip
,
uint32_t
port
);
static
void
addConnToPool
(
void
*
pool
,
char
*
ip
,
uint32_t
port
,
SCliConn
*
conn
);
static
void
addConnToPool
(
void
*
pool
,
SCliConn
*
conn
);
// register timer in each thread to clear expire conn
// register timer in each thread to clear expire conn
static
void
cliTimeoutCb
(
uv_timer_t
*
handle
);
static
void
cliTimeoutCb
(
uv_timer_t
*
handle
);
...
@@ -104,6 +114,8 @@ static void cliHandleExcept(SCliConn* conn);
...
@@ -104,6 +114,8 @@ static void cliHandleExcept(SCliConn* conn);
// handle req from app
// handle req from app
static
void
cliHandleReq
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleReq
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleQuit
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleQuit
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliHandleRelease
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
);
static
void
cliSendQuit
(
SCliThrdObj
*
thrd
);
static
void
cliSendQuit
(
SCliThrdObj
*
thrd
);
static
void
destroyUserdata
(
STransMsg
*
userdata
);
static
void
destroyUserdata
(
STransMsg
*
userdata
);
...
@@ -117,8 +129,8 @@ static void destroyThrdObj(SCliThrdObj* pThrd);
...
@@ -117,8 +129,8 @@ static void destroyThrdObj(SCliThrdObj* pThrd);
#define CONN_HOST_THREAD_INDEX(conn) (conn ? ((SCliConn*)conn)->hThrdIdx : -1)
#define CONN_HOST_THREAD_INDEX(conn) (conn ? ((SCliConn*)conn)->hThrdIdx : -1)
#define CONN_PERSIST_TIME(para) (para * 1000 * 10)
#define CONN_PERSIST_TIME(para) (para * 1000 * 10)
#define CONN_GET_HOST_THREAD(conn) (conn ? ((SCliConn*)conn)->hostThrd : NULL)
#define CONN_GET_INST_LABEL(conn) (((STrans*)(((SCliThrdObj*)
conn
->hostThrd)->pTransInst))->label)
#define CONN_GET_INST_LABEL(conn) (((STrans*)(((SCliThrdObj*)
(conn)
->hostThrd)->pTransInst))->label)
#define CONN_HANDLE_THREAD_QUIT(conn, thrd) \
#define CONN_HANDLE_THREAD_QUIT(conn, thrd) \
do { \
do { \
if (thrd->quit) { \
if (thrd->quit) { \
...
@@ -188,6 +200,12 @@ void cliHandleResp(SCliConn* conn) {
...
@@ -188,6 +200,12 @@ void cliHandleResp(SCliConn* conn) {
conn
->
secured
=
pHead
->
secured
;
conn
->
secured
=
pHead
->
secured
;
if
(
pCtx
==
NULL
&&
CONN_NO_PERSIST_BY_APP
(
conn
))
{
tTrace
(
"except, server continue send while cli ignore it"
);
// transUnrefCliHandle(conn);
return
;
}
if
(
pCtx
==
NULL
||
pCtx
->
pSem
==
NULL
)
{
if
(
pCtx
==
NULL
||
pCtx
->
pSem
==
NULL
)
{
tTrace
(
"%s cli conn %p handle resp"
,
pTransInst
->
label
,
conn
);
tTrace
(
"%s cli conn %p handle resp"
,
pTransInst
->
label
,
conn
);
(
pTransInst
->
cfp
)(
pTransInst
->
parent
,
&
transMsg
,
NULL
);
(
pTransInst
->
cfp
)(
pTransInst
->
parent
,
&
transMsg
,
NULL
);
...
@@ -197,14 +215,13 @@ void cliHandleResp(SCliConn* conn) {
...
@@ -197,14 +215,13 @@ void cliHandleResp(SCliConn* conn) {
tsem_post
(
pCtx
->
pSem
);
tsem_post
(
pCtx
->
pSem
);
}
}
uv_read_start
((
uv_stream_t
*
)
conn
->
stream
,
cliAllocRecvBufferCb
,
cliRecvCb
);
if
(
CONN_NO_PERSIST_BY_APP
(
conn
))
{
if
(
CONN_NO_PERSIST_BY_APP
(
conn
))
{
addConnToPool
(
pThrd
->
pool
,
pCtx
->
ip
,
pCtx
->
port
,
conn
);
addConnToPool
(
pThrd
->
pool
,
conn
);
}
}
destroyCmsg
(
conn
->
data
);
destroyCmsg
(
conn
->
data
);
conn
->
data
=
NULL
;
conn
->
data
=
NULL
;
uv_read_start
((
uv_stream_t
*
)
conn
->
stream
,
cliAllocRecvBufferCb
,
cliRecvCb
);
// start thread's timer of conn pool if not active
// start thread's timer of conn pool if not active
if
(
!
uv_is_active
((
uv_handle_t
*
)
&
pThrd
->
timer
)
&&
pTransInst
->
idleTime
>
0
)
{
if
(
!
uv_is_active
((
uv_handle_t
*
)
&
pThrd
->
timer
)
&&
pTransInst
->
idleTime
>
0
)
{
// uv_timer_start((uv_timer_t*)&pThrd->timer, cliTimeoutCb, CONN_PERSIST_TIME(pRpc->idleTime) / 2, 0);
// uv_timer_start((uv_timer_t*)&pThrd->timer, cliTimeoutCb, CONN_PERSIST_TIME(pRpc->idleTime) / 2, 0);
...
@@ -291,6 +308,7 @@ void* destroyConnPool(void* pool) {
...
@@ -291,6 +308,7 @@ void* destroyConnPool(void* pool) {
connList
=
taosHashIterate
((
SHashObj
*
)
pool
,
connList
);
connList
=
taosHashIterate
((
SHashObj
*
)
pool
,
connList
);
}
}
taosHashCleanup
(
pool
);
taosHashCleanup
(
pool
);
return
NULL
;
}
}
static
SCliConn
*
getConnFromPool
(
void
*
pool
,
char
*
ip
,
uint32_t
port
)
{
static
SCliConn
*
getConnFromPool
(
void
*
pool
,
char
*
ip
,
uint32_t
port
)
{
...
@@ -317,11 +335,11 @@ static SCliConn* getConnFromPool(void* pool, char* ip, uint32_t port) {
...
@@ -317,11 +335,11 @@ static SCliConn* getConnFromPool(void* pool, char* ip, uint32_t port) {
QUEUE_INIT
(
&
conn
->
conn
);
QUEUE_INIT
(
&
conn
->
conn
);
return
conn
;
return
conn
;
}
}
static
void
addConnToPool
(
void
*
pool
,
char
*
ip
,
uint32_t
port
,
SCliConn
*
conn
)
{
static
void
addConnToPool
(
void
*
pool
,
SCliConn
*
conn
)
{
char
key
[
128
]
=
{
0
};
char
key
[
128
]
=
{
0
};
tstrncpy
(
key
,
ip
,
strlen
(
ip
));
tstrncpy
(
key
,
conn
->
ip
,
strlen
(
conn
->
ip
));
tstrncpy
(
key
+
strlen
(
key
),
(
char
*
)(
&
port
),
sizeof
(
port
));
tstrncpy
(
key
+
strlen
(
key
),
(
char
*
)(
&
conn
->
port
),
sizeof
(
conn
->
port
));
tTrace
(
"cli conn %p added to conn pool, read buf cap: %d"
,
conn
,
conn
->
readBuf
.
cap
);
tTrace
(
"cli conn %p added to conn pool, read buf cap: %d"
,
conn
,
conn
->
readBuf
.
cap
);
STrans
*
pTransInst
=
((
SCliThrdObj
*
)
conn
->
hostThrd
)
->
pTransInst
;
STrans
*
pTransInst
=
((
SCliThrdObj
*
)
conn
->
hostThrd
)
->
pTransInst
;
...
@@ -335,6 +353,8 @@ static void addConnToPool(void* pool, char* ip, uint32_t port, SCliConn* conn) {
...
@@ -335,6 +353,8 @@ static void addConnToPool(void* pool, char* ip, uint32_t port, SCliConn* conn) {
static
void
cliAllocRecvBufferCb
(
uv_handle_t
*
handle
,
size_t
suggested_size
,
uv_buf_t
*
buf
)
{
static
void
cliAllocRecvBufferCb
(
uv_handle_t
*
handle
,
size_t
suggested_size
,
uv_buf_t
*
buf
)
{
SCliConn
*
conn
=
handle
->
data
;
SCliConn
*
conn
=
handle
->
data
;
SConnBuffer
*
pBuf
=
&
conn
->
readBuf
;
SConnBuffer
*
pBuf
=
&
conn
->
readBuf
;
// avoid conn
QUEUE_REMOVE
(
&
conn
->
conn
);
transAllocBuffer
(
pBuf
,
buf
);
transAllocBuffer
(
pBuf
,
buf
);
}
}
static
void
cliRecvCb
(
uv_stream_t
*
handle
,
ssize_t
nread
,
const
uv_buf_t
*
buf
)
{
static
void
cliRecvCb
(
uv_stream_t
*
handle
,
ssize_t
nread
,
const
uv_buf_t
*
buf
)
{
...
@@ -395,7 +415,7 @@ static void cliDestroyConn(SCliConn* conn, bool clear) {
...
@@ -395,7 +415,7 @@ static void cliDestroyConn(SCliConn* conn, bool clear) {
}
}
static
void
cliDestroy
(
uv_handle_t
*
handle
)
{
static
void
cliDestroy
(
uv_handle_t
*
handle
)
{
SCliConn
*
conn
=
handle
->
data
;
SCliConn
*
conn
=
handle
->
data
;
free
(
conn
->
ip
);
free
(
conn
->
stream
);
free
(
conn
->
stream
);
tTrace
(
"%s cli conn %p destroy successfully"
,
CONN_GET_INST_LABEL
(
conn
),
conn
);
tTrace
(
"%s cli conn %p destroy successfully"
,
CONN_GET_INST_LABEL
(
conn
),
conn
);
free
(
conn
);
free
(
conn
);
...
@@ -497,6 +517,22 @@ static void cliHandleQuit(SCliMsg* pMsg, SCliThrdObj* pThrd) {
...
@@ -497,6 +517,22 @@ static void cliHandleQuit(SCliMsg* pMsg, SCliThrdObj* pThrd) {
pThrd
->
quit
=
true
;
pThrd
->
quit
=
true
;
uv_stop
(
pThrd
->
loop
);
uv_stop
(
pThrd
->
loop
);
}
}
static
void
cliHandleRelease
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
SCliConn
*
conn
=
pMsg
->
msg
.
handle
;
tDebug
(
"%s cli conn %p release to inst"
,
CONN_GET_INST_LABEL
(
conn
),
conn
);
destroyCmsg
(
pMsg
);
conn
->
data
=
NULL
;
transDestroyBuffer
(
&
conn
->
readBuf
);
if
(
conn
->
persist
&&
T_REF_VAL_GET
(
conn
)
>=
2
)
{
conn
->
persist
=
false
;
transUnrefCliHandle
(
conn
);
addConnToPool
(
pThrd
->
pool
,
conn
);
}
else
{
transUnrefCliHandle
(
conn
);
}
}
SCliConn
*
cliGetConn
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
SCliConn
*
cliGetConn
(
SCliMsg
*
pMsg
,
SCliThrdObj
*
pThrd
)
{
SCliConn
*
conn
=
NULL
;
SCliConn
*
conn
=
NULL
;
...
@@ -508,7 +544,9 @@ SCliConn* cliGetConn(SCliMsg* pMsg, SCliThrdObj* pThrd) {
...
@@ -508,7 +544,9 @@ SCliConn* cliGetConn(SCliMsg* pMsg, SCliThrdObj* pThrd) {
}
else
{
}
else
{
STransConnCtx
*
pCtx
=
pMsg
->
ctx
;
STransConnCtx
*
pCtx
=
pMsg
->
ctx
;
conn
=
getConnFromPool
(
pThrd
->
pool
,
pCtx
->
ip
,
pCtx
->
port
);
conn
=
getConnFromPool
(
pThrd
->
pool
,
pCtx
->
ip
,
pCtx
->
port
);
if
(
conn
!=
NULL
)
tTrace
(
"%s cli conn %p get from conn pool"
,
CONN_GET_INST_LABEL
(
conn
),
conn
);
if
(
conn
!=
NULL
)
{
tTrace
(
"%s cli conn %p get from conn pool"
,
CONN_GET_INST_LABEL
(
conn
),
conn
);
}
}
}
return
conn
;
return
conn
;
}
}
...
@@ -524,11 +562,16 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
...
@@ -524,11 +562,16 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
SCliConn
*
conn
=
cliGetConn
(
pMsg
,
pThrd
);
SCliConn
*
conn
=
cliGetConn
(
pMsg
,
pThrd
);
if
(
conn
!=
NULL
)
{
if
(
conn
!=
NULL
)
{
conn
->
data
=
pMsg
;
conn
->
data
=
pMsg
;
conn
->
hThrdIdx
=
pCtx
->
hThrdIdx
;
transDestroyBuffer
(
&
conn
->
readBuf
);
transDestroyBuffer
(
&
conn
->
readBuf
);
cliSend
(
conn
);
cliSend
(
conn
);
}
else
{
}
else
{
conn
=
cliCreateConn
(
pThrd
);
conn
=
cliCreateConn
(
pThrd
);
conn
->
data
=
pMsg
;
conn
->
data
=
pMsg
;
conn
->
hThrdIdx
=
pCtx
->
hThrdIdx
;
conn
->
ip
=
strdup
(
pMsg
->
ctx
->
ip
);
conn
->
port
=
pMsg
->
ctx
->
port
;
int
ret
=
transSetConnOption
((
uv_tcp_t
*
)
conn
->
stream
);
int
ret
=
transSetConnOption
((
uv_tcp_t
*
)
conn
->
stream
);
if
(
ret
)
{
if
(
ret
)
{
...
@@ -540,8 +583,6 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
...
@@ -540,8 +583,6 @@ void cliHandleReq(SCliMsg* pMsg, SCliThrdObj* pThrd) {
tTrace
(
"%s cli conn %p try to connect to %s:%d"
,
pTransInst
->
label
,
conn
,
pMsg
->
ctx
->
ip
,
pMsg
->
ctx
->
port
);
tTrace
(
"%s cli conn %p try to connect to %s:%d"
,
pTransInst
->
label
,
conn
,
pMsg
->
ctx
->
ip
,
pMsg
->
ctx
->
port
);
uv_tcp_connect
(
&
conn
->
connReq
,
(
uv_tcp_t
*
)(
conn
->
stream
),
(
const
struct
sockaddr
*
)
&
addr
,
cliConnCb
);
uv_tcp_connect
(
&
conn
->
connReq
,
(
uv_tcp_t
*
)(
conn
->
stream
),
(
const
struct
sockaddr
*
)
&
addr
,
cliConnCb
);
}
}
conn
->
hThrdIdx
=
pCtx
->
hThrdIdx
;
}
}
static
void
cliAsyncCb
(
uv_async_t
*
handle
)
{
static
void
cliAsyncCb
(
uv_async_t
*
handle
)
{
SAsyncItem
*
item
=
handle
->
data
;
SAsyncItem
*
item
=
handle
->
data
;
...
@@ -560,10 +601,13 @@ static void cliAsyncCb(uv_async_t* handle) {
...
@@ -560,10 +601,13 @@ static void cliAsyncCb(uv_async_t* handle) {
QUEUE_REMOVE
(
h
);
QUEUE_REMOVE
(
h
);
SCliMsg
*
pMsg
=
QUEUE_DATA
(
h
,
SCliMsg
,
q
);
SCliMsg
*
pMsg
=
QUEUE_DATA
(
h
,
SCliMsg
,
q
);
if
(
pMsg
->
ctx
==
NULL
)
{
cliHandleQuit
(
pMsg
,
pThrd
);
if
(
pMsg
->
type
==
Normal
)
{
}
else
{
cliHandleReq
(
pMsg
,
pThrd
);
cliHandleReq
(
pMsg
,
pThrd
);
}
else
if
(
pMsg
->
type
==
Quit
)
{
cliHandleQuit
(
pMsg
,
pThrd
);
}
else
if
(
pMsg
->
type
==
Release
)
{
cliHandleRelease
(
pMsg
,
pThrd
);
}
}
count
++
;
count
++
;
}
}
...
@@ -576,6 +620,8 @@ static void* cliWorkThread(void* arg) {
...
@@ -576,6 +620,8 @@ static void* cliWorkThread(void* arg) {
SCliThrdObj
*
pThrd
=
(
SCliThrdObj
*
)
arg
;
SCliThrdObj
*
pThrd
=
(
SCliThrdObj
*
)
arg
;
setThreadName
(
"trans-cli-work"
);
setThreadName
(
"trans-cli-work"
);
uv_run
(
pThrd
->
loop
,
UV_RUN_DEFAULT
);
uv_run
(
pThrd
->
loop
,
UV_RUN_DEFAULT
);
return
NULL
;
}
}
void
*
transInitClient
(
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
)
{
...
@@ -659,8 +705,10 @@ static void transDestroyConnCtx(STransConnCtx* ctx) {
...
@@ -659,8 +705,10 @@ static void transDestroyConnCtx(STransConnCtx* ctx) {
void
cliSendQuit
(
SCliThrdObj
*
thrd
)
{
void
cliSendQuit
(
SCliThrdObj
*
thrd
)
{
// cli can stop gracefully
// cli can stop gracefully
SCliMsg
*
msg
=
calloc
(
1
,
sizeof
(
SCliMsg
));
SCliMsg
*
msg
=
calloc
(
1
,
sizeof
(
SCliMsg
));
msg
->
type
=
Quit
;
transSendAsync
(
thrd
->
asyncPool
,
&
msg
->
q
);
transSendAsync
(
thrd
->
asyncPool
,
&
msg
->
q
);
}
}
int
cliRBChoseIdx
(
STrans
*
pTransInst
)
{
int
cliRBChoseIdx
(
STrans
*
pTransInst
)
{
int64_t
index
=
pTransInst
->
index
;
int64_t
index
=
pTransInst
->
index
;
if
(
pTransInst
->
index
++
>=
pTransInst
->
numOfThreads
)
{
if
(
pTransInst
->
index
++
>=
pTransInst
->
numOfThreads
)
{
...
@@ -690,10 +738,24 @@ void transUnrefCliHandle(void* handle) {
...
@@ -690,10 +738,24 @@ void transUnrefCliHandle(void* handle) {
return
;
return
;
}
}
int
ref
=
T_REF_DEC
((
SCliConn
*
)
handle
);
int
ref
=
T_REF_DEC
((
SCliConn
*
)
handle
);
tDebug
(
"%s cli conn %p ref %d"
,
CONN_GET_INST_LABEL
((
SCliConn
*
)
handle
),
handle
,
ref
);
if
(
ref
==
0
)
{
if
(
ref
==
0
)
{
cliDestroyConn
((
SCliConn
*
)
handle
,
true
);
cliDestroyConn
((
SCliConn
*
)
handle
,
true
);
}
}
}
}
void
transReleaseCliHandle
(
void
*
handle
)
{
SCliThrdObj
*
thrd
=
CONN_GET_HOST_THREAD
(
handle
);
if
(
thrd
==
NULL
)
{
return
;
}
STransMsg
tmsg
=
{.
handle
=
handle
};
SCliMsg
*
cmsg
=
calloc
(
1
,
sizeof
(
SCliMsg
));
cmsg
->
type
=
Release
;
cmsg
->
msg
=
tmsg
;
transSendAsync
(
thrd
->
asyncPool
,
&
cmsg
->
q
);
}
void
transSendRequest
(
void
*
shandle
,
const
char
*
ip
,
uint32_t
port
,
STransMsg
*
pMsg
)
{
void
transSendRequest
(
void
*
shandle
,
const
char
*
ip
,
uint32_t
port
,
STransMsg
*
pMsg
)
{
STrans
*
pTransInst
=
(
STrans
*
)
shandle
;
STrans
*
pTransInst
=
(
STrans
*
)
shandle
;
...
@@ -716,7 +778,7 @@ void transSendRequest(void* shandle, const char* ip, uint32_t port, STransMsg* p
...
@@ -716,7 +778,7 @@ void transSendRequest(void* shandle, const char* ip, uint32_t port, STransMsg* p
assert
(
pTransInst
->
connType
==
TAOS_CONN_CLIENT
);
assert
(
pTransInst
->
connType
==
TAOS_CONN_CLIENT
);
// atomic or not
// atomic or not
SCliMsg
*
cliMsg
=
malloc
(
sizeof
(
SCliMsg
));
SCliMsg
*
cliMsg
=
calloc
(
1
,
sizeof
(
SCliMsg
));
cliMsg
->
ctx
=
pCtx
;
cliMsg
->
ctx
=
pCtx
;
cliMsg
->
msg
=
*
pMsg
;
cliMsg
->
msg
=
*
pMsg
;
cliMsg
->
st
=
taosGetTimestampUs
();
cliMsg
->
st
=
taosGetTimestampUs
();
...
@@ -741,7 +803,7 @@ void transSendRecv(void* shandle, const char* ip, uint32_t port, STransMsg* pReq
...
@@ -741,7 +803,7 @@ void transSendRecv(void* shandle, const char* ip, uint32_t port, STransMsg* pReq
pCtx
->
pRsp
=
pRsp
;
pCtx
->
pRsp
=
pRsp
;
tsem_init
(
pCtx
->
pSem
,
0
,
0
);
tsem_init
(
pCtx
->
pSem
,
0
,
0
);
SCliMsg
*
cliMsg
=
malloc
(
sizeof
(
SCliMsg
));
SCliMsg
*
cliMsg
=
calloc
(
1
,
sizeof
(
SCliMsg
));
cliMsg
->
ctx
=
pCtx
;
cliMsg
->
ctx
=
pCtx
;
cliMsg
->
msg
=
*
pReq
;
cliMsg
->
msg
=
*
pReq
;
cliMsg
->
st
=
taosGetTimestampUs
();
cliMsg
->
st
=
taosGetTimestampUs
();
...
...
source/libs/transport/src/transComm.c
浏览文件 @
ba12601d
...
@@ -155,14 +155,16 @@ bool transReadComplete(SConnBuffer* connBuf) {
...
@@ -155,14 +155,16 @@ bool transReadComplete(SConnBuffer* connBuf) {
}
}
return
false
;
return
false
;
}
}
int
transPackMsg
(
STransMsgHead
*
msgHead
,
bool
sercured
,
bool
auth
)
{}
int
transPackMsg
(
STransMsgHead
*
msgHead
,
bool
sercured
,
bool
auth
)
{
return
0
;
}
int
transUnpackMsg
(
STransMsgHead
*
msgHead
)
{}
int
transUnpackMsg
(
STransMsgHead
*
msgHead
)
{
return
0
;
}
int
transDestroyBuffer
(
SConnBuffer
*
buf
)
{
int
transDestroyBuffer
(
SConnBuffer
*
buf
)
{
if
(
buf
->
cap
>
0
)
{
if
(
buf
->
cap
>
0
)
{
tfree
(
buf
->
buf
);
tfree
(
buf
->
buf
);
}
}
transClearBuffer
(
buf
);
transClearBuffer
(
buf
);
return
0
;
}
}
int
transSetConnOption
(
uv_tcp_t
*
stream
)
{
int
transSetConnOption
(
uv_tcp_t
*
stream
)
{
...
...
source/libs/transport/src/transSrv.c
浏览文件 @
ba12601d
...
@@ -106,6 +106,8 @@ static void uvStartSendRespInternal(SSrvMsg* smsg);
...
@@ -106,6 +106,8 @@ static void uvStartSendRespInternal(SSrvMsg* smsg);
static
void
uvPrepareSendData
(
SSrvMsg
*
msg
,
uv_buf_t
*
wb
);
static
void
uvPrepareSendData
(
SSrvMsg
*
msg
,
uv_buf_t
*
wb
);
static
void
uvStartSendResp
(
SSrvMsg
*
msg
);
static
void
uvStartSendResp
(
SSrvMsg
*
msg
);
static
void
uvNotifyLinkBrokenToApp
(
SSrvConn
*
conn
);
static
void
destroySmsg
(
SSrvMsg
*
smsg
);
static
void
destroySmsg
(
SSrvMsg
*
smsg
);
// check whether already read complete packet
// check whether already read complete packet
static
SSrvConn
*
createConn
(
void
*
hThrd
);
static
SSrvConn
*
createConn
(
void
*
hThrd
);
...
@@ -233,7 +235,7 @@ static void uvHandleReq(SSrvConn* pConn) {
...
@@ -233,7 +235,7 @@ static void uvHandleReq(SSrvConn* pConn) {
ntohs
(
pConn
->
locaddr
.
sin_port
),
transMsg
.
contLen
);
ntohs
(
pConn
->
locaddr
.
sin_port
),
transMsg
.
contLen
);
STrans
*
pTransInst
=
(
STrans
*
)
p
->
shandle
;
STrans
*
pTransInst
=
(
STrans
*
)
p
->
shandle
;
(
*
((
STrans
*
)
p
->
shandle
)
->
cfp
)(
pTransInst
->
parent
,
&
transMsg
,
NULL
);
(
*
pTransInst
->
cfp
)(
pTransInst
->
parent
,
&
transMsg
,
NULL
);
// uv_timer_start(&pConn->pTimer, uvHandleActivityTimeout, pRpc->idleTime * 10000, 0);
// uv_timer_start(&pConn->pTimer, uvHandleActivityTimeout, pRpc->idleTime * 10000, 0);
// auth
// auth
// validate msg type
// validate msg type
...
@@ -261,13 +263,12 @@ void uvOnRecvCb(uv_stream_t* cli, ssize_t nread, const uv_buf_t* buf) {
...
@@ -261,13 +263,12 @@ void uvOnRecvCb(uv_stream_t* cli, ssize_t nread, const uv_buf_t* buf) {
tError
(
"server conn %p read error: %s"
,
conn
,
uv_err_name
(
nread
));
tError
(
"server conn %p read error: %s"
,
conn
,
uv_err_name
(
nread
));
if
(
nread
<
0
)
{
if
(
nread
<
0
)
{
conn
->
broken
=
true
;
conn
->
broken
=
true
;
transUnrefSrvHandle
(
conn
);
uvNotifyLinkBrokenToApp
(
conn
);
//
if (conn->ref > 1) {
//
STrans* pTransInst = conn->pTransInst;
//
conn->ref++; // ref > 1 signed that write is in progress
//
if (pTransInst->efp != NULL && (pTransInst->efp)(NULL, conn->inType)) {
//}
//}
// tError("server conn %p read error: %s", conn, uv_err_name(nread));
transUnrefSrvHandle
(
conn
);
// destroyConn(conn, true);
}
}
}
}
void
uvAllocConnBufferCb
(
uv_handle_t
*
handle
,
size_t
suggested_size
,
uv_buf_t
*
buf
)
{
void
uvAllocConnBufferCb
(
uv_handle_t
*
handle
,
size_t
suggested_size
,
uv_buf_t
*
buf
)
{
...
@@ -289,11 +290,13 @@ void uvOnSendCb(uv_write_t* req, int status) {
...
@@ -289,11 +290,13 @@ void uvOnSendCb(uv_write_t* req, int status) {
if
(
conn
->
srvMsgs
!=
NULL
)
{
if
(
conn
->
srvMsgs
!=
NULL
)
{
assert
(
taosArrayGetSize
(
conn
->
srvMsgs
)
>=
1
);
assert
(
taosArrayGetSize
(
conn
->
srvMsgs
)
>=
1
);
SSrvMsg
*
msg
=
taosArrayGetP
(
conn
->
srvMsgs
,
0
);
SSrvMsg
*
msg
=
taosArrayGetP
(
conn
->
srvMsgs
,
0
);
tTrace
(
"server conn %p sending msg size: %d"
,
conn
,
(
int
)
taosArrayGetSize
(
conn
->
srvMsgs
));
taosArrayRemove
(
conn
->
srvMsgs
,
0
);
taosArrayRemove
(
conn
->
srvMsgs
,
0
);
destroySmsg
(
msg
);
destroySmsg
(
msg
);
// send second data, just use for push
// send second data, just use for push
if
(
taosArrayGetSize
(
conn
->
srvMsgs
)
>
0
)
{
if
(
taosArrayGetSize
(
conn
->
srvMsgs
)
>
0
)
{
tTrace
(
"resent server conn %p sending msg size: %d"
,
conn
,
(
int
)
taosArrayGetSize
(
conn
->
srvMsgs
));
msg
=
(
SSrvMsg
*
)
taosArrayGetP
(
conn
->
srvMsgs
,
0
);
msg
=
(
SSrvMsg
*
)
taosArrayGetP
(
conn
->
srvMsgs
,
0
);
uvStartSendRespInternal
(
msg
);
uvStartSendRespInternal
(
msg
);
}
}
...
@@ -371,6 +374,17 @@ static void uvStartSendResp(SSrvMsg* smsg) {
...
@@ -371,6 +374,17 @@ static void uvStartSendResp(SSrvMsg* smsg) {
uvStartSendRespInternal
(
smsg
);
uvStartSendRespInternal
(
smsg
);
return
;
return
;
}
}
static
void
uvNotifyLinkBrokenToApp
(
SSrvConn
*
conn
)
{
STrans
*
pTransInst
=
conn
->
pTransInst
;
if
(
pTransInst
->
efp
!=
NULL
&&
(
*
pTransInst
->
efp
)(
NULL
,
conn
->
inType
)
&&
T_REF_VAL_GET
(
conn
)
>=
2
)
{
STransMsg
transMsg
=
{
0
};
transMsg
.
msgType
=
conn
->
inType
;
transMsg
.
code
=
TSDB_CODE_RPC_NETWORK_UNAVAIL
;
// transRefSrvHandle(conn);
(
*
pTransInst
->
cfp
)(
pTransInst
->
parent
,
&
transMsg
,
0
);
}
}
static
void
destroySmsg
(
SSrvMsg
*
smsg
)
{
static
void
destroySmsg
(
SSrvMsg
*
smsg
)
{
if
(
smsg
==
NULL
)
{
if
(
smsg
==
NULL
)
{
return
;
return
;
...
@@ -538,6 +552,8 @@ void* acceptThread(void* arg) {
...
@@ -538,6 +552,8 @@ void* acceptThread(void* arg) {
setThreadName
(
"trans-accept"
);
setThreadName
(
"trans-accept"
);
SServerObj
*
srv
=
(
SServerObj
*
)
arg
;
SServerObj
*
srv
=
(
SServerObj
*
)
arg
;
uv_run
(
srv
->
loop
,
UV_RUN_DEFAULT
);
uv_run
(
srv
->
loop
,
UV_RUN_DEFAULT
);
return
NULL
;
}
}
static
bool
addHandleToWorkloop
(
void
*
arg
)
{
static
bool
addHandleToWorkloop
(
void
*
arg
)
{
SWorkThrdObj
*
pThrd
=
arg
;
SWorkThrdObj
*
pThrd
=
arg
;
...
@@ -593,6 +609,8 @@ void* workerThread(void* arg) {
...
@@ -593,6 +609,8 @@ void* workerThread(void* arg) {
setThreadName
(
"trans-worker"
);
setThreadName
(
"trans-worker"
);
SWorkThrdObj
*
pThrd
=
(
SWorkThrdObj
*
)
arg
;
SWorkThrdObj
*
pThrd
=
(
SWorkThrdObj
*
)
arg
;
uv_run
(
pThrd
->
loop
,
UV_RUN_DEFAULT
);
uv_run
(
pThrd
->
loop
,
UV_RUN_DEFAULT
);
return
NULL
;
}
}
static
SSrvConn
*
createConn
(
void
*
hThrd
)
{
static
SSrvConn
*
createConn
(
void
*
hThrd
)
{
...
@@ -639,7 +657,7 @@ static void uvDestroyConn(uv_handle_t* handle) {
...
@@ -639,7 +657,7 @@ static void uvDestroyConn(uv_handle_t* handle) {
uv_timer_stop
(
&
conn
->
pTimer
);
uv_timer_stop
(
&
conn
->
pTimer
);
QUEUE_REMOVE
(
&
conn
->
queue
);
QUEUE_REMOVE
(
&
conn
->
queue
);
free
(
conn
->
pTcp
);
free
(
conn
->
pTcp
);
free
(
conn
);
//
free(conn);
if
(
thrd
->
quit
&&
QUEUE_IS_EMPTY
(
&
thrd
->
conn
))
{
if
(
thrd
->
quit
&&
QUEUE_IS_EMPTY
(
&
thrd
->
conn
))
{
uv_loop_close
(
thrd
->
loop
);
uv_loop_close
(
thrd
->
loop
);
...
@@ -733,7 +751,7 @@ void destroyWorkThrd(SWorkThrdObj* pThrd) {
...
@@ -733,7 +751,7 @@ void destroyWorkThrd(SWorkThrdObj* pThrd) {
}
}
void
sendQuitToWorkThrd
(
SWorkThrdObj
*
pThrd
)
{
void
sendQuitToWorkThrd
(
SWorkThrdObj
*
pThrd
)
{
SSrvMsg
*
srvMsg
=
calloc
(
1
,
sizeof
(
SSrvMsg
));
SSrvMsg
*
srvMsg
=
calloc
(
1
,
sizeof
(
SSrvMsg
));
tDebug
(
"send quit msg to work thread"
);
tDebug
(
"se
rver se
nd quit msg to work thread"
);
transSendAsync
(
pThrd
->
asyncPool
,
&
srvMsg
->
q
);
transSendAsync
(
pThrd
->
asyncPool
,
&
srvMsg
->
q
);
}
}
...
@@ -784,6 +802,11 @@ void transUnrefSrvHandle(void* handle) {
...
@@ -784,6 +802,11 @@ void transUnrefSrvHandle(void* handle) {
}
}
// unref srv handle
// unref srv handle
}
}
void
transReleaseSrvHandle
(
void
*
handle
)
{
// do nothing currently
//
}
void
transSendResponse
(
const
STransMsg
*
pMsg
)
{
void
transSendResponse
(
const
STransMsg
*
pMsg
)
{
if
(
pMsg
->
handle
==
NULL
)
{
if
(
pMsg
->
handle
==
NULL
)
{
return
;
return
;
...
...
source/libs/transport/test/transUT.cc
浏览文件 @
ba12601d
...
@@ -15,6 +15,7 @@
...
@@ -15,6 +15,7 @@
#include <gtest/gtest.h>
#include <gtest/gtest.h>
#include <cstdio>
#include <cstdio>
#include <cstring>
#include <cstring>
#include "rpcLog.h"
#include "tdatablock.h"
#include "tdatablock.h"
#include "tglobal.h"
#include "tglobal.h"
#include "tlog.h"
#include "tlog.h"
...
@@ -29,7 +30,31 @@ const char *ckey = "ckey";
...
@@ -29,7 +30,31 @@ const char *ckey = "ckey";
class
Server
;
class
Server
;
int
port
=
7000
;
int
port
=
7000
;
// server process
// server process
static
bool
cliPersistHandle
(
void
*
parent
,
tmsg_t
msgType
)
{
// client persist handle
return
msgType
==
2
||
msgType
==
4
;
}
typedef
struct
CbArgs
{
tmsg_t
msgType
;
}
CbArgs
;
static
void
*
ConstructArgForSpecificMsgType
(
void
*
parent
,
tmsg_t
msgType
)
{
if
(
msgType
==
1
||
msgType
==
2
)
{
CbArgs
*
args
=
(
CbArgs
*
)
calloc
(
1
,
sizeof
(
CbArgs
));
args
->
msgType
=
msgType
;
return
args
;
}
return
NULL
;
}
// server except
static
bool
handleExcept
(
void
*
parent
,
tmsg_t
msgType
)
{
return
msgType
==
TDMT_VND_QUERY
||
msgType
==
TDMT_VND_FETCH_RSP
||
msgType
==
TDMT_VND_RES_READY_RSP
;
}
typedef
void
(
*
CB
)(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
typedef
void
(
*
CB
)(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
static
void
processContinueSend
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
static
void
processReq
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
static
void
processReq
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
// client process;
// client process;
static
void
processResp
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
static
void
processResp
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
);
...
@@ -61,17 +86,21 @@ class Client {
...
@@ -61,17 +86,21 @@ class Client {
rpcInit_
.
cfp
=
cb
;
rpcInit_
.
cfp
=
cb
;
this
->
transCli
=
rpcOpen
(
&
rpcInit_
);
this
->
transCli
=
rpcOpen
(
&
rpcInit_
);
}
}
void
setPersistFP
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
void
Stop
()
{
rpcClose
(
this
->
transCli
);
this
->
transCli
=
NULL
;
}
void
SetPersistFP
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
rpcClose
(
this
->
transCli
);
rpcClose
(
this
->
transCli
);
rpcInit_
.
pfp
=
pfp
;
rpcInit_
.
pfp
=
pfp
;
this
->
transCli
=
rpcOpen
(
&
rpcInit_
);
this
->
transCli
=
rpcOpen
(
&
rpcInit_
);
}
}
void
s
etConstructFP
(
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
void
S
etConstructFP
(
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
rpcClose
(
this
->
transCli
);
rpcClose
(
this
->
transCli
);
rpcInit_
.
mfp
=
mfp
;
rpcInit_
.
mfp
=
mfp
;
this
->
transCli
=
rpcOpen
(
&
rpcInit_
);
this
->
transCli
=
rpcOpen
(
&
rpcInit_
);
}
}
void
s
etPAndMFp
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
),
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
void
S
etPAndMFp
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
),
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
rpcClose
(
this
->
transCli
);
rpcClose
(
this
->
transCli
);
rpcInit_
.
pfp
=
pfp
;
rpcInit_
.
pfp
=
pfp
;
...
@@ -88,6 +117,15 @@ class Client {
...
@@ -88,6 +117,15 @@ class Client {
SemWait
();
SemWait
();
*
resp
=
this
->
resp
;
*
resp
=
this
->
resp
;
}
}
void
SendAndRecvNoHandle
(
SRpcMsg
*
req
,
SRpcMsg
*
resp
)
{
if
(
req
->
handle
!=
NULL
)
{
rpcReleaseHandle
(
req
->
handle
,
TAOS_CONN_CLIENT
);
req
->
handle
=
NULL
;
}
SendAndRecv
(
req
,
resp
);
}
void
SendWithHandle
(
SRpcMsg
*
req
,
SRpcMsg
*
resp
)
{}
void
SemWait
()
{
tsem_wait
(
&
this
->
sem
);
}
void
SemWait
()
{
tsem_wait
(
&
this
->
sem
);
}
void
SemPost
()
{
tsem_post
(
&
this
->
sem
);
}
void
SemPost
()
{
tsem_post
(
&
this
->
sem
);
}
void
Reset
()
{}
void
Reset
()
{}
...
@@ -105,19 +143,20 @@ class Client {
...
@@ -105,19 +143,20 @@ class Client {
class
Server
{
class
Server
{
public:
public:
Server
()
{
Server
()
{
memset
(
&
rpcInit
,
0
,
sizeof
(
rpcInit
));
memset
(
&
rpcInit_
,
0
,
sizeof
(
rpcInit_
));
rpcInit
.
localPort
=
port
;
rpcInit_
.
localPort
=
port
;
rpcInit
.
label
=
(
char
*
)
label
;
rpcInit_
.
label
=
(
char
*
)
label
;
rpcInit
.
numOfThreads
=
5
;
rpcInit_
.
numOfThreads
=
5
;
rpcInit
.
cfp
=
processReq
;
rpcInit_
.
cfp
=
processReq
;
rpcInit
.
user
=
(
char
*
)
user
;
rpcInit_
.
efp
=
NULL
;
rpcInit
.
secret
=
(
char
*
)
secret
;
rpcInit_
.
user
=
(
char
*
)
user
;
rpcInit
.
ckey
=
(
char
*
)
ckey
;
rpcInit_
.
secret
=
(
char
*
)
secret
;
rpcInit
.
spi
=
1
;
rpcInit_
.
ckey
=
(
char
*
)
ckey
;
rpcInit
.
connType
=
TAOS_CONN_SERVER
;
rpcInit_
.
spi
=
1
;
rpcInit_
.
connType
=
TAOS_CONN_SERVER
;
}
}
void
Start
()
{
void
Start
()
{
this
->
transSrv
=
rpcOpen
(
&
this
->
rpcInit
);
this
->
transSrv
=
rpcOpen
(
&
this
->
rpcInit
_
);
taosMsleep
(
1000
);
taosMsleep
(
1000
);
}
}
void
Stop
()
{
void
Stop
()
{
...
@@ -125,6 +164,16 @@ class Server {
...
@@ -125,6 +164,16 @@ class Server {
rpcClose
(
this
->
transSrv
);
rpcClose
(
this
->
transSrv
);
this
->
transSrv
=
NULL
;
this
->
transSrv
=
NULL
;
}
}
void
SetExceptFp
(
bool
(
*
efp
)(
void
*
parent
,
tmsg_t
msgType
))
{
this
->
Stop
();
rpcInit_
.
efp
=
efp
;
this
->
Start
();
}
void
SetSrvContinueSend
(
void
(
*
cfp
)(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
))
{
this
->
Stop
();
rpcInit_
.
cfp
=
cfp
;
this
->
Start
();
}
void
Restart
()
{
void
Restart
()
{
this
->
Stop
();
this
->
Stop
();
this
->
Start
();
this
->
Start
();
...
@@ -135,7 +184,7 @@ class Server {
...
@@ -135,7 +184,7 @@ class Server {
}
}
private:
private:
SRpcInit
rpcInit
;
SRpcInit
rpcInit
_
;
void
*
transSrv
;
void
*
transSrv
;
};
};
static
void
processReq
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
static
void
processReq
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
...
@@ -146,11 +195,26 @@ static void processReq(void *parent, SRpcMsg *pMsg, SEpSet *pEpSet) {
...
@@ -146,11 +195,26 @@ static void processReq(void *parent, SRpcMsg *pMsg, SEpSet *pEpSet) {
rpcMsg
.
code
=
0
;
rpcMsg
.
code
=
0
;
rpcSendResponse
(
&
rpcMsg
);
rpcSendResponse
(
&
rpcMsg
);
}
}
static
void
processContinueSend
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
for
(
int
i
=
0
;
i
<
9
;
i
++
)
{
rpcRefHandle
(
pMsg
->
handle
,
TAOS_CONN_SERVER
);
}
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
SRpcMsg
rpcMsg
=
{
0
};
rpcMsg
.
pCont
=
rpcMallocCont
(
100
);
rpcMsg
.
contLen
=
100
;
rpcMsg
.
handle
=
pMsg
->
handle
;
rpcMsg
.
code
=
0
;
rpcSendResponse
(
&
rpcMsg
);
}
}
// client process;
// client process;
static
void
processResp
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
static
void
processResp
(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
)
{
Client
*
client
=
(
Client
*
)
parent
;
Client
*
client
=
(
Client
*
)
parent
;
client
->
SetResp
(
pMsg
);
client
->
SetResp
(
pMsg
);
client
->
SemPost
();
client
->
SemPost
();
tDebug
(
"received resp"
);
}
}
static
void
initEnv
()
{
static
void
initEnv
()
{
...
@@ -170,7 +234,7 @@ static void initEnv() {
...
@@ -170,7 +234,7 @@ static void initEnv() {
tsAsyncLog
=
0
;
tsAsyncLog
=
0
;
std
::
string
path
=
"/tmp/transport"
;
std
::
string
path
=
"/tmp/transport"
;
taosRemoveDir
(
path
.
c_str
());
//
taosRemoveDir(path.c_str());
taosMkDir
(
path
.
c_str
());
taosMkDir
(
path
.
c_str
());
tstrncpy
(
tsLogDir
,
path
.
c_str
(),
PATH_MAX
);
tstrncpy
(
tsLogDir
,
path
.
c_str
(),
PATH_MAX
);
...
@@ -178,6 +242,7 @@ static void initEnv() {
...
@@ -178,6 +242,7 @@ static void initEnv() {
printf
(
"failed to init log file
\n
"
);
printf
(
"failed to init log file
\n
"
);
}
}
}
}
class
TransObj
{
class
TransObj
{
public:
public:
TransObj
()
{
TransObj
()
{
...
@@ -188,22 +253,43 @@ class TransObj {
...
@@ -188,22 +253,43 @@ class TransObj {
srv
->
Start
();
srv
->
Start
();
}
}
void
RestartCli
(
CB
cb
)
{
cli
->
Restart
(
cb
);
}
void
RestartCli
(
CB
cb
)
{
void
StopSrv
()
{
srv
->
Stop
();
}
//
cli
->
Restart
(
cb
);
}
void
StopSrv
()
{
//
srv
->
Stop
();
}
void
SetCliPersistFp
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
void
SetCliPersistFp
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
// do nothing
// do nothing
cli
->
s
etPersistFP
(
pfp
);
cli
->
S
etPersistFP
(
pfp
);
}
}
void
SetCliMFp
(
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
void
SetCliMFp
(
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
// do nothing
// do nothing
cli
->
s
etConstructFP
(
mfp
);
cli
->
S
etConstructFP
(
mfp
);
}
}
void
SetMAndPFp
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
),
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
void
Set
Cli
MAndPFp
(
bool
(
*
pfp
)(
void
*
parent
,
tmsg_t
msgType
),
void
*
(
*
mfp
)(
void
*
parent
,
tmsg_t
msgType
))
{
// do nothing
// do nothing
cli
->
setPAndMFp
(
pfp
,
mfp
);
cli
->
SetPAndMFp
(
pfp
,
mfp
);
}
// call when link broken, and notify query or fetch stop
void
SetSrvExceptFp
(
bool
(
*
efp
)(
void
*
parent
,
tmsg_t
msgType
))
{
////////
srv
->
SetExceptFp
(
efp
);
}
void
SetSrvContinueSend
(
void
(
*
cfp
)(
void
*
parent
,
SRpcMsg
*
pMsg
,
SEpSet
*
pEpSet
))
{
///////
srv
->
SetSrvContinueSend
(
cfp
);
}
}
void
RestartSrv
()
{
srv
->
Restart
();
}
void
RestartSrv
()
{
srv
->
Restart
();
}
void
cliStop
()
{
///////
cli
->
Stop
();
}
void
cliSendAndRecv
(
SRpcMsg
*
req
,
SRpcMsg
*
resp
)
{
cli
->
SendAndRecv
(
req
,
resp
);
}
void
cliSendAndRecv
(
SRpcMsg
*
req
,
SRpcMsg
*
resp
)
{
cli
->
SendAndRecv
(
req
,
resp
);
}
void
cliSendAndRecvNoHandle
(
SRpcMsg
*
req
,
SRpcMsg
*
resp
)
{
cli
->
SendAndRecvNoHandle
(
req
,
resp
);
}
~
TransObj
()
{
~
TransObj
()
{
delete
cli
;
delete
cli
;
delete
srv
;
delete
srv
;
...
@@ -256,29 +342,120 @@ TEST_F(TransEnv, 02StopServer) {
...
@@ -256,29 +342,120 @@ TEST_F(TransEnv, 02StopServer) {
tr
->
cliSendAndRecv
(
&
req
,
&
resp
);
tr
->
cliSendAndRecv
(
&
req
,
&
resp
);
assert
(
resp
.
code
!=
0
);
assert
(
resp
.
code
!=
0
);
}
}
TEST_F
(
TransEnv
,
clientUserDefined
)
{}
TEST_F
(
TransEnv
,
clientUserDefined
)
{
tr
->
RestartSrv
();
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
SRpcMsg
req
=
{
0
},
resp
=
{
0
};
req
.
msgType
=
0
;
req
.
pCont
=
rpcMallocCont
(
10
);
req
.
contLen
=
10
;
tr
->
cliSendAndRecv
(
&
req
,
&
resp
);
assert
(
resp
.
code
==
0
);
}
//////////////////
}
TEST_F
(
TransEnv
,
cliPersistHandle
)
{
TEST_F
(
TransEnv
,
cliPersistHandle
)
{
// impl late
tr
->
SetCliPersistFp
(
cliPersistHandle
);
SRpcMsg
resp
=
{
0
};
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
SRpcMsg
req
=
{.
handle
=
resp
.
handle
};
req
.
msgType
=
1
;
req
.
pCont
=
rpcMallocCont
(
10
);
req
.
contLen
=
10
;
tr
->
cliSendAndRecv
(
&
req
,
&
resp
);
if
(
i
==
5
)
{
std
::
cout
<<
"stop server"
<<
std
::
endl
;
tr
->
StopSrv
();
}
if
(
i
>=
6
)
{
EXPECT_TRUE
(
resp
.
code
!=
0
);
}
}
//////////////////
}
}
TEST_F
(
TransEnv
,
srvPersistHandle
)
{
// impl later
TEST_F
(
TransEnv
,
cliReleaseHandle
)
{
tr
->
SetCliPersistFp
(
cliPersistHandle
);
SRpcMsg
resp
=
{
0
};
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
SRpcMsg
req
=
{.
handle
=
resp
.
handle
};
req
.
msgType
=
1
;
req
.
pCont
=
rpcMallocCont
(
10
);
req
.
contLen
=
10
;
tr
->
cliSendAndRecvNoHandle
(
&
req
,
&
resp
);
// if (i == 5) {
// std::cout << "stop server" << std::endl;
// tr->StopSrv();
//}
// if (i >= 6) {
EXPECT_TRUE
(
resp
.
code
==
0
);
//}
}
//////////////////
}
}
TEST_F
(
TransEnv
,
cliReleaseHandleExcept
)
{
tr
->
SetCliPersistFp
(
cliPersistHandle
);
TEST_F
(
TransEnv
,
srvPersisHandleExcept
)
{
SRpcMsg
resp
=
{
0
};
// conn breken
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
//
SRpcMsg
req
=
{.
handle
=
resp
.
handle
};
req
.
msgType
=
1
;
req
.
pCont
=
rpcMallocCont
(
10
);
req
.
contLen
=
10
;
tr
->
cliSendAndRecvNoHandle
(
&
req
,
&
resp
);
if
(
i
==
5
)
{
std
::
cout
<<
"stop server"
<<
std
::
endl
;
tr
->
StopSrv
();
}
if
(
i
>=
6
)
{
EXPECT_TRUE
(
resp
.
code
!=
0
);
}
}
//////////////////
}
}
TEST_F
(
TransEnv
,
cliPersisHandleExcept
)
{
TEST_F
(
TransEnv
,
srvContinueSend
)
{
// conn breken
tr
->
SetSrvContinueSend
(
processContinueSend
);
for
(
int
i
=
0
;
i
<
10
;
i
++
)
{
SRpcMsg
req
=
{
0
},
resp
=
{
0
};
req
.
msgType
=
1
;
req
.
pCont
=
rpcMallocCont
(
10
);
req
.
contLen
=
10
;
tr
->
cliSendAndRecv
(
&
req
,
&
resp
);
}
taosMsleep
(
2000
);
}
}
TEST_F
(
TransEnv
,
multiCliPersisHandleExcept
)
{
TEST_F
(
TransEnv
,
srvPersistHandleExcept
)
{
// conn breken
tr
->
SetSrvContinueSend
(
processContinueSend
);
tr
->
SetCliPersistFp
(
cliPersistHandle
);
SRpcMsg
resp
=
{
0
};
for
(
int
i
=
0
;
i
<
5
;
i
++
)
{
SRpcMsg
req
=
{.
handle
=
resp
.
handle
};
req
.
msgType
=
1
;
req
.
pCont
=
rpcMallocCont
(
10
);
req
.
contLen
=
10
;
tr
->
cliSendAndRecv
(
&
req
,
&
resp
);
if
(
i
>
2
)
{
tr
->
cliStop
();
break
;
}
}
taosMsleep
(
2000
);
// conn broken
//
}
}
TEST_F
(
TransEnv
,
multiSrvPersisHandleExcept
)
{
// conn breken
TEST_F
(
TransEnv
,
multiCliPersistHandleExcept
)
{
// conn broken
}
}
TEST_F
(
TransEnv
,
queryExcept
)
{
TEST_F
(
TransEnv
,
queryExcept
)
{
tr
->
SetSrvExceptFp
(
handleExcept
);
// query and conn is broken
// query and conn is broken
}
}
TEST_F
(
TransEnv
,
noResp
)
{
// no resp
}
source/libs/wal/src/walRead.c
浏览文件 @
ba12601d
...
@@ -169,7 +169,7 @@ int32_t walReadWithHandle(SWalReadHandle *pRead, int64_t ver) {
...
@@ -169,7 +169,7 @@ int32_t walReadWithHandle(SWalReadHandle *pRead, int64_t ver) {
}
}
if
(
pRead
->
pHead
->
head
.
version
!=
ver
)
{
if
(
pRead
->
pHead
->
head
.
version
!=
ver
)
{
wError
(
"unexpected wal log version: %
ld, read request version:%ld
"
,
pRead
->
pHead
->
head
.
version
,
ver
);
wError
(
"unexpected wal log version: %
"
PRId64
", read request version:%"
PRId64
"
"
,
pRead
->
pHead
->
head
.
version
,
ver
);
pRead
->
curVersion
=
-
1
;
pRead
->
curVersion
=
-
1
;
terrno
=
TSDB_CODE_WAL_FILE_CORRUPTED
;
terrno
=
TSDB_CODE_WAL_FILE_CORRUPTED
;
return
-
1
;
return
-
1
;
...
...
source/os/src/osFile.c
浏览文件 @
ba12601d
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
*/
*/
#define ALLOW_FORBID_FUNC
#define ALLOW_FORBID_FUNC
#include "os.h"
#include "os.h"
#include "osSemaphore.h"
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
#include <io.h>
#include <io.h>
...
@@ -35,26 +36,18 @@ extern int openU(const char *, int, ...); /* MsvcLibX UTF-8 version of open */
...
@@ -35,26 +36,18 @@ extern int openU(const char *, int, ...); /* MsvcLibX UTF-8 version of open */
#else
#else
#include <fcntl.h>
#include <fcntl.h>
#include <sys/file.h>
#include <sys/file.h>
#include <sys/sendfile.h>
#if !defined(_TD_DARWIN_64)
#include <sys/sendfile.h>
#endif
#include <sys/stat.h>
#include <sys/stat.h>
#include <unistd.h>
#include <unistd.h>
#define LINUX_FILE_NO_TEXT_OPTION 0
#define LINUX_FILE_NO_TEXT_OPTION 0
#define O_TEXT LINUX_FILE_NO_TEXT_OPTION
#define O_TEXT LINUX_FILE_NO_TEXT_OPTION
#endif
#endif
typedef
int32_t
FileFd
;
#define FILE_WITH_LOCK 1
#define FILE_WITH_LOCK 1
typedef
struct
TdFile
{
#if FILE_WITH_LOCK
pthread_rwlock_t
rwlock
;
#endif
int
refId
;
FileFd
fd
;
FILE
*
fp
;
}
*
TdFilePtr
,
TdFile
;
void
taosGetTmpfilePath
(
const
char
*
inputTmpDir
,
const
char
*
fileNamePrefix
,
char
*
dstPath
)
{
void
taosGetTmpfilePath
(
const
char
*
inputTmpDir
,
const
char
*
fileNamePrefix
,
char
*
dstPath
)
{
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
#if defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32)
const
char
*
tdengineTmpFileNamePrefix
=
"tdengine-"
;
const
char
*
tdengineTmpFileNamePrefix
=
"tdengine-"
;
...
...
source/os/src/osSocket.c
浏览文件 @
ba12601d
...
@@ -17,7 +17,7 @@
...
@@ -17,7 +17,7 @@
#define ALLOW_FORBID_FUNC
#define ALLOW_FORBID_FUNC
#include "os.h"
#include "os.h"
#if defined(
_TD_WINDOWS_64) || defined(_TD_WINDOWS_32
)
#if defined(
WINDOWS
)
#include <IPHlpApi.h>
#include <IPHlpApi.h>
#include <WS2tcpip.h>
#include <WS2tcpip.h>
#include <Winsock2.h>
#include <Winsock2.h>
...
@@ -37,8 +37,14 @@
...
@@ -37,8 +37,14 @@
#include <netinet/tcp.h>
#include <netinet/tcp.h>
#include <netinet/udp.h>
#include <netinet/udp.h>
#include <sys/socket.h>
#include <sys/socket.h>
#include <sys/epoll.h>
#include <unistd.h>
#include <unistd.h>
#if defined(DARWIN)
#include <dispatch/dispatch.h>
#include "osEok.h"
#else
#include <sys/epoll.h>
#endif
#endif
#endif
typedef
int32_t
SocketFd
;
typedef
int32_t
SocketFd
;
...
@@ -210,7 +216,7 @@ int32_t taosShutDownSocketServerRDWR(TdSocketServerPtr pSocketServer) {
...
@@ -210,7 +216,7 @@ int32_t taosShutDownSocketServerRDWR(TdSocketServerPtr pSocketServer) {
#endif
#endif
}
}
#if (defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32))
#if (defined(_TD_WINDOWS_64) || defined(_TD_WINDOWS_32))
#if defined(_TD_GO_DLL_)
#if defined(_TD_GO_DLL_)
uint64_t
htonll
(
uint64_t
val
)
{
return
(((
uint64_t
)
htonl
(
val
))
<<
32
)
+
htonl
(
val
>>
32
);
}
uint64_t
htonll
(
uint64_t
val
)
{
return
(((
uint64_t
)
htonl
(
val
))
<<
32
)
+
htonl
(
val
>>
32
);
}
#endif
#endif
...
...
source/util/src/tconfig.c
浏览文件 @
ba12601d
...
@@ -570,6 +570,7 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) {
...
@@ -570,6 +570,7 @@ void cfgDumpCfg(SConfig *pCfg, bool tsc, bool dump) {
case
CFG_DTYPE_LOCALE
:
case
CFG_DTYPE_LOCALE
:
case
CFG_DTYPE_CHARSET
:
case
CFG_DTYPE_CHARSET
:
case
CFG_DTYPE_TIMEZONE
:
case
CFG_DTYPE_TIMEZONE
:
case
CFG_DTYPE_NONE
:
if
(
dump
)
{
if
(
dump
)
{
printf
(
"%s %s %s"
,
src
,
name
,
pItem
->
str
);
printf
(
"%s %s %s"
,
src
,
name
,
pItem
->
str
);
printf
(
"
\n
"
);
printf
(
"
\n
"
);
...
@@ -655,4 +656,4 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
...
@@ -655,4 +656,4 @@ int32_t cfgLoadFromCfgFile(SConfig *pConfig, const char *filepath) {
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
)
{
int32_t
cfgLoadFromApollUrl
(
SConfig
*
pConfig
,
const
char
*
url
)
{
uInfo
(
"load from apoll url %s"
,
url
);
uInfo
(
"load from apoll url %s"
,
url
);
return
0
;
return
0
;
}
}
\ No newline at end of file
source/util/src/ttimer.c
浏览文件 @
ba12601d
...
@@ -628,7 +628,7 @@ void taosTmrCleanUp(void* handle) {
...
@@ -628,7 +628,7 @@ void taosTmrCleanUp(void* handle) {
tmrCtrls
=
NULL
;
tmrCtrls
=
NULL
;
unusedTmrCtrl
=
NULL
;
unusedTmrCtrl
=
NULL
;
#if
!defined(WINDOWS
)
#if
defined(LINUX
)
tmrModuleInit
=
PTHREAD_ONCE_INIT
;
// to support restart
tmrModuleInit
=
PTHREAD_ONCE_INIT
;
// to support restart
#endif
#endif
}
}
...
...
tests/script/tsim/query/interval.sim
0 → 100644
浏览文件 @
ba12601d
system sh/stop_dnodes.sh
system sh/deploy.sh -n dnode1 -i 1
system sh/cfg.sh -n dnode1 -c wal -v 1
system sh/exec.sh -n dnode1 -s start
sleep 2000
sql connect
$dbPrefix = m_in_db
$tbPrefix = m_in_tb
$mtPrefix = m_in_mt
$tbNum = 10
$rowNum = 20
$totalNum = 200
print =============== step1
$i = 0
$db = $dbPrefix . $i
$mt = $mtPrefix . $i
sql drop database $db -x step1
step1:
sql create database $db
sql use $db
sql create table $mt (ts timestamp, tbcol int) TAGS(tgcol int)
print ====== start create child tables and insert data
$i = 0
while $i < $tbNum
$tb = $tbPrefix . $i
sql create table $tb using $mt tags( $i )
$x = 0
while $x < $rowNum
$cc = $x * 60000
$ms = 1601481600000 + $cc
sql insert into $tb values ($ms , $x )
$x = $x + 1
endw
$i = $i + 1
endw
print =============== step2
$i = 1
$tb = $tbPrefix . $i
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $tb interval(1m)
print ===> $rows
if $rows < $rowNum then
return -1
endi
if $data01 != 1 then
return -1
endi
if $data05 != 1 then
return -1
endi
print =============== step3
$cc = 4 * 60000
$ms = 1601481600000 + $cc
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $tb where ts <= $ms interval(1m)
print ===> $rows
if $rows > 10 then
return -1
endi
if $rows < 3 then
return -1
endi
if $data01 != 1 then
return -1
endi
if $data05 != 1 then
return -1
endi
print =============== step4
$cc = 40 * 60000
$ms = 1601481600000 + $cc
$cc = 1 * 60000
$ms2 = 1601481600000 - $cc
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $tb where ts <= $ms and ts > $ms2 interval(1m)
print ===> $rows
if $rows < 18 then
return -1
endi
if $rows > 22 then
return -1
endi
if $data01 != 1 then
return -1
endi
if $data05 != 1 then
return -1
endi
print =============== step5
$cc = 40 * 60000
$ms = 1601481600000 + $cc
$cc = 1 * 60000
$ms2 = 1601481600000 - $cc
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $tb where ts <= $ms and ts > $ms2 interval(1m) fill(value,0)
print ===> $rows
if $rows < 30 then
return -1
endi
if $rows > 50 then
return -1
endi
if $data21 != 1 then
return -1
endi
if $data25 != 1 then
return -1
endi
print =============== step6
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt interval(1m)
print ===> $rows
if $rows < 18 then
return -1
endi
if $rows > 22 then
return -1
endi
if $data11 > 15 then
return -1
endi
if $data11 < 5 then
return -1
endi
print =============== step7
$cc = 4 * 60000
$ms = 1601481600000 + $cc
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt where ts <= $ms interval(1m)
print ===> $rows
if $rows < 3 then
return -1
endi
if $rows > 7 then
return -1
endi
if $data11 > 15 then
return -1
endi
if $data11 < 5 then
return -1
endi
print =============== step8
$cc = 40 * 60000
$ms1 = 1601481600000 + $cc
$cc = 1 * 60000
$ms2 = 1601481600000 - $cc
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt where ts <= $ms1 and ts > $ms2 interval(1m)
print ===> $rows
if $rows < 18 then
return -1
endi
if $rows > 22 then
return -1
endi
if $data11 > 15 then
return -1
endi
if $data11 < 5 then
return -1
endi
print =============== step9
$cc = 40 * 60000
$ms1 = 1601481600000 + $cc
$cc = 1 * 60000
$ms2 = 1601481600000 - $cc
sql select count(tbcol), sum(tbcol), max(tbcol), min(tbcol), count(tbcol) from $mt where ts <= $ms1 and ts > $ms2 interval(1m) fill(value, 0)
if $rows < 30 then
return -1
endi
if $rows > 50 then
return -1
endi
if $data11 > 15 then
return -1
endi
if $data11 < 5 then
return -1
endi
print =============== clear
sql drop database $db
sql show databases
if $rows != 0 then
return -1
endi
system sh/exec.sh -n dnode1 -s stop -x SIGINT
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录