Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
66dd7d7e
T
TDengine
项目概览
taosdata
/
TDengine
大约 2 年 前同步成功
通知
1193
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看板
提交
66dd7d7e
编写于
8月 10, 2022
作者:
J
jiacy-jcy
浏览文件
操作
浏览文件
下载
差异文件
Merge branch '3.0' into 3.0test/jcy
上级
8152a769
d5e3fb73
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
224 addition
and
288 deletion
+224
-288
cmake/cmake.install
cmake/cmake.install
+1
-0
cmake/cmake.platform
cmake/cmake.platform
+2
-2
docs/zh/10-deployment/03-k8s.md
docs/zh/10-deployment/03-k8s.md
+131
-178
docs/zh/25-application/_03-immigrate.md
docs/zh/25-application/_03-immigrate.md
+0
-0
include/libs/transport/trpc.h
include/libs/transport/trpc.h
+2
-3
include/os/osSystem.h
include/os/osSystem.h
+1
-0
include/util/tdef.h
include/util/tdef.h
+1
-1
packaging/release.bat
packaging/release.bat
+4
-4
source/libs/sync/src/syncReplication.c
source/libs/sync/src/syncReplication.c
+2
-1
source/libs/transport/inc/transComm.h
source/libs/transport/inc/transComm.h
+3
-13
source/libs/transport/src/transCli.c
source/libs/transport/src/transCli.c
+26
-12
source/libs/transport/src/transComm.c
source/libs/transport/src/transComm.c
+12
-54
source/libs/transport/src/transSvr.c
source/libs/transport/src/transSvr.c
+1
-2
source/libs/transport/test/svrBench.c
source/libs/transport/test/svrBench.c
+8
-9
source/os/src/osSemaphore.c
source/os/src/osSemaphore.c
+4
-3
source/os/src/osSysinfo.c
source/os/src/osSysinfo.c
+11
-1
source/os/src/osSystem.c
source/os/src/osSystem.c
+10
-0
source/util/src/tref.c
source/util/src/tref.c
+3
-3
tests/script/jenkins/basic.txt
tests/script/jenkins/basic.txt
+2
-2
未找到文件。
cmake/cmake.install
浏览文件 @
66dd7d7e
...
@@ -22,6 +22,7 @@ ELSEIF (TD_WINDOWS)
...
@@ -22,6 +22,7 @@ ELSEIF (TD_WINDOWS)
INSTALL
(
FILES
$
{
EXECUTABLE_OUTPUT_PATH
}
/
taos
.
exe
DESTINATION
.
)
INSTALL
(
FILES
$
{
EXECUTABLE_OUTPUT_PATH
}
/
taos
.
exe
DESTINATION
.
)
INSTALL
(
FILES
$
{
EXECUTABLE_OUTPUT_PATH
}
/
taosd
.
exe
DESTINATION
.
)
INSTALL
(
FILES
$
{
EXECUTABLE_OUTPUT_PATH
}
/
taosd
.
exe
DESTINATION
.
)
INSTALL
(
FILES
$
{
EXECUTABLE_OUTPUT_PATH
}
/
udfd
.
exe
DESTINATION
.
)
INSTALL
(
FILES
$
{
EXECUTABLE_OUTPUT_PATH
}
/
udfd
.
exe
DESTINATION
.
)
INSTALL
(
FILES
$
{
EXECUTABLE_OUTPUT_PATH
}
/
taosBenchmark
.
exe
DESTINATION
.
)
IF
(
TD_MVN_INSTALLED
)
IF
(
TD_MVN_INSTALLED
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
-
jdbcdriver
-
2.0.38
-
dist
.
jar
DESTINATION
connector
/
jdbc
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
-
jdbcdriver
-
2.0.38
-
dist
.
jar
DESTINATION
connector
/
jdbc
)
...
...
cmake/cmake.platform
浏览文件 @
66dd7d7e
...
@@ -97,13 +97,13 @@ IF ("${CPUTYPE}" STREQUAL "")
...
@@ -97,13 +97,13 @@ IF ("${CPUTYPE}" STREQUAL "")
ELSE ()
ELSE ()
# if generate ARM version:
# if generate ARM version:
# cmake -DCPUTYPE=aarch32 .. or cmake -DCPUTYPE=aarch64
# cmake -DCPUTYPE=aarch32 .. or cmake -DCPUTYPE=aarch64
IF (${CPUTYPE} MATCHES "aarch32"
or
${CPUTYPE} MATCHES "arm32")
IF (${CPUTYPE} MATCHES "aarch32"
OR
${CPUTYPE} MATCHES "arm32")
SET(PLATFORM_ARCH_STR "arm")
SET(PLATFORM_ARCH_STR "arm")
MESSAGE(STATUS "input cpuType: aarch32")
MESSAGE(STATUS "input cpuType: aarch32")
ADD_DEFINITIONS("-D_TD_ARM_")
ADD_DEFINITIONS("-D_TD_ARM_")
ADD_DEFINITIONS("-D_TD_ARM_32")
ADD_DEFINITIONS("-D_TD_ARM_32")
SET(TD_ARM_32 TRUE)
SET(TD_ARM_32 TRUE)
ELSEIF (${CPUTYPE} MATCHES "aarch64"
or
${CPUTYPE} MATCHES "arm64")
ELSEIF (${CPUTYPE} MATCHES "aarch64"
OR
${CPUTYPE} MATCHES "arm64")
SET(PLATFORM_ARCH_STR "arm64")
SET(PLATFORM_ARCH_STR "arm64")
MESSAGE(STATUS "input cpuType: aarch64")
MESSAGE(STATUS "input cpuType: aarch64")
ADD_DEFINITIONS("-D_TD_ARM_")
ADD_DEFINITIONS("-D_TD_ARM_")
...
...
docs/zh/10-deployment/03-k8s.md
浏览文件 @
66dd7d7e
...
@@ -3,27 +3,11 @@ sidebar_label: Kubernetes
...
@@ -3,27 +3,11 @@ sidebar_label: Kubernetes
title
:
在 Kubernetes 上部署 TDengine 集群
title
:
在 Kubernetes 上部署 TDengine 集群
---
---
## 配置 ConfigMap
以下配置文件可以从
[
GitHub 仓库
](
https://github.com/taosdata/TDengine-Operator/tree/3.0/src/tdengine
)
下载。
为 TDengine 创建
`taoscfg.yaml`
,此文件中的配置将作为环境变量传入 TDengine 镜像,更新此配置将导致所有 TDengine POD 重启。
## 配置 Service 服务
```yaml
创建一个 Service 配置文件:
`taosd-service.yaml`
,服务名称
`metadata.name`
(此处为 "taosd") 将在下一步中使用到。添加 TDengine 所用到的所有端口:
---
apiVersion: v1
kind: ConfigMap
metadata:
name: taoscfg
labels:
app: tdengine
data:
CLUSTER: "1"
TAOS_KEEP: "3650"
TAOS_DEBUG_FLAG: "135"
```
## 配置服务
创建一个 service 配置文件:`taosd-service.yaml`,服务名称 `metadata.name` (此处为 "taosd") 将在下一步中使用到。添加 TDengine 所用到的所有端口:
```yaml
```yaml
---
---
...
@@ -38,45 +22,9 @@ spec:
...
@@ -38,45 +22,9 @@ spec:
-
name: tcp6030
-
name: tcp6030
protocol: "TCP"
protocol: "TCP"
port: 6030
port: 6030
-
name
:
tcp6035
protocol
:
"
TCP"
port
:
6035
-
name: tcp6041
-
name: tcp6041
protocol: "TCP"
protocol: "TCP"
port: 6041
port: 6041
-
name
:
udp6030
protocol
:
"
UDP"
port
:
6030
-
name
:
udp6031
protocol
:
"
UDP"
port
:
6031
-
name
:
udp6032
protocol
:
"
UDP"
port
:
6032
-
name
:
udp6033
protocol
:
"
UDP"
port
:
6033
-
name
:
udp6034
protocol
:
"
UDP"
port
:
6034
-
name
:
udp6035
protocol
:
"
UDP"
port
:
6035
-
name
:
udp6036
protocol
:
"
UDP"
port
:
6036
-
name
:
udp6037
protocol
:
"
UDP"
port
:
6037
-
name
:
udp6038
protocol
:
"
UDP"
port
:
6038
-
name
:
udp6039
protocol
:
"
UDP"
port
:
6039
-
name
:
udp6040
protocol
:
"
UDP"
port
:
6040
selector:
selector:
app: "tdengine"
app: "tdengine"
```
```
...
@@ -109,7 +57,7 @@ spec:
...
@@ -109,7 +57,7 @@ spec:
spec:
spec:
containers:
containers:
-
name: "tdengine"
-
name: "tdengine"
image: "
zitsen/taosd:develop
"
image: "
tdengine/tdengine:3.0.0.0
"
imagePullPolicy: "Always"
imagePullPolicy: "Always"
envFrom:
envFrom:
-
configMapRef:
-
configMapRef:
...
@@ -118,45 +66,9 @@ spec:
...
@@ -118,45 +66,9 @@ spec:
-
name: tcp6030
-
name: tcp6030
protocol: "TCP"
protocol: "TCP"
containerPort: 6030
containerPort: 6030
-
name: tcp6035
protocol: "TCP"
containerPort: 6035
-
name: tcp6041
-
name: tcp6041
protocol: "TCP"
protocol: "TCP"
containerPort: 6041
containerPort: 6041
-
name: udp6030
protocol: "UDP"
containerPort: 6030
-
name: udp6031
protocol: "UDP"
containerPort: 6031
-
name: udp6032
protocol: "UDP"
containerPort: 6032
-
name: udp6033
protocol: "UDP"
containerPort: 6033
-
name: udp6034
protocol: "UDP"
containerPort: 6034
-
name: udp6035
protocol: "UDP"
containerPort: 6035
-
name: udp6036
protocol: "UDP"
containerPort: 6036
-
name: udp6037
protocol: "UDP"
containerPort: 6037
-
name: udp6038
protocol: "UDP"
containerPort: 6038
-
name: udp6039
protocol: "UDP"
containerPort: 6039
-
name: udp6040
protocol: "UDP"
containerPort: 6040
env:
env:
# POD_NAME for FQDN config
# POD_NAME for FQDN config
-
name: POD_NAME
-
name: POD_NAME
...
@@ -190,14 +102,13 @@ spec:
...
@@ -190,14 +102,13 @@ spec:
readinessProbe:
readinessProbe:
exec:
exec:
command:
command:
-
taos
-
taos-check
-
-s
-
"show mnodes"
initialDelaySeconds: 5
initialDelaySeconds: 5
timeoutSeconds: 5000
timeoutSeconds: 5000
livenessProbe:
livenessProbe:
tcpSocket:
exec:
port: 6030
command:
-
taos-check
initialDelaySeconds: 15
initialDelaySeconds: 15
periodSeconds: 20
periodSeconds: 20
volumeClaimTemplates:
volumeClaimTemplates:
...
@@ -206,44 +117,78 @@ spec:
...
@@ -206,44 +117,78 @@ spec:
spec:
spec:
accessModes:
accessModes:
-
"ReadWriteOnce"
-
"ReadWriteOnce"
storageClassName: "
csi-rbd-sc
"
storageClassName: "
standard
"
resources:
resources:
requests:
requests:
storage: "10Gi"
storage: "10Gi"
```
```
##
启动
集群
##
使用 kubectl 命令部署 TDengine
集群
将前述三个文件添加到 Kubernetes 集群中:
顺序执行以下命令。
```
bash
```
bash
kubectl apply -f taoscfg.yaml
kubectl apply -f taosd-service.yaml
kubectl apply -f taosd-service.yaml
kubectl apply -f tdengine.yaml
kubectl apply -f tdengine.yaml
```
```
上面的配置将生成一个
两节点的 TDengine 集群,dnode 是自动配置的,可以使用 `show dnodes`
命令查看当前集群的节点:
上面的配置将生成一个
三节点的 TDengine 集群,dnode 是自动配置的,可以使用 show dnodes
命令查看当前集群的节点:
```
bash
```
bash
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes"
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes"
kubectl exec -i -t tdengine-1 -- taos -s "show dnodes"
kubectl exec -i -t tdengine-1 -- taos -s "show dnodes"
kubectl exec -i -t tdengine-2 -- taos -s "show dnodes"
```
```
输出如下:
输出如下:
```
```
Welcome to the TDengine shell from Linux, Client Version:
2.1.1
.0
Welcome to the TDengine shell from Linux, Client Version:
3.0.0
.0
Copyright (c) 202
0
by TAOS Data, Inc. All rights reserved.
Copyright (c) 202
2
by TAOS Data, Inc. All rights reserved.
taos> show dnodes
taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason |
id | endpoint | vnodes | support_vnodes | status | create_time | note |
======================================================================================================================================
============================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 17:13:24.181 | |
1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 17:14:09.257 | |
2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
Query OK, 2 row(s) in set (0.000997s)
3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
Query OK, 3 rows in database (0.003655s)
```
## 使能端口转发
利用 kubectl 端口转发功能可以使应用可以访问 Kubernetes 环境运行的 TDengine 集群。
```
kubectl port-forward tdengine-0 6041:6041 &
```
使用 curl 命令验证 TDengine REST API 使用的 6041 接口。
```
$ curl -u root:taosdata -d "show databases" 127.0.0.1:6041/rest/sql
Handling connection for 6041
{"code":0,"column_meta":[["name","VARCHAR",64],["create_time","TIMESTAMP",8],["vgroups","SMALLINT",2],["ntables","BIGINT",8],["replica","TINYINT",1],["strict","VARCHAR",4],["duration","VARCHAR",10],["keep","VARCHAR",32],["buffer","INT",4],["pagesize","INT",4],["pages","INT",4],["minrows","INT",4],["maxrows","INT",4],["comp","TINYINT",1],["precision","VARCHAR",2],["status","VARCHAR",10],["retention","VARCHAR",60],["single_stable","BOOL",1],["cachemodel","VARCHAR",11],["cachesize","INT",4],["wal_level","TINYINT",1],["wal_fsync_period","INT",4],["wal_retention_period","INT",4],["wal_retention_size","BIGINT",8],["wal_roll_period","INT",4],["wal_segment_size","BIGINT",8]],"data":[["information_schema",null,null,16,null,null,null,null,null,null,null,null,null,null,null,"ready",null,null,null,null,null,null,null,null,null,null],["performance_schema",null,null,10,null,null,null,null,null,null,null,null,null,null,null,"ready",null,null,null,null,null,null,null,null,null,null]],"rows":2}
```
## 使用 dashboard 进行图形化管理
minikube 提供 dashboard 命令支持图形化管理界面。
```
$ minikube dashboard
*
Verifying dashboard health ...
*
Launching proxy ...
*
Verifying proxy health ...
*
Opening http://127.0.0.1:46617/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
http://127.0.0.1:46617/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
```
对于某些公有云环境,minikube 绑定在 127.0.0.1 IP 地址上无法通过远程访问,需要使用 kubectl proxy 命令将端口映射到 0.0.0.0 IP 地址上,再通过浏览器访问虚拟机公网 IP 和端口以及相同的 dashboard URL 路径即可远程访问 dashboard。
```
$ kubectl proxy --accept-hosts='^.
*
$' --address='0.0.0.0'
```
```
## 集群扩容
## 集群扩容
...
@@ -252,14 +197,12 @@ TDengine 集群支持自动扩容:
...
@@ -252,14 +197,12 @@ TDengine 集群支持自动扩容:
```
bash
```
bash
kubectl scale statefulsets tdengine --replicas=4
kubectl scale statefulsets tdengine --replicas=4
```
```
上面命令行中参数 `--replica=4` 表示要将 TDengine 集群扩容到 4 个节点,执行后首先检查 POD 的状态:
上面命令行中参数 `--replica=4` 表示要将 TDengine 集群扩容到 4 个节点,执行后首先检查 POD 的状态:
```
bash
```
bash
kubectl get pods -l app=tdengine
kubectl get pods -l app=tdengine
```
```
输出如下:
输出如下:
...
@@ -270,102 +213,112 @@ tdengine-0 1/1 Running 0 161m
...
@@ -270,102 +213,112 @@ tdengine-0 1/1 Running 0 161m
tdengine-1 1/1 Running 0 161m
tdengine-1 1/1 Running 0 161m
tdengine-2 1/1 Running 0 32m
tdengine-2 1/1 Running 0 32m
tdengine-3 1/1 Running 0 32m
tdengine-3 1/1 Running 0 32m
```
```
此时 POD 的状态仍然是 Running,TDengine 集群中的 dnode 状态要等 POD 状态为 `ready` 之后才能看到:
此时 POD 的状态仍然是 Running,TDengine 集群中的 dnode 状态要等 POD 状态为 `ready` 之后才能看到:
```
bash
```
bash
kubectl exec -i -t tdengine-0 -- taos -s "show dnodes"
kubectl exec -i -t tdengine-3 -- taos -s "show dnodes"
```
```
扩容后的四节点 TDengine 集群的 dnode 列表:
扩容后的四节点 TDengine 集群的 dnode 列表:
```
```
Welcome to the TDengine shell from Linux, Client Version:
2.1.1
.0
Welcome to the TDengine shell from Linux, Client Version:
3.0.0
.0
Copyright (c) 202
0
by TAOS Data, Inc. All rights reserved.
Copyright (c) 202
2
by TAOS Data, Inc. All rights reserved.
taos> show dnodes
taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason |
id | endpoint | vnodes | support_vnodes | status | create_time | note |
======================================================================================================================================
============================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:12.915 | |
1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:33.127 | |
2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
3 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 14:07:27.078 | |
3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
4 | tdengine-3.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 14:07:48.362 | |
4 | tdengine-3.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:33:16.039 | |
Query OK, 4 row(s) in set (0.001293s)
Query OK, 4 rows in database (0.008377s)
```
```
## 集群缩容
## 集群缩容
TDengine 的缩容并没有自动化,我们尝试将一个三节点集群缩容到两节点。
由于 TDengine 集群在扩缩容时会对数据进行节点间迁移,使用 kubectl 命令进行缩容需要首先使用 "drop dnodes" 命令,节点删除完成后再进行 Kubernetes 集群缩容。
首先,确认一个三节点 TDengine 集群正常工作,在 TDengine CLI 中查看 dnode 的状态:
```
bash
注意:由于 Kubernetes Statefulset 中 Pod 的只能按创建顺序逆序移除,所以 TDengine drop dnode 也需要按照创建顺序逆序移除,否则会导致 Pod 处于错误状态。
taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason |
======================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 16:27:24.852 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:27:53.339 | |
3 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:28:49.787 | |
Query OK, 3 row(s) in set (0.001101s)
```
```
$ kubectl exec -i -t tdengine-0 -- taos -s "drop dnode 4"
想要安全的缩容,首先需要将节点从 dnode 列表中移除,也即从集群中移除:
```
```
bash
```
bash
kubectl exec -i -t tdengine-0 -- taos -s "drop dnode 'tdengine-2.taosd.default.svc.cluster.local:6030'
"
$ kubectl exec -it tdengine-0 -- taos -s "show dnodes
"
```
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
通过 `show dondes` 命令确认移除成功后,移除相应的 POD:
taos> show dnodes
id | endpoint | vnodes | support_vnodes | status | create_time | note |
============================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:14:57.285 | |
2 | tdengine-1.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:11.302 | |
3 | tdengine-2.taosd.default.sv... | 0 | 256 | ready | 2022-08-10 13:15:23.290 | |
Query OK, 3 rows in database (0.004861s)
```
```
bash
确认移除成功后(使用 kubectl exec -i -t tdengine-0 -- taos -s "show dnodes" 查看和确认 dnode 列表),使用 kubectl 命令移除 POD:
kubectl scale statefulsets tdengine --replicas=2
```
kubectl scale statefulsets tdengine --replicas=3
```
```
最后一个 POD
会被删除,使用 `kubectl get pods -l app=tdengine` 查看集群
状态:
最后一个 POD
将会被删除。使用命令 kubectl get pods -l app=tdengine 查看POD
状态:
```
```
NAME READY STATUS RESTARTS AGE
$ kubectl get pods -l app=tdengine
tdengine-0 1/1 Running 0 3h40m
NAME READY STATUS RESTARTS AGE
tdengine-1 1/1 Running 0 3h40m
tdengine-0 1/1 Running 0 4m7s
tdengine-1 1/1 Running 0 3m55s
tdengine-2 1/1 Running 0 2m28s
```
```
POD
删除后,需要手动删除
PVC,否则下次扩容时会继续使用以前的数据导致无法正常加入集群。
POD
删除后,需要手动删除
PVC,否则下次扩容时会继续使用以前的数据导致无法正常加入集群。
```
bash
```
bash
kubectl delete pvc taosdata-tdengine-2
$ kubectl delete pvc taosdata-tdengine-3
```
```
此时的集群状态是安全的,需要时还可以再次进行扩容:
此时的集群状态是安全的,需要时还可以再次进行扩容:
```
bash
```
bash
kubectl scale statefulsets tdengine --replicas=3
$ kubectl scale statefulsets tdengine --replicas=4
statefulset.apps/tdengine scaled
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl get pods -l app=tdengine
```
NAME READY STATUS RESTARTS AGE
tdengine-0 1/1 Running 0 35m
`show dnodes` 输出如下:
tdengine-1 1/1 Running 0 34m
tdengine-2 1/1 Running 0 12m
tdengine-3 0/1 ContainerCreating 0 4s
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl get pods -l app=tdengine
NAME READY STATUS RESTARTS AGE
tdengine-0 1/1 Running 0 35m
tdengine-1 1/1 Running 0 34m
tdengine-2 1/1 Running 0 12m
tdengine-3 0/1 Running 0 7s
it@k8s-2:~/TDengine-Operator/src/tdengine$ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
Server is Community Edition.
```
taos> show dnodes
taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason
|
id | endpoint | vnodes | support_vnodes | status | create_time | offline reason
|
======================================================================================================================================
======================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 1 | 40 | ready | any | 2021-06-01 16:27:24.852 |
|
1 | tdengine-0.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 17:38:49.012 |
|
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:27:53.339 |
|
2 | tdengine-1.taosd.default.sv... | 1 | 4 | ready | 2022-07-25 17:39:01.517 |
|
4 | tdengine-2.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 16:40:49.177 |
|
5 | tdengine-2.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 18:01:36.479 |
|
6 | tdengine-3.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 18:13:54.411 | |
Query OK, 4 row(s) in set (0.001348s)
```
```
##
删除
集群
##
清理 TDengine
集群
完整移除 TDengine 集群,需要分别清理 statefulset、svc、configmap、pvc。
完整移除 TDengine 集群,需要分别清理 statefulset、svc、configmap、pvc。
...
@@ -381,26 +334,26 @@ kubectl delete configmap taoscfg
...
@@ -381,26 +334,26 @@ kubectl delete configmap taoscfg
### 错误一
### 错误一
扩容到四节点之后缩容到两节点,删除的 POD 会进入 offline 状态:
未进行 "drop dnode" 直接进行缩容,由于 TDengine 尚未删除节点,缩容 pod 导致 TDengine 集群中部分节点处于 offline 状态。
```
```
Welcome to the TDengine shell from Linux, Client Version:2.1.1.0
$ kubectl exec -it tdengine-0 -- taos -s "show dnodes"
Copyright (c) 2020 by TAOS Data, Inc. All rights reserved.
Welcome to the TDengine shell from Linux, Client Version:3.0.0.0
Copyright (c) 2022 by TAOS Data, Inc. All rights reserved.
Server is Community Edition.
taos> show dnodes
taos> show dnodes
id | end_point | vnodes | cores | status | role | create_time | offline reason
|
id | endpoint | vnodes | support_vnodes | status | create_time | offline reason
|
======================================================================================================================================
======================================================================================================================================
1 | tdengine-0.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:12.915 | |
1 | tdengine-0.taosd.default.sv... | 0 | 4 | ready | 2022-07-25 17:38:49.012 | |
2 | tdengine-1.taosd.default.sv... | 0 | 40 | ready | any | 2021-06-01 11:58:33.127 | |
2 | tdengine-1.taosd.default.sv... | 1 | 4 | ready | 2022-07-25 17:39:01.517 | |
3 | tdengine-2.taosd.default.sv... | 0 | 40 | offline | any | 2021-06-01 14:07:27.078 | status msg timeout |
5 | tdengine-2.taosd.default.sv... | 0 | 4 | offline | 2022-07-25 18:01:36.479 | status msg timeout |
4 | tdengine-3.taosd.default.sv... | 1 | 40 | offline | any | 2021-06-01 14:07:48.362 | status msg timeout |
6 | tdengine-3.taosd.default.sv... | 0 | 4 | offline | 2022-07-25 18:13:54.411 | status msg timeout |
Query OK, 4 row(s) in set (0.001236s)
Query OK, 4 row(s) in set (0.001323s)
```
```
但 `drop dnode` 的行为按不会按照预期进行,且下次集群重启后,所有的 dnode 节点将无法启动 dropping 状态无法退出。
### 错误二
### 错误二
TDengine 集群会持有 replica 参数,如果缩容后的节点数小于这个值,集群将无法使用:
TDengine 集群会持有 replica 参数,如果缩容后的节点数小于这个值,集群将无法使用:
...
...
docs/zh/25-application/03-immigrate.md
→
docs/zh/25-application/
_
03-immigrate.md
浏览文件 @
66dd7d7e
文件已移动
include/libs/transport/trpc.h
浏览文件 @
66dd7d7e
...
@@ -47,8 +47,6 @@ typedef struct SRpcHandleInfo {
...
@@ -47,8 +47,6 @@ typedef struct SRpcHandleInfo {
int8_t
persistHandle
;
// persist handle or not
int8_t
persistHandle
;
// persist handle or not
int8_t
hasEpSet
;
int8_t
hasEpSet
;
STraceId
traceId
;
// app info
// app info
void
*
ahandle
;
// app handle set by client
void
*
ahandle
;
// app handle set by client
void
*
wrapper
;
// wrapper handle
void
*
wrapper
;
// wrapper handle
...
@@ -58,7 +56,8 @@ typedef struct SRpcHandleInfo {
...
@@ -58,7 +56,8 @@ typedef struct SRpcHandleInfo {
void
*
rsp
;
void
*
rsp
;
int32_t
rspLen
;
int32_t
rspLen
;
// conn info
STraceId
traceId
;
SRpcConnInfo
conn
;
SRpcConnInfo
conn
;
}
SRpcHandleInfo
;
}
SRpcHandleInfo
;
...
...
include/os/osSystem.h
浏览文件 @
66dd7d7e
...
@@ -32,6 +32,7 @@ extern "C" {
...
@@ -32,6 +32,7 @@ extern "C" {
typedef
struct
TdCmd
*
TdCmdPtr
;
typedef
struct
TdCmd
*
TdCmdPtr
;
TdCmdPtr
taosOpenCmd
(
const
char
*
cmd
);
TdCmdPtr
taosOpenCmd
(
const
char
*
cmd
);
int64_t
taosGetsCmd
(
TdCmdPtr
pCmd
,
int32_t
maxSize
,
char
*
__restrict
buf
);
int64_t
taosGetLineCmd
(
TdCmdPtr
pCmd
,
char
**
__restrict
ptrBuf
);
int64_t
taosGetLineCmd
(
TdCmdPtr
pCmd
,
char
**
__restrict
ptrBuf
);
int32_t
taosEOFCmd
(
TdCmdPtr
pCmd
);
int32_t
taosEOFCmd
(
TdCmdPtr
pCmd
);
int64_t
taosCloseCmd
(
TdCmdPtr
*
ppCmd
);
int64_t
taosCloseCmd
(
TdCmdPtr
*
ppCmd
);
...
...
include/util/tdef.h
浏览文件 @
66dd7d7e
...
@@ -396,7 +396,7 @@ typedef enum ELogicConditionType {
...
@@ -396,7 +396,7 @@ typedef enum ELogicConditionType {
#ifdef WINDOWS
#ifdef WINDOWS
#define TSDB_MAX_RPC_THREADS 4 // windows pipe only support 4 connections.
#define TSDB_MAX_RPC_THREADS 4 // windows pipe only support 4 connections.
#else
#else
#define TSDB_MAX_RPC_THREADS
5
#define TSDB_MAX_RPC_THREADS
10
#endif
#endif
#define TSDB_QUERY_TYPE_NON_TYPE 0x00u // none type
#define TSDB_QUERY_TYPE_NON_TYPE 0x00u // none type
...
...
packaging/release.bat
浏览文件 @
66dd7d7e
...
@@ -11,13 +11,13 @@ if !%2==! GOTO USAGE
...
@@ -11,13 +11,13 @@ if !%2==! GOTO USAGE
if
"
%
1"
==
"cluster"
(
if
"
%
1"
==
"cluster"
(
set
work_dir
=
%internal_dir%
set
work_dir
=
%internal_dir%
set
packagServerName_x64
=
TDengine
-enterprise-server
-
%
2
-beta-Windows-x
64
set
packagServerName_x64
=
TDengine
-enterprise-server
-
%
2
-beta-Windows-x
64
set
packagServerName_x86
=
TDengine
-enterprise-server
-
%
2
-beta-Windows-x
86
@REM
set packagServerName_x86=TDengine-enterprise-server-%2-beta-Windows-x86
set
packagClientName_x64
=
TDengine
-enterprise-client
-
%
2
-beta-Windows-x
64
set
packagClientName_x64
=
TDengine
-enterprise-client
-
%
2
-beta-Windows-x
64
set
packagClientName_x86
=
TDengine
-enterprise-client
-
%
2
-beta-Windows-x
86
set
packagClientName_x86
=
TDengine
-enterprise-client
-
%
2
-beta-Windows-x
86
)
else
(
)
else
(
set
work_dir
=
%community_dir%
set
work_dir
=
%community_dir%
set
packagServerName_x64
=
TDengine
-server
-
%
2
-Windows-x
64
set
packagServerName_x64
=
TDengine
-server
-
%
2
-Windows-x
64
set
packagServerName_x86
=
TDengine
-server
-
%
2
-Windows-x
86
@REM
set packagServerName_x86=TDengine-server-%2-Windows-x86
set
packagClientName_x64
=
TDengine
-client
-
%
2
-Windows-x
64
set
packagClientName_x64
=
TDengine
-client
-
%
2
-Windows-x
64
set
packagClientName_x86
=
TDengine
-client
-
%
2
-Windows-x
86
set
packagClientName_x86
=
TDengine
-client
-
%
2
-Windows-x
86
)
)
...
@@ -59,8 +59,8 @@ rd /s /Q C:\TDengine
...
@@ -59,8 +59,8 @@ rd /s /Q C:\TDengine
cmake
--install
.
cmake
--install
.
if
not
%errorlevel%
==
0
(
call
:RUNFAILED
build
x86
failed
&
exit
/b
1
)
if
not
%errorlevel%
==
0
(
call
:RUNFAILED
build
x86
failed
&
exit
/b
1
)
cd
%package_dir%
cd
%package_dir%
iscc
/DMyAppInstallName
=
"
%packagServerName
_x86
%
"
/DMyAppVersion
=
"
%
2"
/DMyAppExcludeSource
=
""
tools
\tdengine.iss
/O
..\release
@REM
iscc /DMyAppInstallName="%packagServerName_x86%" /DMyAppVersion="%2" /DMyAppExcludeSource="" tools\tdengine.iss /O..\release
if
not
%errorlevel%
==
0
(
call
:RUNFAILED
package
%packagServerName
_x86
%
failed
&
exit
/b
1
)
@REM
if not %errorlevel% == 0 ( call :RUNFAILED package %packagServerName_x86% failed & exit /b 1)
iscc
/DMyAppInstallName
=
"
%packagClientName
_x86
%
"
/DMyAppVersion
=
"
%
2"
/DMyAppExcludeSource
=
"taosd.exe"
tools
\tdengine.iss
/O
..\release
iscc
/DMyAppInstallName
=
"
%packagClientName
_x86
%
"
/DMyAppVersion
=
"
%
2"
/DMyAppExcludeSource
=
"taosd.exe"
tools
\tdengine.iss
/O
..\release
if
not
%errorlevel%
==
0
(
call
:RUNFAILED
package
%packagClientName
_x86
%
failed
&
exit
/b
1
)
if
not
%errorlevel%
==
0
(
call
:RUNFAILED
package
%packagClientName
_x86
%
failed
&
exit
/b
1
)
...
...
source/libs/sync/src/syncReplication.c
浏览文件 @
66dd7d7e
...
@@ -199,7 +199,6 @@ int32_t syncNodeAppendEntriesPeersSnapshot2(SSyncNode* pSyncNode) {
...
@@ -199,7 +199,6 @@ int32_t syncNodeAppendEntriesPeersSnapshot2(SSyncNode* pSyncNode) {
// send msg
// send msg
syncNodeAppendEntriesBatch
(
pSyncNode
,
pDestId
,
pMsg
);
syncNodeAppendEntriesBatch
(
pSyncNode
,
pDestId
,
pMsg
);
syncAppendEntriesBatchDestroy
(
pMsg
);
// speed up
// speed up
if
(
pMsg
->
dataCount
>
0
&&
pSyncNode
->
commitIndex
-
pMsg
->
prevLogIndex
>
SYNC_SLOW_DOWN_RANGE
)
{
if
(
pMsg
->
dataCount
>
0
&&
pSyncNode
->
commitIndex
-
pMsg
->
prevLogIndex
>
SYNC_SLOW_DOWN_RANGE
)
{
...
@@ -216,6 +215,8 @@ int32_t syncNodeAppendEntriesPeersSnapshot2(SSyncNode* pSyncNode) {
...
@@ -216,6 +215,8 @@ int32_t syncNodeAppendEntriesPeersSnapshot2(SSyncNode* pSyncNode) {
} while (0);
} while (0);
#endif
#endif
}
}
syncAppendEntriesBatchDestroy
(
pMsg
);
}
}
return
ret
;
return
ret
;
...
...
source/libs/transport/inc/transComm.h
浏览文件 @
66dd7d7e
...
@@ -128,7 +128,7 @@ typedef struct {
...
@@ -128,7 +128,7 @@ typedef struct {
int8_t
retryCnt
;
int8_t
retryCnt
;
int8_t
retryLimit
;
int8_t
retryLimit
;
// bool setMaxRetry;
STransCtx
appCtx
;
//
STransCtx
appCtx
;
//
STransMsg
*
pRsp
;
// for synchronous API
STransMsg
*
pRsp
;
// for synchronous API
tsem_t
*
pSem
;
// for synchronous API
tsem_t
*
pSem
;
// for synchronous API
...
@@ -195,17 +195,7 @@ typedef enum { ConnNormal, ConnAcquire, ConnRelease, ConnBroken, ConnInPool } Co
...
@@ -195,17 +195,7 @@ typedef enum { ConnNormal, ConnAcquire, ConnRelease, ConnBroken, ConnInPool } Co
#define transLabel(trans) ((STrans*)trans)->label
#define transLabel(trans) ((STrans*)trans)->label
// int rpcAuthenticateMsg(void* pMsg, int msgLen, void* pAuth, void* pKey);
// void rpcBuildAuthHead(void* pMsg, int msgLen, void* pAuth, void* pKey);
//// int32_t rpcCompressRpcMsg(char* pCont, int32_t contLen);
//
// int transAuthenticateMsg(void* pMsg, int msgLen, void* pAuth, void* pKey);
// void transBuildAuthHead(void* pMsg, int msgLen, void* pAuth, void* pKey);
// bool transCompressMsg(char* msg, int32_t len, int32_t* flen);
// bool transDecompressMsg(char* msg, int32_t len, int32_t* flen);
void
transFreeMsg
(
void
*
msg
);
void
transFreeMsg
(
void
*
msg
);
//
//
typedef
struct
SConnBuffer
{
typedef
struct
SConnBuffer
{
char
*
buf
;
char
*
buf
;
...
@@ -322,8 +312,8 @@ void* transCtxDumpBrokenlinkVal(STransCtx* ctx, int32_t* msgType);
...
@@ -322,8 +312,8 @@ void* transCtxDumpBrokenlinkVal(STransCtx* ctx, int32_t* msgType);
// request list
// request list
typedef
struct
STransReq
{
typedef
struct
STransReq
{
queue
q
;
queue
q
;
void
*
data
;
uv_write_t
wreq
;
}
STransReq
;
}
STransReq
;
void
transReqQueueInit
(
queue
*
q
);
void
transReqQueueInit
(
queue
*
q
);
...
...
source/libs/transport/src/transCli.c
浏览文件 @
66dd7d7e
...
@@ -16,7 +16,8 @@
...
@@ -16,7 +16,8 @@
#include "transComm.h"
#include "transComm.h"
typedef
struct
SConnList
{
typedef
struct
SConnList
{
queue
conn
;
queue
conn
;
int32_t
size
;
}
SConnList
;
}
SConnList
;
typedef
struct
SCliConn
{
typedef
struct
SCliConn
{
...
@@ -339,8 +340,8 @@ void cliHandleResp(SCliConn* conn) {
...
@@ -339,8 +340,8 @@ void cliHandleResp(SCliConn* conn) {
tDebug
(
"%s conn %p stop timer"
,
CONN_GET_INST_LABEL
(
conn
),
conn
);
tDebug
(
"%s conn %p stop timer"
,
CONN_GET_INST_LABEL
(
conn
),
conn
);
uv_timer_stop
(
conn
->
timer
);
uv_timer_stop
(
conn
->
timer
);
}
}
conn
->
timer
->
data
=
NULL
;
taosArrayPush
(
pThrd
->
timerList
,
&
conn
->
timer
);
taosArrayPush
(
pThrd
->
timerList
,
&
conn
->
timer
);
conn
->
timer
->
data
=
NULL
;
conn
->
timer
=
NULL
;
conn
->
timer
=
NULL
;
}
}
...
@@ -510,7 +511,7 @@ static SCliConn* getConnFromPool(void* pool, char* ip, uint32_t port) {
...
@@ -510,7 +511,7 @@ static SCliConn* getConnFromPool(void* pool, char* ip, uint32_t port) {
SHashObj
*
pPool
=
pool
;
SHashObj
*
pPool
=
pool
;
SConnList
*
plist
=
taosHashGet
(
pPool
,
key
,
strlen
(
key
));
SConnList
*
plist
=
taosHashGet
(
pPool
,
key
,
strlen
(
key
));
if
(
plist
==
NULL
)
{
if
(
plist
==
NULL
)
{
SConnList
list
;
SConnList
list
=
{
0
}
;
taosHashPut
(
pPool
,
key
,
strlen
(
key
),
(
void
*
)
&
list
,
sizeof
(
list
));
taosHashPut
(
pPool
,
key
,
strlen
(
key
),
(
void
*
)
&
list
,
sizeof
(
list
));
plist
=
taosHashGet
(
pPool
,
key
,
strlen
(
key
));
plist
=
taosHashGet
(
pPool
,
key
,
strlen
(
key
));
QUEUE_INIT
(
&
plist
->
conn
);
QUEUE_INIT
(
&
plist
->
conn
);
...
@@ -519,15 +520,18 @@ static SCliConn* getConnFromPool(void* pool, char* ip, uint32_t port) {
...
@@ -519,15 +520,18 @@ static SCliConn* getConnFromPool(void* pool, char* ip, uint32_t port) {
if
(
QUEUE_IS_EMPTY
(
&
plist
->
conn
))
{
if
(
QUEUE_IS_EMPTY
(
&
plist
->
conn
))
{
return
NULL
;
return
NULL
;
}
}
plist
->
size
-=
1
;
queue
*
h
=
QUEUE_HEAD
(
&
plist
->
conn
);
queue
*
h
=
QUEUE_HEAD
(
&
plist
->
conn
);
SCliConn
*
conn
=
QUEUE_DATA
(
h
,
SCliConn
,
q
);
SCliConn
*
conn
=
QUEUE_DATA
(
h
,
SCliConn
,
q
);
conn
->
status
=
ConnNormal
;
conn
->
status
=
ConnNormal
;
QUEUE_REMOVE
(
&
conn
->
q
);
QUEUE_REMOVE
(
&
conn
->
q
);
QUEUE_INIT
(
&
conn
->
q
);
QUEUE_INIT
(
&
conn
->
q
);
transDQCancel
(((
SCliThrd
*
)
conn
->
hostThrd
)
->
timeoutQueue
,
conn
->
task
);
if
(
conn
->
task
!=
NULL
)
{
conn
->
task
=
NULL
;
transDQCancel
(((
SCliThrd
*
)
conn
->
hostThrd
)
->
timeoutQueue
,
conn
->
task
);
conn
->
task
=
NULL
;
}
return
conn
;
return
conn
;
}
}
static
void
addConnToPool
(
void
*
pool
,
SCliConn
*
conn
)
{
static
void
addConnToPool
(
void
*
pool
,
SCliConn
*
conn
)
{
...
@@ -539,6 +543,13 @@ static void addConnToPool(void* pool, SCliConn* conn) {
...
@@ -539,6 +543,13 @@ static void addConnToPool(void* pool, SCliConn* conn) {
allocConnRef
(
conn
,
true
);
allocConnRef
(
conn
,
true
);
if
(
conn
->
timer
!=
NULL
)
{
uv_timer_stop
(
conn
->
timer
);
taosArrayPush
(
thrd
->
timerList
,
&
conn
->
timer
);
conn
->
timer
->
data
=
NULL
;
conn
->
timer
=
NULL
;
}
STrans
*
pTransInst
=
thrd
->
pTransInst
;
STrans
*
pTransInst
=
thrd
->
pTransInst
;
cliReleaseUnfinishedMsg
(
conn
);
cliReleaseUnfinishedMsg
(
conn
);
transQueueClear
(
&
conn
->
cliMsgs
);
transQueueClear
(
&
conn
->
cliMsgs
);
...
@@ -556,13 +567,17 @@ static void addConnToPool(void* pool, SCliConn* conn) {
...
@@ -556,13 +567,17 @@ static void addConnToPool(void* pool, SCliConn* conn) {
assert
(
conn
->
list
!=
NULL
);
assert
(
conn
->
list
!=
NULL
);
QUEUE_INIT
(
&
conn
->
q
);
QUEUE_INIT
(
&
conn
->
q
);
QUEUE_PUSH
(
&
conn
->
list
->
conn
,
&
conn
->
q
);
QUEUE_PUSH
(
&
conn
->
list
->
conn
,
&
conn
->
q
);
conn
->
list
->
size
+=
1
;
conn
->
task
=
NULL
;
assert
(
!
QUEUE_IS_EMPTY
(
&
conn
->
list
->
conn
));
assert
(
!
QUEUE_IS_EMPTY
(
&
conn
->
list
->
conn
));
STaskArg
*
arg
=
taosMemoryCalloc
(
1
,
sizeof
(
STaskArg
));
if
(
conn
->
list
->
size
>=
50
)
{
arg
->
param1
=
conn
;
STaskArg
*
arg
=
taosMemoryCalloc
(
1
,
sizeof
(
STaskArg
));
arg
->
param2
=
thrd
;
arg
->
param1
=
conn
;
conn
->
task
=
transDQSched
(
thrd
->
timeoutQueue
,
doCloseIdleConn
,
arg
,
CONN_PERSIST_TIME
(
pTransInst
->
idleTime
));
arg
->
param2
=
thrd
;
conn
->
task
=
transDQSched
(
thrd
->
timeoutQueue
,
doCloseIdleConn
,
arg
,
CONN_PERSIST_TIME
(
pTransInst
->
idleTime
));
}
}
}
static
int32_t
allocConnRef
(
SCliConn
*
conn
,
bool
update
)
{
static
int32_t
allocConnRef
(
SCliConn
*
conn
,
bool
update
)
{
if
(
update
)
{
if
(
update
)
{
...
@@ -1374,7 +1389,7 @@ int transReleaseCliHandle(void* handle) {
...
@@ -1374,7 +1389,7 @@ int transReleaseCliHandle(void* handle) {
}
}
STransMsg
tmsg
=
{.
info
.
handle
=
handle
};
STransMsg
tmsg
=
{.
info
.
handle
=
handle
};
TRACE_SET_MSGID
(
&
tmsg
.
info
.
traceId
,
tGenIdPI64
());
//
TRACE_SET_MSGID(&tmsg.info.traceId, tGenIdPI64());
SCliMsg
*
cmsg
=
taosMemoryCalloc
(
1
,
sizeof
(
SCliMsg
));
SCliMsg
*
cmsg
=
taosMemoryCalloc
(
1
,
sizeof
(
SCliMsg
));
cmsg
->
msg
=
tmsg
;
cmsg
->
msg
=
tmsg
;
...
@@ -1415,7 +1430,6 @@ int transSendRequest(void* shandle, const SEpSet* pEpSet, STransMsg* pReq, STran
...
@@ -1415,7 +1430,6 @@ int transSendRequest(void* shandle, const SEpSet* pEpSet, STransMsg* pReq, STran
if
(
ctx
!=
NULL
)
{
if
(
ctx
!=
NULL
)
{
pCtx
->
appCtx
=
*
ctx
;
pCtx
->
appCtx
=
*
ctx
;
}
}
assert
(
pTransInst
->
connType
==
TAOS_CONN_CLIENT
);
SCliMsg
*
cliMsg
=
taosMemoryCalloc
(
1
,
sizeof
(
SCliMsg
));
SCliMsg
*
cliMsg
=
taosMemoryCalloc
(
1
,
sizeof
(
SCliMsg
));
cliMsg
->
ctx
=
pCtx
;
cliMsg
->
ctx
=
pCtx
;
...
...
source/libs/transport/src/transComm.c
浏览文件 @
66dd7d7e
...
@@ -23,33 +23,6 @@ static TdThreadOnce transModuleInit = PTHREAD_ONCE_INIT;
...
@@ -23,33 +23,6 @@ static TdThreadOnce transModuleInit = PTHREAD_ONCE_INIT;
static
int32_t
refMgt
;
static
int32_t
refMgt
;
static
int32_t
instMgt
;
static
int32_t
instMgt
;
int
transAuthenticateMsg
(
void
*
pMsg
,
int
msgLen
,
void
*
pAuth
,
void
*
pKey
)
{
T_MD5_CTX
context
;
int
ret
=
-
1
;
tMD5Init
(
&
context
);
tMD5Update
(
&
context
,
(
uint8_t
*
)
pKey
,
TSDB_PASSWORD_LEN
);
tMD5Update
(
&
context
,
(
uint8_t
*
)
pMsg
,
msgLen
);
tMD5Update
(
&
context
,
(
uint8_t
*
)
pKey
,
TSDB_PASSWORD_LEN
);
tMD5Final
(
&
context
);
if
(
memcmp
(
context
.
digest
,
pAuth
,
sizeof
(
context
.
digest
))
==
0
)
ret
=
0
;
return
ret
;
}
void
transBuildAuthHead
(
void
*
pMsg
,
int
msgLen
,
void
*
pAuth
,
void
*
pKey
)
{
T_MD5_CTX
context
;
tMD5Init
(
&
context
);
tMD5Update
(
&
context
,
(
uint8_t
*
)
pKey
,
TSDB_PASSWORD_LEN
);
tMD5Update
(
&
context
,
(
uint8_t
*
)
pMsg
,
msgLen
);
tMD5Update
(
&
context
,
(
uint8_t
*
)
pKey
,
TSDB_PASSWORD_LEN
);
tMD5Final
(
&
context
);
memcpy
(
pAuth
,
context
.
digest
,
sizeof
(
context
.
digest
));
}
bool
transCompressMsg
(
char
*
msg
,
int32_t
len
,
int32_t
*
flen
)
{
bool
transCompressMsg
(
char
*
msg
,
int32_t
len
,
int32_t
*
flen
)
{
return
false
;
return
false
;
// SRpcHead* pHead = rpcHeadFromCont(pCont);
// SRpcHead* pHead = rpcHeadFromCont(pCont);
...
@@ -176,7 +149,6 @@ int transAllocBuffer(SConnBuffer* connBuf, uv_buf_t* uvBuf) {
...
@@ -176,7 +149,6 @@ int transAllocBuffer(SConnBuffer* connBuf, uv_buf_t* uvBuf) {
* info--->|
* info--->|
*/
*/
SConnBuffer
*
p
=
connBuf
;
SConnBuffer
*
p
=
connBuf
;
uvBuf
->
base
=
p
->
buf
+
p
->
len
;
uvBuf
->
base
=
p
->
buf
+
p
->
len
;
if
(
p
->
left
==
-
1
)
{
if
(
p
->
left
==
-
1
)
{
uvBuf
->
len
=
p
->
cap
-
p
->
len
;
uvBuf
->
len
=
p
->
cap
-
p
->
len
;
...
@@ -184,7 +156,8 @@ int transAllocBuffer(SConnBuffer* connBuf, uv_buf_t* uvBuf) {
...
@@ -184,7 +156,8 @@ int transAllocBuffer(SConnBuffer* connBuf, uv_buf_t* uvBuf) {
if
(
p
->
left
<
p
->
cap
-
p
->
len
)
{
if
(
p
->
left
<
p
->
cap
-
p
->
len
)
{
uvBuf
->
len
=
p
->
left
;
uvBuf
->
len
=
p
->
left
;
}
else
{
}
else
{
p
->
buf
=
taosMemoryRealloc
(
p
->
buf
,
p
->
left
+
p
->
len
);
p
->
cap
=
p
->
left
+
p
->
len
;
p
->
buf
=
taosMemoryRealloc
(
p
->
buf
,
p
->
cap
);
uvBuf
->
base
=
p
->
buf
+
p
->
len
;
uvBuf
->
base
=
p
->
buf
+
p
->
len
;
uvBuf
->
len
=
p
->
left
;
uvBuf
->
len
=
p
->
left
;
}
}
...
@@ -266,14 +239,9 @@ int transAsyncSend(SAsyncPool* pool, queue* q) {
...
@@ -266,14 +239,9 @@ int transAsyncSend(SAsyncPool* pool, queue* q) {
uv_async_t
*
async
=
&
(
pool
->
asyncs
[
idx
]);
uv_async_t
*
async
=
&
(
pool
->
asyncs
[
idx
]);
SAsyncItem
*
item
=
async
->
data
;
SAsyncItem
*
item
=
async
->
data
;
int64_t
st
=
taosGetTimestampUs
();
taosThreadMutexLock
(
&
item
->
mtx
);
taosThreadMutexLock
(
&
item
->
mtx
);
QUEUE_PUSH
(
&
item
->
qmsg
,
q
);
QUEUE_PUSH
(
&
item
->
qmsg
,
q
);
taosThreadMutexUnlock
(
&
item
->
mtx
);
taosThreadMutexUnlock
(
&
item
->
mtx
);
int64_t
el
=
taosGetTimestampUs
()
-
st
;
if
(
el
>
50
)
{
// tInfo("lock and unlock cost:%d", (int)el);
}
return
uv_async_send
(
async
);
return
uv_async_send
(
async
);
}
}
...
@@ -349,30 +317,21 @@ void transReqQueueInit(queue* q) {
...
@@ -349,30 +317,21 @@ void transReqQueueInit(queue* q) {
QUEUE_INIT
(
q
);
QUEUE_INIT
(
q
);
}
}
void
*
transReqQueuePush
(
queue
*
q
)
{
void
*
transReqQueuePush
(
queue
*
q
)
{
uv_write_t
*
req
=
taosMemoryCalloc
(
1
,
sizeof
(
uv_write_t
));
STransReq
*
req
=
taosMemoryCalloc
(
1
,
sizeof
(
STransReq
));
STransReq
*
wreq
=
taosMemoryCalloc
(
1
,
sizeof
(
STransReq
));
req
->
wreq
.
data
=
req
;
wreq
->
data
=
req
;
QUEUE_PUSH
(
q
,
&
req
->
q
);
req
->
data
=
wreq
;
return
&
req
->
wreq
;
QUEUE_PUSH
(
q
,
&
wreq
->
q
);
return
req
;
}
}
void
*
transReqQueueRemove
(
void
*
arg
)
{
void
*
transReqQueueRemove
(
void
*
arg
)
{
void
*
ret
=
NULL
;
void
*
ret
=
NULL
;
uv_write_t
*
req
=
arg
;
uv_write_t
*
wreq
=
arg
;
STransReq
*
wreq
=
req
&&
req
->
data
?
req
->
data
:
NULL
;
assert
(
wreq
->
data
==
req
);
if
(
wreq
==
NULL
||
wreq
->
data
==
NULL
)
{
taosMemoryFree
(
wreq
->
data
);
taosMemoryFree
(
wreq
);
return
req
;
}
QUEUE_REMOVE
(
&
wreq
->
q
);
STransReq
*
req
=
wreq
?
wreq
->
data
:
NULL
;
if
(
req
==
NULL
)
return
NULL
;
QUEUE_REMOVE
(
&
req
->
q
);
ret
=
req
&&
req
->
handle
?
req
->
handle
->
data
:
NULL
;
ret
=
wreq
&&
wreq
->
handle
?
wreq
->
handle
->
data
:
NULL
;
taosMemoryFree
(
wreq
->
data
);
taosMemoryFree
(
req
);
taosMemoryFree
(
wreq
);
return
ret
;
return
ret
;
}
}
...
@@ -381,7 +340,6 @@ void transReqQueueClear(queue* q) {
...
@@ -381,7 +340,6 @@ void transReqQueueClear(queue* q) {
queue
*
h
=
QUEUE_HEAD
(
q
);
queue
*
h
=
QUEUE_HEAD
(
q
);
QUEUE_REMOVE
(
h
);
QUEUE_REMOVE
(
h
);
STransReq
*
req
=
QUEUE_DATA
(
h
,
STransReq
,
q
);
STransReq
*
req
=
QUEUE_DATA
(
h
,
STransReq
,
q
);
taosMemoryFree
(
req
->
data
);
taosMemoryFree
(
req
);
taosMemoryFree
(
req
);
}
}
}
}
...
...
source/libs/transport/src/transSvr.c
浏览文件 @
66dd7d7e
...
@@ -75,7 +75,6 @@ typedef struct SWorkThrd {
...
@@ -75,7 +75,6 @@ typedef struct SWorkThrd {
SAsyncPool
*
asyncPool
;
SAsyncPool
*
asyncPool
;
uv_prepare_t
*
prepare
;
uv_prepare_t
*
prepare
;
queue
msg
;
queue
msg
;
TdThreadMutex
msgMtx
;
queue
conn
;
queue
conn
;
void
*
pTransInst
;
void
*
pTransInst
;
...
@@ -499,6 +498,7 @@ void uvWorkerAsyncCb(uv_async_t* handle) {
...
@@ -499,6 +498,7 @@ void uvWorkerAsyncCb(uv_async_t* handle) {
tError
(
"unexcept occurred, continue"
);
tError
(
"unexcept occurred, continue"
);
continue
;
continue
;
}
}
// release handle to rpc init
// release handle to rpc init
if
(
msg
->
type
==
Quit
)
{
if
(
msg
->
type
==
Quit
)
{
(
*
transAsyncHandle
[
msg
->
type
])(
msg
,
pThrd
);
(
*
transAsyncHandle
[
msg
->
type
])(
msg
,
pThrd
);
...
@@ -743,7 +743,6 @@ static bool addHandleToWorkloop(SWorkThrd* pThrd, char* pipeName) {
...
@@ -743,7 +743,6 @@ static bool addHandleToWorkloop(SWorkThrd* pThrd, char* pipeName) {
pThrd
->
pipe
->
data
=
pThrd
;
pThrd
->
pipe
->
data
=
pThrd
;
QUEUE_INIT
(
&
pThrd
->
msg
);
QUEUE_INIT
(
&
pThrd
->
msg
);
taosThreadMutexInit
(
&
pThrd
->
msgMtx
,
NULL
);
pThrd
->
prepare
=
taosMemoryCalloc
(
1
,
sizeof
(
uv_prepare_t
));
pThrd
->
prepare
=
taosMemoryCalloc
(
1
,
sizeof
(
uv_prepare_t
));
uv_prepare_init
(
pThrd
->
loop
,
pThrd
->
prepare
);
uv_prepare_init
(
pThrd
->
loop
,
pThrd
->
prepare
);
...
...
source/libs/transport/test/svrBench.c
浏览文件 @
66dd7d7e
...
@@ -75,15 +75,14 @@ void processShellMsg() {
...
@@ -75,15 +75,14 @@ void processShellMsg() {
void
*
handle
=
pRpcMsg
->
info
.
handle
;
void
*
handle
=
pRpcMsg
->
info
.
handle
;
taosFreeQitem
(
pRpcMsg
);
taosFreeQitem
(
pRpcMsg
);
//{
{
// SRpcMsg nRpcMsg = {0};
SRpcMsg
nRpcMsg
=
{
0
};
// nRpcMsg.pCont = rpcMallocCont(msgSize);
nRpcMsg
.
pCont
=
rpcMallocCont
(
msgSize
);
// nRpcMsg.contLen = msgSize;
nRpcMsg
.
contLen
=
msgSize
;
// nRpcMsg.info.handle = handle;
nRpcMsg
.
info
.
handle
=
handle
;
// nRpcMsg.code = TSDB_CODE_CTG_NOT_READY;
nRpcMsg
.
code
=
TSDB_CODE_CTG_NOT_READY
;
// rpcSendResponse(&nRpcMsg);
rpcSendResponse
(
&
nRpcMsg
);
//}
}
}
}
taosUpdateItemSize
(
qinfo
.
queue
,
numOfMsgs
);
taosUpdateItemSize
(
qinfo
.
queue
,
numOfMsgs
);
...
...
source/os/src/osSemaphore.c
浏览文件 @
66dd7d7e
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
#define ALLOW_FORBID_FUNC
#define ALLOW_FORBID_FUNC
#define _DEFAULT_SOURCE
#define _DEFAULT_SOURCE
#include "os.h"
#include "os.h"
#include "tdef.h"
#include "pthread.h"
#include "pthread.h"
#ifdef WINDOWS
#ifdef WINDOWS
...
@@ -57,7 +58,7 @@ int32_t taosGetAppName(char* name, int32_t* len) {
...
@@ -57,7 +58,7 @@ int32_t taosGetAppName(char* name, int32_t* len) {
end
=
filepath
;
end
=
filepath
;
}
}
strcpy
(
name
,
end
);
tstrncpy
(
name
,
end
,
TSDB_APP_NAME_LEN
);
if
(
len
!=
NULL
)
{
if
(
len
!=
NULL
)
{
*
len
=
(
int32_t
)
strlen
(
end
);
*
len
=
(
int32_t
)
strlen
(
end
);
...
@@ -625,7 +626,7 @@ int32_t taosGetAppName(char *name, int32_t *len) {
...
@@ -625,7 +626,7 @@ int32_t taosGetAppName(char *name, int32_t *len) {
buf
[
PATH_MAX
]
=
'\0'
;
buf
[
PATH_MAX
]
=
'\0'
;
size_t
n
=
strlen
(
buf
);
size_t
n
=
strlen
(
buf
);
if
(
len
)
*
len
=
n
;
if
(
len
)
*
len
=
n
;
if
(
name
)
strcpy
(
name
,
buf
);
if
(
name
)
tstrncpy
(
name
,
buf
,
TSDB_APP_NAME_LEN
);
return
0
;
return
0
;
}
}
...
@@ -668,7 +669,7 @@ int32_t taosGetAppName(char* name, int32_t* len) {
...
@@ -668,7 +669,7 @@ int32_t taosGetAppName(char* name, int32_t* len) {
++
end
;
++
end
;
strcpy
(
name
,
end
);
tstrncpy
(
name
,
end
,
TSDB_APP_NAME_LEN
);
if
(
len
!=
NULL
)
{
if
(
len
!=
NULL
)
{
*
len
=
strlen
(
name
);
*
len
=
strlen
(
name
);
...
...
source/os/src/osSysinfo.c
浏览文件 @
66dd7d7e
...
@@ -398,7 +398,7 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
...
@@ -398,7 +398,7 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
if
(
line
!=
NULL
)
taosMemoryFree
(
line
);
if
(
line
!=
NULL
)
taosMemoryFree
(
line
);
taosCloseFile
(
&
pFile
);
taosCloseFile
(
&
pFile
);
if
(
code
!=
0
)
{
if
(
code
!=
0
&&
(
done
&
1
)
==
0
)
{
TdFilePtr
pFile1
=
taosOpenFile
(
"/proc/device-tree/model"
,
TD_FILE_READ
|
TD_FILE_STREAM
);
TdFilePtr
pFile1
=
taosOpenFile
(
"/proc/device-tree/model"
,
TD_FILE_READ
|
TD_FILE_STREAM
);
if
(
pFile1
==
NULL
)
return
code
;
if
(
pFile1
==
NULL
)
return
code
;
taosGetsFile
(
pFile1
,
maxLen
,
cpuModel
);
taosGetsFile
(
pFile1
,
maxLen
,
cpuModel
);
...
@@ -407,6 +407,16 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
...
@@ -407,6 +407,16 @@ int32_t taosGetCpuInfo(char *cpuModel, int32_t maxLen, float *numOfCores) {
done
|=
1
;
done
|=
1
;
}
}
if
(
code
!=
0
&&
(
done
&
1
)
==
0
)
{
TdCmdPtr
pCmd
=
taosOpenCmd
(
"uname -a"
);
if
(
pCmd
==
NULL
)
return
code
;
if
(
taosGetsCmd
(
pCmd
,
maxLen
,
cpuModel
)
>
0
)
{
code
=
0
;
done
|=
1
;
}
taosCloseCmd
(
&
pCmd
);
}
if
((
done
&
2
)
==
0
)
{
if
((
done
&
2
)
==
0
)
{
*
numOfCores
=
coreCount
;
*
numOfCores
=
coreCount
;
done
|=
2
;
done
|=
2
;
...
...
source/os/src/osSystem.c
浏览文件 @
66dd7d7e
...
@@ -248,6 +248,16 @@ TdCmdPtr taosOpenCmd(const char* cmd) {
...
@@ -248,6 +248,16 @@ TdCmdPtr taosOpenCmd(const char* cmd) {
#endif
#endif
}
}
int64_t
taosGetsCmd
(
TdCmdPtr
pCmd
,
int32_t
maxSize
,
char
*
__restrict
buf
)
{
if
(
pCmd
==
NULL
||
buf
==
NULL
)
{
return
-
1
;
}
if
(
fgets
(
buf
,
maxSize
,
(
FILE
*
)
pCmd
)
==
NULL
)
{
return
-
1
;
}
return
strlen
(
buf
);
}
int64_t
taosGetLineCmd
(
TdCmdPtr
pCmd
,
char
**
__restrict
ptrBuf
)
{
int64_t
taosGetLineCmd
(
TdCmdPtr
pCmd
,
char
**
__restrict
ptrBuf
)
{
if
(
pCmd
==
NULL
||
ptrBuf
==
NULL
)
{
if
(
pCmd
==
NULL
||
ptrBuf
==
NULL
)
{
return
-
1
;
return
-
1
;
...
...
source/util/src/tref.c
浏览文件 @
66dd7d7e
...
@@ -44,11 +44,11 @@ typedef struct {
...
@@ -44,11 +44,11 @@ typedef struct {
void
(
*
fp
)(
void
*
);
void
(
*
fp
)(
void
*
);
}
SRefSet
;
}
SRefSet
;
static
SRefSet
tsRefSetList
[
TSDB_REF_OBJECTS
];
static
SRefSet
tsRefSetList
[
TSDB_REF_OBJECTS
];
static
TdThreadOnce
tsRefModuleInit
=
PTHREAD_ONCE_INIT
;
static
TdThreadOnce
tsRefModuleInit
=
PTHREAD_ONCE_INIT
;
static
TdThreadMutex
tsRefMutex
;
static
TdThreadMutex
tsRefMutex
;
static
int32_t
tsRefSetNum
=
0
;
static
int32_t
tsRefSetNum
=
0
;
static
int32_t
tsNextId
=
0
;
static
int32_t
tsNextId
=
0
;
static
void
taosInitRefModule
(
void
);
static
void
taosInitRefModule
(
void
);
static
void
taosLockList
(
int64_t
*
lockedBy
);
static
void
taosLockList
(
int64_t
*
lockedBy
);
...
...
tests/script/jenkins/basic.txt
浏览文件 @
66dd7d7e
...
@@ -332,8 +332,8 @@
...
@@ -332,8 +332,8 @@
./test.sh -f tsim/vnode/stable_replica3_vnode3.sim
./test.sh -f tsim/vnode/stable_replica3_vnode3.sim
# --- sync
# --- sync
#
./test.sh -f tsim/sync/3Replica1VgElect.sim
./test.sh -f tsim/sync/3Replica1VgElect.sim
#
./test.sh -f tsim/sync/3Replica5VgElect.sim
./test.sh -f tsim/sync/3Replica5VgElect.sim
./test.sh -f tsim/sync/oneReplica1VgElect.sim
./test.sh -f tsim/sync/oneReplica1VgElect.sim
./test.sh -f tsim/sync/oneReplica5VgElect.sim
./test.sh -f tsim/sync/oneReplica5VgElect.sim
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录