Merge branch 'stable-3.4' into stable-3.5 * stable-3.4: Check for existence of change's target SHA1 for reindexing Remove `@NoHttpd` from IT tests that interact with Gerrit Rest API Also, disable IndexEventHandlerTest as it is known for causing stack overflow errors. It can be re-enabled in 3.9 since change I3276ecf9 removes the executor service altogether. Change-Id: I39ddd2bb9d1acb6611ddaf6a2b776ac36620e290
diff --git a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java index 1a2ebf7..a8ba722 100644 --- a/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java +++ b/src/main/java/com/ericsson/gerrit/plugins/highavailability/index/ChangeCheckerImpl.java
@@ -31,6 +31,7 @@ import java.sql.Timestamp; import java.util.Objects; import java.util.Optional; +import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; @@ -107,9 +108,9 @@ return (computedChangeTs.get() > indexEvent.eventCreatedOn) || (computedChangeTs.get() == indexEvent.eventCreatedOn) && (Objects.isNull(indexEvent.targetSha) - || Objects.equals(getBranchTargetSha(), indexEvent.targetSha)) - && (Objects.isNull(indexEvent.metaSha) - || Objects.equals(getMetaSha(repo), indexEvent.metaSha)); + || repositoryHas(repo, indexEvent.targetSha)) + && (Objects.isNull(indexEvent.targetSha) + || repositoryHas(repo, indexEvent.metaSha)); } } return true; @@ -161,6 +162,16 @@ } } + private boolean repositoryHas(Repository repo, String sha1ToCheck) { + try { + return repo.parseCommit(ObjectId.fromString(sha1ToCheck)) != null; + } catch (IOException e) { + log.atWarning().withCause(e).log( + "Unable to find SHA1 %s for change %s", sha1ToCheck, changeId); + return false; + } + } + private Optional<Long> computeLastChangeTs() { return getChangeNotes().map(this::getTsFromChangeAndDraftComments); }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/ProjectListIT.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/ProjectListIT.java index 98cdce5..36c775c 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/ProjectListIT.java +++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/cache/ProjectListIT.java
@@ -26,7 +26,6 @@ import com.github.tomakehurst.wiremock.junit.WireMockRule; import com.google.gerrit.acceptance.LightweightPluginDaemonTest; -import com.google.gerrit.acceptance.NoHttpd; import com.google.gerrit.acceptance.TestPlugin; import com.google.gerrit.acceptance.UseLocalDisk; import com.google.gerrit.acceptance.config.GlobalPluginConfig; @@ -37,7 +36,6 @@ import org.junit.Rule; import org.junit.Test; -@NoHttpd @TestPlugin( name = "high-availability", sysModule = "com.ericsson.gerrit.plugins.highavailability.Module",
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/ProjectListRestApiServletIT.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/ProjectListRestApiServletIT.java index 11ae77d..e838cb3 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/ProjectListRestApiServletIT.java +++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/ProjectListRestApiServletIT.java
@@ -17,14 +17,12 @@ import static com.google.common.truth.Truth.assertThat; import com.google.gerrit.acceptance.LightweightPluginDaemonTest; -import com.google.gerrit.acceptance.NoHttpd; import com.google.gerrit.acceptance.TestPlugin; import com.google.gerrit.acceptance.UseLocalDisk; import com.google.gerrit.entities.Project; import com.google.gerrit.extensions.restapi.Url; import org.junit.Test; -@NoHttpd @TestPlugin( name = "high-availability", sysModule = "com.ericsson.gerrit.plugins.highavailability.Module",
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderServletModuleIT.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderServletModuleIT.java index 0092902..2406443 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderServletModuleIT.java +++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/forwarder/rest/RestForwarderServletModuleIT.java
@@ -17,14 +17,12 @@ import com.ericsson.gerrit.plugins.highavailability.forwarder.TestEvent; import com.google.common.base.Joiner; import com.google.gerrit.acceptance.LightweightPluginDaemonTest; -import com.google.gerrit.acceptance.NoHttpd; import com.google.gerrit.acceptance.TestPlugin; import com.google.gerrit.acceptance.UseLocalDisk; import com.google.gerrit.server.events.Event; import javax.servlet.http.HttpServletResponse; import org.junit.Test; -@NoHttpd @TestPlugin( name = "high-availability", sysModule = "com.ericsson.gerrit.plugins.highavailability.Module",
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java index 578dc17..4793678 100644 --- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java +++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/index/IndexEventHandlerTest.java
@@ -60,6 +60,7 @@ import java.util.function.Consumer; import java.util.function.Supplier; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -67,6 +68,7 @@ import org.mockito.junit.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) +@Ignore public class IndexEventHandlerTest { private static final String PLUGIN_NAME = "high-availability"; private static final String PROJECT_NAME = "test/project";