From 18654f1514c93a906a60231fa6570c98f2147ab6 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 5 Aug 2011 13:39:49 +0100 Subject: [PATCH] It's not necessary to acquire all locks before closing the database, since Database.close() prevents new transactions from starting anyway. --- components/net/sf/briar/db/Database.java | 5 ++- .../db/ReadWriteLockDatabaseComponent.java | 32 +------------------ .../db/SynchronizedDatabaseComponent.java | 14 +------- 3 files changed, 4 insertions(+), 47 deletions(-) diff --git a/components/net/sf/briar/db/Database.java b/components/net/sf/briar/db/Database.java index 8752bc977..4f794672a 100644 --- a/components/net/sf/briar/db/Database.java +++ b/components/net/sf/briar/db/Database.java @@ -48,9 +48,8 @@ interface Database { void open(boolean resume) throws DbException; /** - * Waits for all open transactions to finish and closes the database. - *

- * Locking: all locks write. + * Prevents new transactions from starting, waits for all current + * transactions to finish, and closes the database. */ void close() throws DbException; diff --git a/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java b/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java index 8afa61d03..fbb44cd36 100644 --- a/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java +++ b/components/net/sf/briar/db/ReadWriteLockDatabaseComponent.java @@ -97,37 +97,7 @@ class ReadWriteLockDatabaseComponent extends DatabaseComponentImpl { public void close() throws DbException { cleaner.stopCleaning(); - contactLock.writeLock().lock(); - try { - messageLock.writeLock().lock(); - try { - messageStatusLock.writeLock().lock(); - try { - ratingLock.writeLock().lock(); - try { - subscriptionLock.writeLock().lock(); - try { - transportLock.writeLock().lock(); - try { - db.close(); - } finally { - transportLock.writeLock().unlock(); - } - } finally { - subscriptionLock.writeLock().unlock(); - } - } finally { - ratingLock.writeLock().unlock(); - } - } finally { - messageStatusLock.writeLock().unlock(); - } - } finally { - messageLock.writeLock().unlock(); - } - } finally { - contactLock.writeLock().unlock(); - } + db.close(); } public ContactId addContact(Map> transports) diff --git a/components/net/sf/briar/db/SynchronizedDatabaseComponent.java b/components/net/sf/briar/db/SynchronizedDatabaseComponent.java index 4db374998..d8680331b 100644 --- a/components/net/sf/briar/db/SynchronizedDatabaseComponent.java +++ b/components/net/sf/briar/db/SynchronizedDatabaseComponent.java @@ -81,19 +81,7 @@ class SynchronizedDatabaseComponent extends DatabaseComponentImpl { public void close() throws DbException { cleaner.stopCleaning(); - synchronized(contactLock) { - synchronized(messageLock) { - synchronized(messageStatusLock) { - synchronized(ratingLock) { - synchronized(subscriptionLock) { - synchronized(transportLock) { - db.close(); - } - } - } - } - } - } + db.close(); } public ContactId addContact(Map> transports)