diff --git a/components/net/sf/briar/db/H2Database.java b/components/net/sf/briar/db/H2Database.java index c28fc615a97ff8295603b1a7063d8240f47a65cb..ab51d7cc3ca91953776cc464966040bb14504444 100644 --- a/components/net/sf/briar/db/H2Database.java +++ b/components/net/sf/briar/db/H2Database.java @@ -55,6 +55,7 @@ class H2Database extends JdbcDatabase { } public void close() throws DbException { + // H2 will close the database when the last connection closes try { super.closeAllConnections(); } catch(SQLException e) { diff --git a/components/net/sf/briar/db/JdbcDatabase.java b/components/net/sf/briar/db/JdbcDatabase.java index c9d40d7d5d4fd1989ca201ceb96a802f1f68c452..9018ddb7d74f21bbc785e851e9901edb86c5401e 100644 --- a/components/net/sf/briar/db/JdbcDatabase.java +++ b/components/net/sf/briar/db/JdbcDatabase.java @@ -1,6 +1,7 @@ package net.sf.briar.db; import java.io.File; +import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; @@ -297,8 +298,8 @@ abstract class JdbcDatabase implements Database<Connection> { protected void open(boolean resume, File dir, String driverClass) throws DbException, IOException { if(resume) { - if(!dir.exists()) throw new DbException(); - if(!dir.isDirectory()) throw new DbException(); + if(!dir.exists()) throw new FileNotFoundException(); + if(!dir.isDirectory()) throw new FileNotFoundException(); } else { if(dir.exists()) FileUtils.delete(dir); } @@ -388,14 +389,7 @@ abstract class JdbcDatabase implements Database<Connection> { public Connection startTransaction() throws DbException { Connection txn = null; synchronized(connections) { - // If the database has been closed, don't return - while(closed) { - try { - connections.wait(); - } catch(InterruptedException e) { - Thread.currentThread().interrupt(); - } - } + if(closed) throw new DbException(); txn = connections.poll(); } try {