Getting group message headers requires acquiring rating lock.

This commit is contained in:
akwizgran
2013-03-15 16:52:56 +00:00
parent 61cf16b808
commit a94867907f
2 changed files with 18 additions and 13 deletions

View File

@@ -277,7 +277,7 @@ interface Database<T> {
/**
* Returns the headers of all messages in the given group.
* <p>
* Locking: message read.
* Locking: message read, rating read.
*/
Collection<GroupMessageHeader> getMessageHeaders(T txn, GroupId g)
throws DbException;

View File

@@ -952,6 +952,8 @@ DatabaseCleaner.Callback {
public Collection<GroupMessageHeader> getMessageHeaders(GroupId g)
throws DbException {
messageLock.readLock().lock();
try {
ratingLock.readLock().lock();
try {
subscriptionLock.readLock().lock();
try {
@@ -970,6 +972,9 @@ DatabaseCleaner.Callback {
} finally {
subscriptionLock.readLock().unlock();
}
} finally {
ratingLock.readLock().unlock();
}
} finally {
messageLock.readLock().unlock();
}