diff --git a/config/alfresco/subsystems/imap/default/imap-server-context.xml b/config/alfresco/subsystems/imap/default/imap-server-context.xml
index 4462b36e15..c297afdf03 100644
--- a/config/alfresco/subsystems/imap/default/imap-server-context.xml
+++ b/config/alfresco/subsystems/imap/default/imap-server-context.xml
@@ -189,6 +189,9 @@
Message-Id
+
+ ${imap.server.shuffle.move.delete.delay}
+
diff --git a/config/alfresco/subsystems/imap/default/imap-server.properties b/config/alfresco/subsystems/imap/default/imap-server.properties
index baaae4d1f5..20a2594263 100644
--- a/config/alfresco/subsystems/imap/default/imap-server.properties
+++ b/config/alfresco/subsystems/imap/default/imap-server.properties
@@ -19,3 +19,5 @@ imap.server.imap.enabled=true
# javax.net.ssl.keyStorePassword=123456
imap.server.imaps.enabled=false
imap.server.imaps.port=993
+
+imap.server.shuffle.move.delete.delay=10000
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/imap/AbstractImapFolder.java b/source/java/org/alfresco/repo/imap/AbstractImapFolder.java
index 9cf9bf5897..997e05bdfc 100644
--- a/source/java/org/alfresco/repo/imap/AbstractImapFolder.java
+++ b/source/java/org/alfresco/repo/imap/AbstractImapFolder.java
@@ -30,6 +30,8 @@ import org.alfresco.repo.imap.exception.AlfrescoImapFolderException;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.service.ServiceRegistry;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import com.icegreen.greenmail.foedus.util.MsgRangeFilter;
import com.icegreen.greenmail.mail.MovingMessage;
@@ -48,6 +50,8 @@ public abstract class AbstractImapFolder implements MailFolder
{
private List listeners = new LinkedList();
+ protected Log logger = LogFactory.getLog(getClass());
+
protected ServiceRegistry serviceRegistry;
protected static int MAX_RETRIES = 20;
@@ -453,6 +457,12 @@ public abstract class AbstractImapFolder implements MailFolder
catch (Exception e)
{
Throwable cause = e.getCause();
+
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Exception is thrown : " + e + "\nCause : " + cause);
+ }
+
String message;
if (cause != null)
{
diff --git a/source/java/org/alfresco/repo/imap/AlfrescoImapFolder.java b/source/java/org/alfresco/repo/imap/AlfrescoImapFolder.java
index 0da958c09a..49f242a166 100644
--- a/source/java/org/alfresco/repo/imap/AlfrescoImapFolder.java
+++ b/source/java/org/alfresco/repo/imap/AlfrescoImapFolder.java
@@ -75,8 +75,6 @@ public class AlfrescoImapFolder extends AbstractImapFolder implements Serializab
{
private static final long serialVersionUID = -7223111284066976111L;
- private static Log logger = LogFactory.getLog(AlfrescoImapFolder.class);
-
/**
* Reference to the {@link FileInfo} object representing the folder.
*/
diff --git a/source/java/org/alfresco/repo/imap/ImapServiceImpl.java b/source/java/org/alfresco/repo/imap/ImapServiceImpl.java
index ce3338de71..38b040039f 100644
--- a/source/java/org/alfresco/repo/imap/ImapServiceImpl.java
+++ b/source/java/org/alfresco/repo/imap/ImapServiceImpl.java
@@ -165,6 +165,7 @@ public class ImapServiceImpl implements ImapService, OnRestoreNodePolicy, OnCrea
private final static Map qNameToFlag;
private final static Map flagToQname;
+ private long imapServerShuffleMoveDeleteDelay = 5000L;
private static final Timer deleteDelayTimer = new Timer();
private boolean imapServerEnabled = false;
@@ -352,6 +353,11 @@ public class ImapServiceImpl implements ImapService, OnRestoreNodePolicy, OnCrea
{
this.messageHeadersToPersist = headers;
}
+
+ public void setImapServerShuffleMoveDeleteDelay(long imapServerShuffleMoveDeleteDelay)
+ {
+ this.imapServerShuffleMoveDeleteDelay = imapServerShuffleMoveDeleteDelay;
+ }
public boolean getImapServerEnabled()
{
@@ -605,6 +611,11 @@ public class ImapServiceImpl implements ImapService, OnRestoreNodePolicy, OnCrea
// This is the transaction-aware service
fileFolderService.delete(nodeRef);
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Node has been async deleted " + nodeRef);
+ }
+
return null;
}
});
@@ -623,7 +634,11 @@ public class ImapServiceImpl implements ImapService, OnRestoreNodePolicy, OnCrea
}
};
// Schedule a real delete 5 seconds after the current time
- deleteDelayTimer.schedule(deleteDelayTask, 5000L);
+ if (logger.isDebugEnabled())
+ {
+ logger.debug("Delete timer is scheduled for " + nodeRef);
+ }
+ deleteDelayTimer.schedule(deleteDelayTask, imapServerShuffleMoveDeleteDelay);
}
}