diff --git a/components/net/sf/briar/db/H2Database.java b/components/net/sf/briar/db/H2Database.java index c28fc615a..ab51d7cc3 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 c9d40d7d5..9018ddb7d 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 { 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 { 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 {