Author: norman
Date: Fri Feb 4 07:03:13 2011
New Revision: 1067101
URL: http://svn.apache.org/viewvc?rev=1067101&view=rev
Log:
Fix Race-condition in MailboxEventAnalyzer. See IMAP-254
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
Modified:
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java?rev=1067101&r1=1067100&r2=1067101&view=diff
==============================================================================
---
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
(original)
+++
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
Fri Feb 4 07:03:13 2011
@@ -62,7 +62,7 @@ public class MailboxEventAnalyser implem
*
* @return name
*/
- public MailboxPath getMailboxPath() {
+ public synchronized MailboxPath getMailboxPath() {
return mailboxPath;
}
@@ -71,7 +71,7 @@ public class MailboxEventAnalyser implem
*
* @param mailboxName
*/
- public void setMailboxPath(MailboxPath mailboxPath) {
+ public synchronized void setMailboxPath(MailboxPath mailboxPath) {
this.mailboxPath = mailboxPath;
}
@@ -96,11 +96,15 @@ public class MailboxEventAnalyser implem
if (interestingFlags(updated)
&& (sessionId != eventSessionId ||
!silentFlagChanges)) {
final Long uidObject = uid;
- flagUpdateUids.add(uidObject);
+ synchronized (flagUpdateUids) {
+ flagUpdateUids.add(uidObject);
+ }
}
} else if (messageEvent instanceof Expunged) {
final Long uidObject = uid;
- expungedUids.add(uidObject);
+ synchronized (expungedUids) {
+ expungedUids.add(uidObject);
+ }
}
} else if (event instanceof MailboxDeletion) {
if (eventSessionId != sessionId) {
@@ -132,7 +136,7 @@ public class MailboxEventAnalyser implem
/**
* Reset the analyzer
*/
- public void reset() {
+ public synchronized void reset() {
sizeChanged = false;
flagUpdateUids.clear();
expungedUids.clear();
@@ -186,7 +190,9 @@ public class MailboxEventAnalyser implem
*/
public Collection<Long> flagUpdateUids() {
- return Collections.unmodifiableSet(flagUpdateUids);
+ synchronized (flagUpdateUids) {
+ return Collections.unmodifiableSet(flagUpdateUids);
+ }
}
/**
@@ -195,7 +201,9 @@ public class MailboxEventAnalyser implem
* @return uids
*/
public Collection<Long> expungedUids() {
- return Collections.unmodifiableSet(expungedUids);
+ synchronized (expungedUids) {
+ return Collections.unmodifiableSet(expungedUids);
+ }
}
/**
@@ -204,7 +212,9 @@ public class MailboxEventAnalyser implem
* @return hasUids
*/
public boolean hasExpungedUids() {
- return !expungedUids.isEmpty();
+ synchronized (expungedUids) {
+ return !expungedUids.isEmpty();
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]