EJTTianyu created IOTDB-105:
-------------------------------
Summary: IoTDB lock bug
Key: IOTDB-105
URL: https://issues.apache.org/jira/browse/IOTDB-105
Project: Apache IoTDB
Issue Type: Bug
Reporter: EJTTianyu
Attachments: IoTDB restart Bug.docx
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.3#76005)