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); } }