刘珍 created IOTDB-3045: ------------------------- Summary: [ schema recovery ] The query result contains some timeseries that have been deleted Key: IOTDB-3045 URL: https://issues.apache.org/jira/browse/IOTDB-3045 Project: Apache IoTDB Issue Type: Bug Components: Core/Schema Manager Affects Versions: 0.14.0-SNAPSHOT Reporter: 刘珍 Assignee: Jialin Qiao Attachments: config.properties, d1.log
master_0428_ca4f3cf 问题描述: 50 sg,100 dev,200000 sensors/dev, 共2000万序列。 100个设备名称记录在文件中, 遍历文件,10个用户并发 delete ts,1个设备上delete 1条序列。 重复10次,也就是这100个dev,每个dev共delete 10个ts。 delete 后,执行count timeseries dev.* ;结果符合预期。 备份数据。 {color:#DE350B}重启iotdb,恢复元数据后,再查询 100个dev的序列数,有14个设备的序列数都是20万, 期望是199990,delete的ts,又查询到了。{color} 详细测试流程: 1. 私有云 192.168.130.2 2. benchmark 配置见附件 3. 获取dev 名称,记录到文件dev_name.txt cat get_dev_name.sh #!/bin/bash ./sbin/start-cli.sh -e "show devices;" |grep root|awk -F '|' '{print $2}' > dev_name.txt 4. 并发delete cat del_1_ts.sh #!/bin/bash function delete_ts() { del_ts=$1 dev_name=$2 exp_count=$3 count_ts ${exp_count} ${dev_name} ./sbin/start-cli.sh -e "delete timeseries ${del_ts};" let exp_count-- count_ts ${exp_count} ${dev_name} } function count_ts() { exp_c_ts=$1 dev_name=$2 cur_c_ts=`./sbin/start-cli.sh -e "count timeseries ${dev_name};"|sed -n "4,4p"|awk -F '|' '{print $2}'` if [ "${cur_c_ts}" -eq "${exp_c_ts}" ];then echo "ok" else echo "fail. ${dev_name} ${exp_c_ts} ${cur_c_ts}" >>./fail.log fi } function execute() { in_file=$1 i=$2 exp_count=$3 n=0 cat ${in_file} | while read line do del_ts="${line}.s_${i}" dev_name="${line}.*"; delete_ts ${del_ts} ${dev_name} ${exp_count} & let i++ let n++ b=$(( $n % 10 )) if [ "$b" -eq "0" ];then wait fi done wait } # 循环几轮 count_ts_base=200000 for loop in {1..10} do execute "dev_name.txt" ${loop} ${count_ts_base} let count_ts_base-- done 并发delete脚本的日志文件见附件。 执行count_ts.sh,查看每个dev的count timeseries,是否都是199990。 有14个dev的结果是200000,不符合预期结果。 -- This message was sent by Atlassian Jira (v8.20.7#820007)