Dissem / Jabit

Bitmessage Library for Java
Apache License 2.0
26 stars 10 forks source link

Fix Messy Shutdown #15

Closed Dissem closed 9 years ago

Dissem commented 9 years ago

On network shutdown there are a few exceptions that might get thrown, and sometimes it takes quite some time to shut down.

Dissem commented 9 years ago
Exception in thread "pool-1-thread-6" java.lang.RuntimeException: org.h2.jdbc.JdbcSQLException: Fehler beim Öffnen der Datenbank: "Sleep interrupted"
Error opening database: "Sleep interrupted" [8000-187]
        at ch.dissem.bitmessage.repository.JdbcConfig.getConnection(JdbcConfig.java:52)
        at ch.dissem.bitmessage.repository.JdbcAddressRepository.find(JdbcAddressRepository.java:94)
        at ch.dissem.bitmessage.repository.JdbcAddressRepository.findContact(JdbcAddressRepository.java:46)
        at ch.dissem.bitmessage.DefaultMessageListener.receive(DefaultMessageListener.java:84)
        at ch.dissem.bitmessage.DefaultMessageListener.receive(DefaultMessageListener.java:57)
        at ch.dissem.bitmessage.networking.Connection.receiveMessage(Connection.java:218)
        at ch.dissem.bitmessage.networking.Connection.run(Connection.java:123)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.h2.jdbc.JdbcSQLException: Fehler beim Öffnen der Datenbank: "Sleep interrupted"
Error opening database: "Sleep interrupted" [8000-187]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
        at org.h2.message.DbException.get(DbException.java:168)
        at org.h2.store.FileLock.getExceptionFatal(FileLock.java:456)
        at org.h2.store.FileLock.sleep(FileLock.java:451)
        at org.h2.store.FileLock.lockFile(FileLock.java:363)
        at org.h2.store.FileLock.lock(FileLock.java:135)
        at org.h2.engine.Database.open(Database.java:634)
        at org.h2.engine.Database.openDatabase(Database.java:266)
        at org.h2.engine.Database.<init>(Database.java:260)
        at org.h2.engine.Engine.openSession(Engine.java:60)
        at org.h2.engine.Engine.openSession(Engine.java:167)
        at org.h2.engine.Engine.createSessionAndValidate(Engine.java:145)
        at org.h2.engine.Engine.createSession(Engine.java:128)
        at org.h2.engine.Engine.createSession(Engine.java:26)
        at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:347)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:108)
        at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:92)
        at org.h2.Driver.connect(Driver.java:72)
        at java.sql.DriverManager.getConnection(DriverManager.java:664)
        at java.sql.DriverManager.getConnection(DriverManager.java:247)
        at ch.dissem.bitmessage.repository.JdbcConfig.getConnection(JdbcConfig.java:50)
        ... 9 more
Caused by: java.lang.InterruptedException: sleep interrupted
        at java.lang.Thread.sleep(Native Method)
        at org.h2.store.FileLock.sleep(FileLock.java:449)
        ... 26 more
Dissem commented 9 years ago

No exceptions should occur anymore on network shutdown. The fix should also have some positive side effects on network performance.