diff --git a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServlet.java b/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServlet.java
index 0a7eb2c..b066628 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServlet.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServlet.java
@@ -70,7 +70,7 @@
   }
 
   private void process(HttpServletRequest req, HttpServletResponse rsp,
-      String operation) throws IOException {
+      String operation) {
     rsp.setContentType("text/plain");
     rsp.setCharacterEncoding("UTF-8");
     String path = req.getPathInfo();
@@ -81,17 +81,26 @@
       index(id, operation);
       rsp.setStatus(SC_NO_CONTENT);
     } catch (IOException e) {
-      rsp.sendError(SC_CONFLICT, e.getMessage());
+      sendError(rsp,SC_CONFLICT, e.getMessage());
       logger.error("Unable to update index", e);
     } catch (OrmException e) {
       String msg = "Error trying to find a change \n";
-      rsp.sendError(SC_NOT_FOUND, msg);
+      sendError(rsp,SC_NOT_FOUND, msg);
       logger.debug(msg, e);
     } finally {
       Context.unsetForwardedEvent();
     }
   }
 
+  private static void sendError(HttpServletResponse rsp, int statusCode,
+      String message) {
+    try {
+      rsp.sendError(statusCode, message);
+    } catch (IOException e) {
+      logger.error("Failed to send error messsage: " + e.getMessage(), e);
+    }
+  }
+
   private void index(Change.Id id, String operation)
       throws IOException, OrmException {
     AtomicInteger changeIdLock = getAndIncrementChangeIdLock(id);
diff --git a/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServletTest.java b/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServletTest.java
index 48c8e2d..3522e77 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServletTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/syncindex/SyncIndexRestApiServletTest.java
@@ -14,6 +14,7 @@
 
 package com.ericsson.gerrit.plugins.syncindex;
 
+import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.EasyMock.expectLastCall;
 
@@ -110,6 +111,14 @@
     verifyDelete();
   }
 
+  @Test
+  public void sendErrorThrowsIOException() throws Exception {
+    rsp.sendError(SC_NOT_FOUND, "Error trying to find a change \n");
+    expectLastCall().andThrow(new IOException("someError"));
+    setupPostMocks(CHANGE_EXISTS, THROW_ORM_EXCEPTION);
+    verifyPost();
+  }
+
   private void setupPostMocks(boolean changeExist) throws Exception {
     setupPostMocks(changeExist, DO_NOT_THROW_ORM_EXCEPTION,
         DO_NOT_THROW_IO_EXCEPTION);
