Fix eviction of change when not found on ReviewDb

Whenever the lookup of a change on ReviewDb throws NoSuchChangeException
the corresponding index needs to be removed on Lucene as well.

Change-Id: I44695e0551e78f3af66ed0f67d39662c0e85272f
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java
index 77baf15..ff6391a 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServlet.java
@@ -50,20 +50,23 @@
   void index(Change.Id id, Operation operation) throws IOException, OrmException {
     switch (operation) {
       case INDEX:
+        Change change = null;
         try (ReviewDb db = schemaFactory.open()) {
-          Change change = db.changes().get(id);
-          if (change == null) {
-            indexer.delete(id);
-            return;
+          change = db.changes().get(id);
+          if (change != null) {
+            indexer.index(db, change);
+            logger.debug("Change {} successfully indexed", id);
           }
-          indexer.index(db, change);
-          logger.debug("Change {} successfully indexed", id);
         } catch (Exception e) {
           if (!isCausedByNoSuchChangeException(e)) {
             throw e;
           }
           logger.debug("Change {} was deleted, aborting forwarded indexing the change.", id.get());
         }
+        if (change == null) {
+          indexer.delete(id);
+          logger.debug("Change {} not found, deleted from index", id);
+        }
         break;
       case DELETE:
         indexer.delete(id);
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java
index 15069b3..2e63fa7 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/IndexChangeRestApiServletTest.java
@@ -103,6 +103,7 @@
   public void indexerThrowsNoSuchChangeExceptionTryingToPostChange() throws Exception {
     doThrow(new NoSuchChangeException(id)).when(schemaFactory).open();
     indexRestApiServlet.doPost(req, rsp);
+    verify(indexer, times(1)).delete(id);
     verify(rsp).setStatus(SC_NO_CONTENT);
   }
 
@@ -111,6 +112,7 @@
     OrmException e = new OrmException("test", new NoSuchChangeException(id));
     doThrow(e).when(schemaFactory).open();
     indexRestApiServlet.doPost(req, rsp);
+    verify(indexer, times(1)).delete(id);
     verify(rsp).setStatus(SC_NO_CONTENT);
   }