Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
慢慢CG
TDengine
提交
43bbbfd8
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看板
提交
43bbbfd8
编写于
8月 27, 2020
作者:
S
Steven Li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Crash_gen tool minor tweaks, hoping to run 10x5000 with -a option
上级
5da3bbeb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
34 addition
and
21 deletion
+34
-21
tests/pytest/crash_gen.py
tests/pytest/crash_gen.py
+34
-21
未找到文件。
tests/pytest/crash_gen.py
浏览文件 @
43bbbfd8
...
...
@@ -161,6 +161,18 @@ class WorkerThread:
logger
.
debug
(
"[TRD] Thread Coordinator not running any more, worker thread now stopping..."
)
break
# Before we fetch the task and run it, let's ensure we properly "use" the database
try
:
self
.
useDb
()
# might encounter exceptions. TODO: catch
except
taos
.
error
.
ProgrammingError
as
err
:
errno
=
Helper
.
convertErrno
(
err
.
errno
)
if
errno
==
0x383
:
# invalid database
# ignore
dummy
=
0
else
:
print
(
"
\n
Caught programming error. errno=0x{:X}, msg={} "
.
format
(
errno
,
err
.
msg
))
raise
# Fetch a task from the Thread Coordinator
logger
.
debug
(
"[TRD] Worker thread [{}] about to fetch task"
.
format
(
self
.
_tid
))
task
=
tc
.
fetchTask
()
...
...
@@ -324,10 +336,12 @@ class ThreadCoordinator:
logger
.
debug
(
"[STT] transition ended"
)
# Due to limitation (or maybe not) of the Python library,
# we cannot share connections across threads
if
sm
.
hasDatabase
():
for
t
in
self
.
_pool
.
threadList
:
logger
.
debug
(
"[DB] use db for all worker threads"
)
t
.
useDb
()
# Here we are in main thread, we cannot operate the connections created in workers
# Moving below to task loop
# if sm.hasDatabase():
# for t in self._pool.threadList:
# logger.debug("[DB] use db for all worker threads")
# t.useDb()
# t.execSql("use db") # main thread executing "use
# db" on behalf of every worker thread
except
taos
.
error
.
ProgrammingError
as
err
:
...
...
@@ -387,7 +401,7 @@ class ThreadCoordinator:
transitionFailed
=
self
.
_doTransition
()
# To start, we end step -1 first
except
taos
.
error
.
ProgrammingError
as
err
:
transitionFailed
=
True
errno2
=
err
.
errno
if
(
err
.
errno
>
0
)
else
0x80000000
+
err
.
errno
# correct error scheme
errno2
=
Helper
.
convertErrno
(
err
.
errno
)
# correct error scheme
errMsg
=
"Transition failed: errno=0x{:X}, msg: {}"
.
format
(
errno2
,
err
)
logger
.
info
(
errMsg
)
self
.
_execStats
.
registerFailure
(
errMsg
)
...
...
@@ -468,6 +482,10 @@ class ThreadCoordinator:
# We define a class to run a number of threads in locking steps.
class
Helper
:
@
classmethod
def
convertErrno
(
cls
,
errno
):
return
errno
if
(
errno
>
0
)
else
0x80000000
+
errno
class
ThreadPool
:
def
__init__
(
self
,
numThreads
,
maxSteps
):
...
...
@@ -613,8 +631,7 @@ class DbConn:
def
resetDb
(
self
):
# reset the whole database, etc.
if
(
not
self
.
isOpen
):
raise
RuntimeError
(
"Cannot reset database until connection is open"
)
raise
RuntimeError
(
"Cannot reset database until connection is open"
)
# self._tdSql.prepare() # Recreate database, etc.
self
.
execute
(
'drop database if exists db'
)
...
...
@@ -681,8 +698,7 @@ class DbConnRest(DbConn):
def
close
(
self
):
if
(
not
self
.
isOpen
):
raise
RuntimeError
(
"Cannot clean up database until connection is open"
)
raise
RuntimeError
(
"Cannot clean up database until connection is open"
)
# Do nothing for REST
logger
.
debug
(
"[DB] REST Database connection closed"
)
self
.
isOpen
=
False
...
...
@@ -796,8 +812,7 @@ class DbConnNative(DbConn):
super
().
__init__
()
self
.
_type
=
self
.
TYPE_NATIVE
self
.
_conn
=
None
self
.
_cursor
=
None
self
.
_cursor
=
None
def
getBuildPath
(
self
):
selfPath
=
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
))
...
...
@@ -814,7 +829,7 @@ class DbConnNative(DbConn):
buildPath
=
root
[:
len
(
root
)
-
len
(
"/build/bin"
)]
break
if
buildPath
==
None
:
raise
RuntimeError
(
"Failed to determine buildPath, selfPath={}
"
.
format
(
self
Path
))
raise
RuntimeError
(
"Failed to determine buildPath, selfPath={}
, projPath={}"
.
format
(
selfPath
,
proj
Path
))
return
buildPath
...
...
@@ -839,8 +854,7 @@ class DbConnNative(DbConn):
def
close
(
self
):
if
(
not
self
.
isOpen
):
raise
RuntimeError
(
"Cannot clean up database until connection is open"
)
raise
RuntimeError
(
"Cannot clean up database until connection is open"
)
self
.
_tdSql
.
close
()
logger
.
debug
(
"[DB] Database connection closed"
)
self
.
isOpen
=
False
...
...
@@ -1528,7 +1542,7 @@ class Task():
try
:
self
.
_executeInternal
(
te
,
wt
)
# TODO: no return value?
except
taos
.
error
.
ProgrammingError
as
err
:
errno2
=
err
.
errno
if
(
err
.
errno
>
0
)
else
0x80000000
+
err
.
errno
# correct error scheme
errno2
=
Helper
.
convertErrno
(
err
.
errno
)
if
(
gConfig
.
continue_on_exception
):
# user choose to continue
self
.
logDebug
(
"[=] Continue after TAOS exception: errno=0x{:X}, msg: {}, SQL: {}"
.
format
(
errno2
,
err
,
wt
.
getDbConn
().
getLastSql
()))
...
...
@@ -1789,7 +1803,7 @@ class TdSuperTable:
try
:
dbc
.
query
(
"select TBNAME from db.{}"
.
format
(
self
.
_stName
))
# TODO: analyze result set later
except
taos
.
error
.
ProgrammingError
as
err
:
errno2
=
err
.
errno
if
(
err
.
errno
>
0
)
else
0x80000000
+
err
.
errno
errno2
=
Helper
.
convertErrno
(
err
.
errno
)
logger
.
debug
(
"[=] Failed to get tables from super table: errno=0x{:X}, msg: {}"
.
format
(
errno2
,
err
))
raise
...
...
@@ -1891,7 +1905,7 @@ class TaskReadData(StateTransitionTask):
if
aggExpr
not
in
[
'stddev(speed)'
]:
#TODO: STDDEV not valid for super tables?!
dbc
.
execute
(
"select {} from db.{}"
.
format
(
aggExpr
,
sTable
.
getName
()))
except
taos
.
error
.
ProgrammingError
as
err
:
errno2
=
err
.
errno
if
(
err
.
errno
>
0
)
else
0x80000000
+
err
.
errno
errno2
=
Helper
.
convertErrno
(
err
.
errno
)
logger
.
debug
(
"[=] Read Failure: errno=0x{:X}, msg: {}, SQL: {}"
.
format
(
errno2
,
err
,
dbc
.
getLastSql
()))
raise
...
...
@@ -1920,9 +1934,8 @@ class TaskDropSuperTable(StateTransitionTask):
self
.
execWtSql
(
wt
,
"drop table {}"
.
format
(
regTableName
))
# nRows always 0, like MySQL
except
taos
.
error
.
ProgrammingError
as
err
:
# correcting for strange error number scheme
errno2
=
err
.
errno
if
(
err
.
errno
>
0
)
else
0x80000000
+
err
.
errno
# correcting for strange error number scheme
errno2
=
Helper
.
convertErrno
(
err
.
errno
)
if
(
errno2
in
[
0x362
]):
# mnode invalid table name
isSuccess
=
False
logger
.
debug
(
...
...
@@ -2437,7 +2450,7 @@ class ServiceManagerThread:
if
self
.
_status
==
MainExec
.
STATUS_STARTING
:
# we are starting, let's see if we have started
if
line
.
find
(
self
.
TD_READY_MSG
)
!=
-
1
:
# found
logger
.
info
(
"Waiting for the service to become FULLY READY"
)
time
.
sleep
(
1
.0
)
# wait for the server to truly start. TODO: remove this
time
.
sleep
(
5
.0
)
# wait for the server to truly start. TODO: remove this
logger
.
info
(
"Service is now FULLY READY"
)
self
.
_status
=
MainExec
.
STATUS_RUNNING
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录