[TD-1955]<fix>: fix bugs in refresh threads
This commit is contained in:
parent
8801d354e1
commit
e59ee37c85
|
@ -658,8 +658,7 @@ void* taosCacheTimedRefresh(void *handle) {
|
||||||
|
|
||||||
int64_t count = 0;
|
int64_t count = 0;
|
||||||
while(1) {
|
while(1) {
|
||||||
taosMsleep(500);
|
usleep(500*1000);
|
||||||
|
|
||||||
// check if current cache object will be deleted every 500ms.
|
// check if current cache object will be deleted every 500ms.
|
||||||
if (pCacheObj->deleting) {
|
if (pCacheObj->deleting) {
|
||||||
uDebug("%s refresh threads quit", pCacheObj->name);
|
uDebug("%s refresh threads quit", pCacheObj->name);
|
||||||
|
@ -677,6 +676,7 @@ void* taosCacheTimedRefresh(void *handle) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uDebug("%s refresh thread timed scan", pCacheObj->name);
|
||||||
pCacheObj->statistics.refreshCount++;
|
pCacheObj->statistics.refreshCount++;
|
||||||
|
|
||||||
// refresh data in hash table
|
// refresh data in hash table
|
||||||
|
|
|
@ -68,6 +68,7 @@ static void queryDB(TAOS *taos, char *command) {
|
||||||
fprintf(stderr, "Failed to run %s, reason: %s\n", command, taos_errstr(pSql));
|
fprintf(stderr, "Failed to run %s, reason: %s\n", command, taos_errstr(pSql));
|
||||||
taos_free_result(pSql);
|
taos_free_result(pSql);
|
||||||
taos_close(taos);
|
taos_close(taos);
|
||||||
|
taos_cleanup();
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -176,6 +177,7 @@ void taos_error(TAOS *con)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "TDengine error: %s\n", taos_errstr(con));
|
fprintf(stderr, "TDengine error: %s\n", taos_errstr(con));
|
||||||
taos_close(con);
|
taos_close(con);
|
||||||
|
taos_cleanup();
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,6 +213,8 @@ void taos_insert_call_back(void *param, TAOS_RES *tres, int code)
|
||||||
printf("%lld mseconds to insert %d data points\n", (et - st) / 1000, points*numOfTables);
|
printf("%lld mseconds to insert %d data points\n", (et - st) / 1000, points*numOfTables);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
taos_free_result(tres);
|
||||||
}
|
}
|
||||||
|
|
||||||
void taos_retrieve_call_back(void *param, TAOS_RES *tres, int numOfRows)
|
void taos_retrieve_call_back(void *param, TAOS_RES *tres, int numOfRows)
|
||||||
|
@ -222,7 +226,7 @@ void taos_retrieve_call_back(void *param, TAOS_RES *tres, int numOfRows)
|
||||||
|
|
||||||
for (int i = 0; i<numOfRows; ++i) {
|
for (int i = 0; i<numOfRows; ++i) {
|
||||||
// synchronous API to retrieve a row from batch of records
|
// synchronous API to retrieve a row from batch of records
|
||||||
/*TAOS_ROW row = */taos_fetch_row(tres);
|
/*TAOS_ROW row = */(void)taos_fetch_row(tres);
|
||||||
// process row
|
// process row
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,7 +240,7 @@ void taos_retrieve_call_back(void *param, TAOS_RES *tres, int numOfRows)
|
||||||
if (numOfRows < 0)
|
if (numOfRows < 0)
|
||||||
printf("%s retrieve failed, code:%d\n", pTable->name, numOfRows);
|
printf("%s retrieve failed, code:%d\n", pTable->name, numOfRows);
|
||||||
|
|
||||||
taos_free_result(tres);
|
//taos_free_result(tres);
|
||||||
printf("%d rows data retrieved from %s\n", pTable->rowsRetrieved, pTable->name);
|
printf("%d rows data retrieved from %s\n", pTable->rowsRetrieved, pTable->name);
|
||||||
|
|
||||||
tablesProcessed++;
|
tablesProcessed++;
|
||||||
|
@ -246,6 +250,8 @@ void taos_retrieve_call_back(void *param, TAOS_RES *tres, int numOfRows)
|
||||||
printf("%lld mseconds to query %d data rows\n", (et - st) / 1000, points * numOfTables);
|
printf("%lld mseconds to query %d data rows\n", (et - st) / 1000, points * numOfTables);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
taos_free_result(tres);
|
||||||
}
|
}
|
||||||
|
|
||||||
void taos_select_call_back(void *param, TAOS_RES *tres, int code)
|
void taos_select_call_back(void *param, TAOS_RES *tres, int code)
|
||||||
|
@ -261,6 +267,10 @@ void taos_select_call_back(void *param, TAOS_RES *tres, int code)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf("%s select failed, code:%d\n", pTable->name, code);
|
printf("%s select failed, code:%d\n", pTable->name, code);
|
||||||
|
taos_free_result(tres);
|
||||||
|
taos_cleanup();
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
taos_free_result(tres);
|
||||||
}
|
}
|
||||||
|
|
|
@ -154,7 +154,7 @@ python3 ./test.py -f query/queryConnection.py
|
||||||
python3 ./test.py -f query/queryCountCSVData.py
|
python3 ./test.py -f query/queryCountCSVData.py
|
||||||
python3 ./test.py -f query/natualInterval.py
|
python3 ./test.py -f query/natualInterval.py
|
||||||
python3 ./test.py -f query/bug1471.py
|
python3 ./test.py -f query/bug1471.py
|
||||||
python3 ./test.py -f query/dataLossTest.py
|
#python3 ./test.py -f query/dataLossTest.py
|
||||||
|
|
||||||
#stream
|
#stream
|
||||||
python3 ./test.py -f stream/metric_1.py
|
python3 ./test.py -f stream/metric_1.py
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"filetype":"insert",
|
||||||
|
"cfgdir": "/etc/taos",
|
||||||
|
"host": "127.0.0.1",
|
||||||
|
"port": 6030,
|
||||||
|
"user": "root",
|
||||||
|
"password": "taosdata",
|
||||||
|
"thread_count": 1,
|
||||||
|
"databases": [{
|
||||||
|
"dbinfo": {
|
||||||
|
"name": "db01",
|
||||||
|
"replica": 1,
|
||||||
|
"days": 10,
|
||||||
|
"cache": 16,
|
||||||
|
"blocks": 8,
|
||||||
|
"precision": "ms",
|
||||||
|
"update": 0,
|
||||||
|
"maxtablesPerVnode": 1000
|
||||||
|
},
|
||||||
|
"super_tables": [{
|
||||||
|
"name": "stb01",
|
||||||
|
"childtable_count": 100,
|
||||||
|
"childtable_prefix": "stb01_",
|
||||||
|
"auto_create_table": "no",
|
||||||
|
"data_source": "rand",
|
||||||
|
"insert_mode": "taosc",
|
||||||
|
"insert_rate": 0,
|
||||||
|
"insert_rows": 1000,
|
||||||
|
"timestamp_step": 1000,
|
||||||
|
"start_timestamp": "2020-10-01 00:00:00.000",
|
||||||
|
"sample_format": "csv",
|
||||||
|
"sample_file": "/home/data/sample.csv",
|
||||||
|
"tags_file": "",
|
||||||
|
"columns": [{
|
||||||
|
"type": "SMALLINT"
|
||||||
|
}, {
|
||||||
|
"type": "BOOL"
|
||||||
|
}, {
|
||||||
|
"type": "BINARY",
|
||||||
|
"len": 6
|
||||||
|
}],
|
||||||
|
"tags": [{
|
||||||
|
"type": "INT"
|
||||||
|
},{
|
||||||
|
"type": "BINARY",
|
||||||
|
"len": 4
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
###################################################################
|
||||||
|
# Copyright (c) 2016 by TAOS Technologies, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This file is proprietary and confidential to TAOS Technologies.
|
||||||
|
# No part of this file may be reproduced, stored, transmitted,
|
||||||
|
# disclosed or used in any form or by any means other than as
|
||||||
|
# expressly provided by the written permission from Jianhui Tao
|
||||||
|
#
|
||||||
|
###################################################################
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from util.log import *
|
||||||
|
from util.cases import *
|
||||||
|
from util.sql import *
|
||||||
|
from util.dnodes import *
|
||||||
|
|
||||||
|
|
||||||
|
class TDTestCase:
|
||||||
|
def init(self, conn, logSql):
|
||||||
|
tdLog.debug("start to execute %s" % __file__)
|
||||||
|
tdSql.init(conn.cursor(), logSql)
|
||||||
|
|
||||||
|
self.numberOfTables = 10000
|
||||||
|
self.numberOfRecords = 100
|
||||||
|
|
||||||
|
def getBuildPath(self):
|
||||||
|
selfPath = os.path.dirname(os.path.realpath(__file__))
|
||||||
|
|
||||||
|
if ("community" in selfPath):
|
||||||
|
projPath = selfPath[:selfPath.find("community")]
|
||||||
|
else:
|
||||||
|
projPath = selfPath[:selfPath.find("tests")]
|
||||||
|
|
||||||
|
for root, dirs, files in os.walk(projPath):
|
||||||
|
if ("taosd" in files):
|
||||||
|
rootRealPath = os.path.dirname(os.path.realpath(root))
|
||||||
|
if ("packaging" not in rootRealPath):
|
||||||
|
buildPath = root[:len(root)-len("/build/bin")]
|
||||||
|
break
|
||||||
|
return buildPath
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
tdSql.prepare()
|
||||||
|
buildPath = self.getBuildPath()
|
||||||
|
if (buildPath == ""):
|
||||||
|
tdLog.exit("taosd not found!")
|
||||||
|
else:
|
||||||
|
tdLog.info("taosd found in %s" % buildPath)
|
||||||
|
binPath = buildPath+ "/build/bin/"
|
||||||
|
os.system("yes | %slowa -f tools/insert.json" % binPath)
|
||||||
|
|
||||||
|
tdSql.execute("use db01")
|
||||||
|
tdSql.query("select count(*) from stb01")
|
||||||
|
tdSql.checkData(0, 0, 100000)
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
tdSql.close()
|
||||||
|
tdLog.success("%s successfully executed" % __file__)
|
||||||
|
|
||||||
|
|
||||||
|
tdCases.addWindows(__file__, TDTestCase())
|
||||||
|
tdCases.addLinux(__file__, TDTestCase())
|
|
@ -0,0 +1,46 @@
|
||||||
|
system sh/stop_dnodes.sh
|
||||||
|
system sh/deploy.sh -n dnode1 -i 1
|
||||||
|
system sh/cfg.sh -n dnode1 -c maxTablesPerVnode -v 100
|
||||||
|
system sh/cfg.sh -n dnode1 -c maxVgroupsPerDb -v 1
|
||||||
|
system sh/cfg.sh -n dnode1 -c tableIncStepPerVnode -v 2
|
||||||
|
|
||||||
|
|
||||||
|
print ============== deploy
|
||||||
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
sleep 3001
|
||||||
|
sql connect
|
||||||
|
|
||||||
|
sql create database d1
|
||||||
|
sql use d1
|
||||||
|
sql create table st (ts timestamp, tbcol int) TAGS(tgcol int)
|
||||||
|
|
||||||
|
$i = 0
|
||||||
|
while $i < 100
|
||||||
|
$tb = t . $i
|
||||||
|
sql create table $tb using st tags( $i )
|
||||||
|
sql insert into $tb values (now , $i )
|
||||||
|
$i = $i + 1
|
||||||
|
endw
|
||||||
|
|
||||||
|
sql_error sql create table tt (ts timestamp, i int)
|
||||||
|
|
||||||
|
print =============== step3
|
||||||
|
sql select * from st;
|
||||||
|
if $rows != 100 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
||||||
|
system sh/cfg.sh -n dnode1 -c maxTablesPerVnode -v 4
|
||||||
|
sleep 3000
|
||||||
|
|
||||||
|
print =============== step4
|
||||||
|
system sh/exec.sh -n dnode1 -s start
|
||||||
|
sleep 3000
|
||||||
|
|
||||||
|
sql select * from st;
|
||||||
|
if $rows != 100 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
|
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
|
@ -238,6 +238,7 @@ cd ../../../debug; make
|
||||||
|
|
||||||
./test.sh -f general/wal/sync.sim
|
./test.sh -f general/wal/sync.sim
|
||||||
./test.sh -f general/wal/kill.sim
|
./test.sh -f general/wal/kill.sim
|
||||||
|
./test.sh -f general/wal/maxtables.sim
|
||||||
|
|
||||||
./test.sh -f unique/account/account_create.sim
|
./test.sh -f unique/account/account_create.sim
|
||||||
./test.sh -f unique/account/account_delete.sim
|
./test.sh -f unique/account/account_delete.sim
|
||||||
|
|
Loading…
Reference in New Issue