You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@iotdb.apache.org by "EJTTianyu (JIRA)" <ji...@apache.org> on 2019/07/16 11:51:00 UTC

[jira] [Closed] (IOTDB-105) IoTDB lock bug

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

EJTTianyu closed IOTDB-105.
---------------------------
    Resolution: Fixed

> IoTDB lock bug
> --------------
>
>                 Key: IOTDB-105
>                 URL: https://issues.apache.org/jira/browse/IOTDB-105
>             Project: Apache IoTDB
>          Issue Type: Bug
>            Reporter: EJTTianyu
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: IoTDB restart Bug.docx
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> We conducted a long-term test using benchmark with the test parameters as:
>  * client:50
>  * device:2000
>  * sensor:100
> IoTDB throws an exception in the test. When we would like to restart the IoTDB, in the procedure of merge overflow data, exception occured when merge process was about to end like following:
> {code:java}
> ERROR org.apache.iotdb.db.concurrent.IoTDBDefaultThreadExceptionHandler:31 - Exception in thread main-1
> java.lang.IllegalMonitorStateException: null
> at java.util.concurrent.locks.ReentrantReadWriteLock$Sync.tryRelease(ReentrantReadWriteLock.java:371)
> at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1261)
> at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.unlock(ReentrantReadWriteLock.java:1131)
> at org.apache.iotdb.db.engine.Processor.writeUnlock(Processor.java:75)
> at org.apache.iotdb.db.engine.filenode.FileNodeManager.recovery(FileNodeManager.java:263)
> at org.apache.iotdb.db.service.IoTDB.setUp(IoTDB.java:85)
> at org.apache.iotdb.db.service.IoTDB.active(IoTDB.java:69)
> at org.apache.iotdb.db.service.IoTDB.main(IoTDB.java:55)
> {code}
> We found the exception file: org/apache/iotdb/db/engine/filenode/FileNodeManager.java
> The exception reason is that we unlock the unlocked files.
> We used the try-catch and merged the overflow data. Then IoTDB could be restarted successfully with the delete thread exception which not influence the function of IoTDB(actually, we test the query and insert function).The delete thread exception is like following:
> {code:java}
> ERROR org.apache.iotdb.db.monitor.StatMonitor$StatBackLoop:372 - Error occurred in Stat Monitor thread
> java.lang.NullPointerException: null
> at org.apache.iotdb.db.engine.filenode.FileNodeManager.delete(FileNodeManager.java:546)
> at org.apache.iotdb.db.monitor.StatMonitor$StatBackLoop.run(StatMonitor.java:357)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> at java.lang.Thread.run(Thread.java:748)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.14#76016)