summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/mail/receive/MailReceiver.java
diff options
context:
space:
mode:
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.java20
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);
}
}