[ 
https://issues.apache.org/jira/browse/IOTDB-125?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yuan Tian reassigned IOTDB-125:
-------------------------------

    Assignee: Yuan Tian

> [potential]  a concurrency conflict may occur when a delete command and 
> insertion command appears concurrently
> --------------------------------------------------------------------------------------------------------------
>
>                 Key: IOTDB-125
>                 URL: https://issues.apache.org/jira/browse/IOTDB-125
>             Project: Apache IoTDB
>          Issue Type: Bug
>            Reporter: xiangdong Huang
>            Assignee: Yuan Tian
>            Priority: Major
>              Labels: medium
>
> * Hi, 
> we find a potential bug,
> Suppose client A calls a delete time series root.sg1.*, then  
> OverflowQPExecutor.java's operateMetadata() will be called.
>  At the same time, client B calls a insertion command insert into 
> root.sg1.d1.s1 ..., then the bug may appear:
> 1. B checks the schema and find sg1.d1.s1 is valid, then B is waiting for the 
> write lock of related StorageGroupProcessor,
> 2. A removes the definition of time series in SG1,  all data files of SG1 and 
> then return back;
> 3. B gets the write lock and write data successfully; finally, the data is 
> flushed on disk.
> Then, if client C calls `select * from root.sg1`, C gets nothing because 
> there is no time series defined under the storage group.
> Now client C creates sg1.d1.s1 again, and then executes `select * from 
> root.sg1`, C will find the data that B wrote....
>  
> A solution is set a database-level read write lock. For all operations which 
> will modify the schema, the write lock is needed; For all other operations 
> (e.g., insertion), the read lock is needed.
> (We need to consider the cost of calling the read lock for each insertion 
> operation)
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to