Author: wstrzalka
Date: Tue Mar 22 19:08:12 2011
New Revision: 1084299
URL: http://svn.apache.org/viewvc?rev=1084299&view=rev
Log:
Unsolicitated EXISTS potential race condition fix. See IMAP-268
Modified:
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java
Modified:
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java?rev=1084299&r1=1084298&r2=1084299&view=diff
==============================================================================
---
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
(original)
+++
james/imap/trunk/api/src/main/java/org/apache/james/imap/api/process/SelectedMailbox.java
Tue Mar 22 19:08:12 2011
@@ -81,6 +81,13 @@ public interface SelectedMailbox {
* @return recentCount
*/
public int recentCount();
+
+ /**
+ * Return the count of all existing uids
+ *
+ * @return existsCount
+ */
+ public long existsCount();
/**
* Return the path of the selected Mailbox
@@ -165,4 +172,5 @@ public interface SelectedMailbox {
* @return lastUid
*/
public long getLastUid();
+
}
\ No newline at end of file
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java?rev=1084299&r1=1084298&r2=1084299&view=diff
==============================================================================
---
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
(original)
+++
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractMailboxProcessor.java
Tue Mar 22 19:08:12 2011
@@ -219,16 +219,10 @@ abstract public class AbstractMailboxPro
private void addExistsResponses(final ImapSession session, final
SelectedMailbox selected,
final ImapProcessor.Responder responder) {
- try {
- final MessageManager mailbox = getMailbox(session, selected);
- final MailboxSession mailboxSession =
ImapSessionUtils.getMailboxSession(session);
- final long messageCount = mailbox.getMessageCount(mailboxSession);
- // TODO: use factory
- final ExistsResponse response = new ExistsResponse(messageCount);
- responder.respond(response);
- } catch (MailboxException e) {
- handleResponseException(responder, e,
HumanReadableText.FAILURE_EXISTS_COUNT, session);
- }
+ final long existsCount = selected.existsCount();
+ // TODO: use factory
+ final ExistsResponse response = new ExistsResponse(existsCount);
+ responder.respond(response);
}
private void handleResponseException(final ImapProcessor.Responder
responder,
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java?rev=1084299&r1=1084298&r2=1084299&view=diff
==============================================================================
---
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
(original)
+++
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
Tue Mar 22 19:08:12 2011
@@ -138,6 +138,10 @@ public class SelectedMailboxImpl impleme
checkExpungedRecents();
return recentUids.size();
}
+
+ public long existsCount() {
+ return converter.getCount();
+ }
/* (non-Javadoc)
* @see org.apache.james.imap.api.process.SelectedMailbox#getPath()
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java?rev=1084299&r1=1084298&r2=1084299&view=diff
==============================================================================
---
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java
(original)
+++
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/UidToMsnConverter.java
Tue Mar 22 19:08:12 2011
@@ -189,4 +189,11 @@ public class UidToMsnConverter implement
public synchronized boolean isClosed() {
return closed;
}
+
+ /**
+ * @see SelectedMailbox#existsCount()
+ */
+ public synchronized long getCount() {
+ return uidToMsn.size();
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]