刘珍 created IOTDB-3044: ------------------------- Summary: [ concurrent delete sg ] There are some timeseries that cannot be deleted Key: IOTDB-3044 URL: https://issues.apache.org/jira/browse/IOTDB-3044 Project: Apache IoTDB Issue Type: Bug Components: Core/Schema Manager Affects Versions: 0.14.0-SNAPSHOT Reporter: 刘珍 Assignee: Jialin Qiao Attachments: image-2022-04-29-13-45-06-033.png
master_0428_ca4f3cf 问题描述: 50sg,500 dev, 200000 sensor/dev show devices的结果输出到dev_name.txt 顺序读取dev_name.txt中的设备名称,一个设备上1次delete 1个ts,10用户并发执行delete。 有的ts delete不掉。 日志中记录delete ts的操作,show timeseries还可以看到: !image-2022-04-29-13-45-06-033.png! 测试流程 1. 192.168.10.68 机器 benchmark生成元数据。 2. 获取devices (放在${iotdb_dir}) 执行脚本 get_dev_name.sh #!/bin/bash ./sbin/start-cli.sh -e "show devices;" |grep root|awk -F '|' '{print $2}' > dev_name.txt 3. 启动并行delete (放在${iotdb_dir}) cat del_10ts.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 {0..99} do idx=$(( $loop * 2000 )) execute "dev_name.txt" ${idx} ${count_ts_base} let count_ts_base-- done idx=199999 execute "dev_name.txt" ${idx} ${count_ts_base} 不符合预期的结果会打印到fail.log 根据fail中记录的 ts名称,查看日志,有对应的delete ,show 可以看到没有被delete掉。 -- This message was sent by Atlassian Jira (v8.20.7#820007)