You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@iotdb.apache.org by "刘珍 (Jira)" <ji...@apache.org> on 2022/04/29 05:50:00 UTC

[jira] [Created] (IOTDB-3044) [ concurrent delete sg ] There are some timeseries that cannot be deleted

刘珍 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)