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 {