Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
125d147b
T
TDengine
项目概览
慢慢CG
/
TDengine
与 Fork 源项目一致
Fork自
taosdata / TDengine
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
125d147b
编写于
10月 14, 2020
作者:
S
Shengliang Guan
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/develop' into feature/crash
上级
d0175e6e
ce14cc0f
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
110 addition
and
58 deletion
+110
-58
Jenkinsfile
Jenkinsfile
+2
-24
cmake/install.inc
cmake/install.inc
+1
-0
documentation20/webdocs/markdowndocs/connector-java-ch.md
documentation20/webdocs/markdowndocs/connector-java-ch.md
+57
-25
packaging/docker/Dockerfile
packaging/docker/Dockerfile
+1
-1
snap/snapcraft.yaml
snap/snapcraft.yaml
+2
-2
src/client/src/tscSql.c
src/client/src/tscSql.c
+13
-1
src/client/src/tscSubquery.c
src/client/src/tscSubquery.c
+2
-2
src/os/src/linux/CMakeLists.txt
src/os/src/linux/CMakeLists.txt
+1
-1
src/util/src/tcache.c
src/util/src/tcache.c
+2
-2
tests/pytest/handle_val_log.sh
tests/pytest/handle_val_log.sh
+29
-0
未找到文件。
Jenkinsfile
浏览文件 @
125d147b
...
...
@@ -105,30 +105,8 @@ pipeline {
make > /dev/null
cd ${WKC}/tests/pytest
./valgrind-test.sh 2>&1 > mem-error-out.log
grep \'start to execute\\|ERROR SUMMARY\' mem-error-out.log|grep -v \'grep\'|uniq|tee uniq-mem-error-out.log
for memError in `grep \'ERROR SUMMARY\' uniq-mem-error-out.log | awk \'{print $4}\'`
do
if [ -n "$memError" ]; then
if [ "$memError" -gt 12 ]; then
echo -e "${RED} ## Memory errors number valgrind reports is $memError.\\
More than our threshold! ## ${NC}"
travis_terminate $memError
fi
fi
done
grep \'start to execute\\|definitely lost:\' mem-error-out.log|grep -v \'grep\'|uniq|tee uniq-definitely-lost-out.log
for defiMemError in `grep \'definitely lost:\' uniq-definitely-lost-out.log | awk \'{print $7}\'`
do
if [ -n "$defiMemError" ]; then
if [ "$defiMemError" -gt 13 ]; then
echo -e "${RED} ## Memory errors number valgrind reports \\
Definitely lost is $defiMemError. More than our threshold! ## ${NC}"
travis_terminate $defiMemError
fi
fi
done
./handle_val_log.sh
date
cd ${WKC}/tests
./test-all.sh b3
...
...
cmake/install.inc
浏览文件 @
125d147b
...
...
@@ -16,6 +16,7 @@ ELSEIF (TD_WINDOWS)
INSTALL
(
DIRECTORY
$
{
TD_COMMUNITY_DIR
}
/
tests
/
examples
DESTINATION
.
)
INSTALL
(
DIRECTORY
$
{
TD_COMMUNITY_DIR
}
/
packaging
/
cfg
DESTINATION
.
)
INSTALL
(
FILES
$
{
TD_COMMUNITY_DIR
}
/
src
/
inc
/
taos
.
h
DESTINATION
include
)
INSTALL
(
FILES
$
{
TD_COMMUNITY_DIR
}
/
src
/
inc
/
taoserror
.
h
DESTINATION
include
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
.
lib
DESTINATION
driver
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
.
exp
DESTINATION
driver
)
INSTALL
(
FILES
$
{
LIBRARY_OUTPUT_PATH
}
/
taos
.
dll
DESTINATION
driver
)
...
...
documentation20/webdocs/markdowndocs/connector-java-ch.md
浏览文件 @
125d147b
...
...
@@ -72,38 +72,34 @@ maven 项目中使用如下 pom.xml 配置即可:
### 获取连接
如下所示配置即可获取 TDengine Connection:
#### 通过JdbcUrl获取连接
通过指定的jdbcUrl获取连接,如下所示:
```
java
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
String
jdbcUrl
=
"jdbc:TAOS://
127.0.0.1:6030/log
?user=root&password=taosdata"
;
String
jdbcUrl
=
"jdbc:TAOS://
taosdemo.com:6030/test
?user=root&password=taosdata"
;
Connection
conn
=
DriverManager
.
getConnection
(
jdbcUrl
);
```
> 端口 6030 为默认连接端口,JDBC URL 中的 log 为系统本身的监控数据库
。
以上示例,建立了到hostname为taosdemo.com,端口为6030(TDengine的默认端口),数据库名为test的连接。这个url中指定用户名(user)为root,密码(password)为taosdata
。
TDengine 的 JDBC URL 规范格式为:
`jdbc:TAOS://{host_ip}:{port}/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]`
其中,
`{}`
中的内容必须,
`[]`
中为可选。配置参数说明如下:
`jdbc:TAOS://[host_name]:[port]/[database_name]?[user={user}|&password={password}|&charset={charset}|&cfgdir={config_dir}|&locale={locale}|&timezone={timezone}]`
url中的配置参数如下:
*
user:登录 TDengine 用户名,默认值 root。
*
password:用户登录密码,默认值 taosdata。
*
charset:客户端使用的字符集,默认值为系统字符集。
*
cfgdir:客户端配置文件目录路径,Linux OS 上默认值 /etc/taos ,Windows OS 上默认值 C:/TDengine/cfg。
*
charset:客户端使用的字符集,默认值为系统字符集。
*
locale:客户端语言环境,默认值系统当前 locale。
*
timezone:客户端使用的时区,默认值为系统当前时区。
以上参数可以在 3 处配置,
`优先级由高到低`
分别如下:
1.
JDBC URL 参数
如上所述,可以在 JDBC URL 的参数中指定。
2.
java.sql.DriverManager.getConnection(String jdbcUrl, Properties connProps)
#### 使用JdbcUrl和Properties获取连接
除了通过指定的jdbcUrl获取连接,还可以使用Properties指定建立连接时的参数,如下所示:
```
java
public
Connection
getConn
()
throws
Exception
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
String
jdbcUrl
=
"jdbc:TAOS://
127.0.0.1:0/log
?user=root&password=taosdata"
;
String
jdbcUrl
=
"jdbc:TAOS://
taosdemo.com:6030/test
?user=root&password=taosdata"
;
Properties
connProps
=
new
Properties
();
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_USER
,
"root"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_PASSWORD
,
"taosdata"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CONFIG_DIR
,
"/etc/taos"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
...
...
@@ -111,16 +107,39 @@ public Connection getConn() throws Exception{
return
conn
;
}
```
以上示例,建立一个到hostname为taosdemo.com,端口为6030,数据库名为test的连接。这个连接在url中指定了用户名(user)为root,密码(password)为taosdata,并在connProps中指定了使用的字符集、语言环境、时区等信息。
properties中的配置参数如下:
*
TSDBDriver.PROPERTY_KEY_USER:登录 TDengine 用户名,默认值 root。
*
TSDBDriver.PROPERTY_KEY_PASSWORD:用户登录密码,默认值 taosdata。
*
TSDBDriver.PROPERTY_KEY_CONFIG_DIR:客户端配置文件目录路径,Linux OS 上默认值 /etc/taos ,Windows OS 上默认值 C:/TDengine/cfg。
*
TSDBDriver.PROPERTY_KEY_CHARSET:客户端使用的字符集,默认值为系统字符集。
*
TSDBDriver.PROPERTY_KEY_LOCALE:客户端语言环境,默认值系统当前 locale。
*
TSDBDriver.PROPERTY_KEY_TIME_ZONE:客户端使用的时区,默认值为系统当前时区。
#### 使用客户端配置文件建立连接
当使用JDBC连接TDengine集群时,可以使用客户端配置文件,在客户端配置文件中指定集群的firstEp、secondEp参数。
如下所示:
1.
在java中不指定hostname和port
```
java
public
Connection
getConn
()
throws
Exception
{
Class
.
forName
(
"com.taosdata.jdbc.TSDBDriver"
);
String
jdbcUrl
=
"jdbc:TAOS://:/test?user=root&password=taosdata"
;
Properties
connProps
=
new
Properties
();
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_CHARSET
,
"UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_LOCALE
,
"en_US.UTF-8"
);
connProps
.
setProperty
(
TSDBDriver
.
PROPERTY_KEY_TIME_ZONE
,
"UTC-8"
);
Connection
conn
=
DriverManager
.
getConnection
(
jdbcUrl
,
connProps
);
return
conn
;
}
```
2.
在配置文件中指定firstEp和secondEp
```
# first fully qualified domain name (FQDN) for TDengine system
firstEp cluster_node1:6030
3.
客户端配置文件 taos.cfg
linux 系统默认配置文件为 /var/lib/taos/taos.cfg,windows 系统默认配置文件路径为 C:\TDengine\cfg\taos.cfg。
```
properties
# client default username
# defaultUser root
# client default password
# defaultPass taosdata
# second fully qualified domain name (FQDN) for TDengine system, for cluster only
secondEp cluster_node2:6030
# default system charset
# charset UTF-8
...
...
@@ -128,6 +147,19 @@ public Connection getConn() throws Exception{
# system locale
# locale en_US.UTF-8
```
以上示例,jdbc会使用客户端的配置文件,建立到hostname为cluster_node1,端口为6030,数据库名为test的连接。当集群中firstEp节点失效时,JDBC会尝试使用secondEp连接集群。
TDengine中,只要保证firstEp和secondEp中一个节点有效,就可以正常建立到集群的连接。
> 注意:这里的配置文件指的是调用JDBC Connector的应用程序所在机器上的配置文件,Linux OS 上默认值 /etc/taos/taos.cfg ,Windows OS 上默认值 C://TDengine/cfg/taos.cfg。
#### 配置参数的优先级
通过以上3种方式获取连接,如果配置参数在url、Properties、客户端配置文件中有重复,则参数的
`优先级由高到低`
分别如下:
1.
JDBC URL 参数,如上所述,可以在 JDBC URL 的参数中指定。
2.
Properties connProps
3.
客户端配置文件 taos.cfg
例如:在url中指定了password为taosdata,在Properties中指定了password为taosdemo,那么,JDBC会使用url中的password建立连接。
> 更多详细配置请参考[客户端配置][13]
### 创建数据库和表
...
...
packaging/docker/Dockerfile
浏览文件 @
125d147b
FROM
centos:7
FROM
ubuntu:16
WORKDIR
/root
...
...
snap/snapcraft.yaml
浏览文件 @
125d147b
name
:
tdengine
base
:
core18
version
:
'
RELEASE_VERSION
'
version
:
'
2.0.5.1
'
icon
:
snap/gui/t-dengine.svg
summary
:
an open-source big data platform designed and optimized for IoT.
description
:
|
...
...
@@ -72,7 +72,7 @@ parts:
-
usr/bin/taosd
-
usr/bin/taos
-
usr/bin/taosdemo
-
usr/lib/libtaos.so.
RELEASE_VERSION
-
usr/lib/libtaos.so.
2.0.5.1
-
usr/lib/libtaos.so.1
-
usr/lib/libtaos.so
...
...
src/client/src/tscSql.c
浏览文件 @
125d147b
...
...
@@ -28,6 +28,7 @@
#include "tutil.h"
#include "ttimer.h"
#include "tscProfile.h"
#include "ttimer.h"
static
bool
validImpl
(
const
char
*
str
,
size_t
maxsize
)
{
if
(
str
==
NULL
)
{
...
...
@@ -257,10 +258,21 @@ TAOS *taos_connect_a(char *ip, char *user, char *pass, char *db, uint16_t port,
void
taos_close
(
TAOS
*
taos
)
{
STscObj
*
pObj
=
(
STscObj
*
)
taos
;
if
(
pObj
==
NULL
||
pObj
->
signature
!=
pObj
)
{
if
(
pObj
==
NULL
)
{
tscDebug
(
"(null) try to free tscObj and close dnodeConn"
);
return
;
}
tscDebug
(
"%p try to free tscObj and close dnodeConn:%p"
,
pObj
,
pObj
->
pDnodeConn
);
if
(
pObj
->
signature
!=
pObj
)
{
tscDebug
(
"%p already closed or invalid tscObj"
,
pObj
);
return
;
}
// make sure that the close connection can only be executed once.
pObj
->
signature
=
NULL
;
taosTmrStopA
(
&
(
pObj
->
pTimer
));
SSqlObj
*
pHb
=
pObj
->
pHb
;
if
(
pHb
!=
NULL
&&
atomic_val_compare_exchange_ptr
(
&
pObj
->
pHb
,
pHb
,
0
)
==
pHb
)
{
if
(
pHb
->
pRpcCtx
!=
NULL
)
{
// wait for rsp from dnode
...
...
src/client/src/tscSubquery.c
浏览文件 @
125d147b
...
...
@@ -258,11 +258,11 @@ static int32_t tscLaunchRealSubqueries(SSqlObj* pSql) {
assert
(
numOfSub
>
0
);
// scan all subquery, if one sub query has only ts, ignore it
tscDebug
(
"%p start to launch secondary subqueries,
total:%d, only:%d needs to query"
,
pSql
,
pSql
->
subState
.
numOfSub
,
numOfSub
);
tscDebug
(
"%p start to launch secondary subqueries,
%d out of %d needs to query"
,
pSql
,
numOfSub
,
pSql
->
subState
.
numOfSub
);
//the subqueries that do not actually launch the secondary query to virtual node is set as completed.
SSubqueryState
*
pState
=
&
pSql
->
subState
;
pState
->
numOfRemain
=
pState
->
numOfSub
;
pState
->
numOfRemain
=
numOfSub
;
bool
success
=
true
;
...
...
src/os/src/linux/CMakeLists.txt
浏览文件 @
125d147b
...
...
@@ -4,4 +4,4 @@ PROJECT(TDengine)
AUX_SOURCE_DIRECTORY
(
. SRC
)
ADD_LIBRARY
(
os
${
SRC
}
)
TARGET_LINK_LIBRARIES
(
os m rt
)
TARGET_LINK_LIBRARIES
(
os m rt
z
)
src/util/src/tcache.c
浏览文件 @
125d147b
...
...
@@ -558,8 +558,8 @@ void taosAddToTrashcan(SCacheObj *pCacheObj, SCacheDataNode *pNode) {
pCacheObj
->
numOfElemsInTrash
++
;
__cache_unlock
(
pCacheObj
);
uDebug
(
"cache:%s key:%p, %p move to trashcan,
numOfElem in trashcan:%d"
,
pCacheObj
->
name
,
pNode
->
key
,
pNode
->
data
,
pCacheObj
->
numOfElemsInTrash
);
uDebug
(
"cache:%s key:%p, %p move to trashcan,
pTrashElem:%p, numOfElem in trashcan:%d"
,
pCacheObj
->
name
,
p
Node
->
key
,
pNode
->
data
,
pElem
,
p
CacheObj
->
numOfElemsInTrash
);
}
void
taosTrashcanEmpty
(
SCacheObj
*
pCacheObj
,
bool
force
)
{
...
...
tests/pytest/handle_val_log.sh
0 → 100644
浏览文件 @
125d147b
# Color setting
RED
=
'\033[0;31m'
GREEN
=
'\033[1;32m'
GREEN_DARK
=
'\033[0;32m'
GREEN_UNDERLINE
=
'\033[4;32m'
NC
=
'\033[0m'
grep
'start to execute\|ERROR SUMMARY'
mem-error-out.log|grep
-v
'grep'
|uniq|tee uniq-mem-error-out.log
for
memError
in
`
grep
'ERROR SUMMARY'
uniq-mem-error-out.log |
awk
'{print $4}'
`
do
if
[
-n
"
$memError
"
]
;
then
if
[
"
$memError
"
-gt
12
]
;
then
echo
-e
"
${
RED
}
## Memory errors number valgrind reports is
$memError
.
\
More than our threshold! ##
${
NC
}
"
fi
fi
done
grep
'start to execute\|definitely lost:'
mem-error-out.log|grep
-v
'grep'
|uniq|tee uniq-definitely-lost-out.log
for
defiMemError
in
`
grep
'definitely lost:'
uniq-definitely-lost-out.log |
awk
'{print $7}'
`
do
if
[
-n
"
$defiMemError
"
]
;
then
if
[
"
$defiMemError
"
-gt
13
]
;
then
echo
-e
"
${
RED
}
## Memory errors number valgrind reports
\
Definitely lost is
$defiMemError
. More than our threshold! ##
${
NC
}
"
fi
fi
done
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录