[
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)