diff options
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/MailReceiver.java')
-rw-r--r-- | gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/MailReceiver.java | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/MailReceiver.java b/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/MailReceiver.java index 506898569f..6deb240f7a 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/MailReceiver.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/MailReceiver.java @@ -16,11 +16,13 @@ package com.google.gerrit.server.mail.receive; import com.google.common.annotations.VisibleForTesting; import com.google.gerrit.extensions.events.LifecycleListener; +import com.google.gerrit.extensions.restapi.RestApiException; import com.google.gerrit.lifecycle.LifecycleModule; import com.google.gerrit.server.git.WorkQueue; import com.google.gerrit.server.mail.EmailSettings; -import com.google.gwtorm.server.OrmException; +import com.google.gerrit.server.update.UpdateException; import com.google.inject.Inject; +import java.io.IOException; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -86,7 +88,11 @@ public abstract class MailReceiver implements LifecycleListener { new TimerTask() { @Override public void run() { - MailReceiver.this.handleEmails(true); + try { + MailReceiver.this.handleEmails(true); + } catch (MailTransferException | IOException e) { + log.error("Error while fetching emails", e); + } } }, 0L, @@ -115,10 +121,12 @@ public abstract class MailReceiver implements LifecycleListener { * handleEmails will open a connection to the mail server, remove emails where deletion is * pending, read new email and close the connection. * - * @param async Determines if processing messages should happen asynchronous. + * @param async determines if processing messages should happen asynchronously + * @throws MailTransferException in case of a known transport failure + * @throws IOException in case of a low-level transport failure */ @VisibleForTesting - public abstract void handleEmails(boolean async); + public abstract void handleEmails(boolean async) throws MailTransferException, IOException; protected void dispatchMailProcessor(List<MailMessage> messages, boolean async) { for (MailMessage m : messages) { @@ -132,7 +140,7 @@ public abstract class MailReceiver implements LifecycleListener { try { mailProcessor.process(m); requestDeletion(m.id()); - } catch (OrmException e) { + } catch (RestApiException | UpdateException e) { log.error("Mail: Can't process message " + m.id() + " . Won't delete.", e); } }); @@ -141,7 +149,7 @@ public abstract class MailReceiver implements LifecycleListener { try { mailProcessor.process(m); requestDeletion(m.id()); - } catch (OrmException e) { + } catch (RestApiException | UpdateException e) { log.error("Mail: Can't process messages. Won't delete.", e); } } |