summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Borowitz <dborowitz@google.com>2015-06-05 12:40:51 -0700
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2015-06-06 02:22:48 +0000
commit8d73b76bd911652170578196b2e695b507faea3e (patch)
tree0340a1c61bd5dd3eeade8cd30ec221ef59e68e74
parent8ce1a4e7e67ce2b19cef876b5db1faab28640164 (diff)
ChangeKindCacheImpl: Assume REWORK if we hit LargeObjectException
Change-Id: I0fd752fdc7e2c35987a94afe83fc524c240d20db (cherry picked from commit 75f39623296d6efdffb5adf4b948ed8574651586)
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java
index 23039aa486..a2b78aaebc 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ChangeKindCacheImpl.java
@@ -38,6 +38,7 @@ import com.google.inject.Module;
import com.google.inject.Singleton;
import com.google.inject.name.Named;
+import org.eclipse.jgit.errors.LargeObjectException;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.ObjectId;
import org.eclipse.jgit.lib.Repository;
@@ -218,12 +219,16 @@ public class ChangeKindCacheImpl implements ChangeKindCache {
ThreeWayMerger merger = MergeUtil.newThreeWayMerger(
key.repo, MergeUtil.createDryRunInserter(key.repo), key.strategyName);
merger.setBase(prior.getParent(0));
- if (merger.merge(next.getParent(0), prior)
- && merger.getResultTreeId().equals(next.getTree())) {
- return ChangeKind.TRIVIAL_REBASE;
- } else {
- return ChangeKind.REWORK;
+ try {
+ if (merger.merge(next.getParent(0), prior)
+ && merger.getResultTreeId().equals(next.getTree())) {
+ return ChangeKind.TRIVIAL_REBASE;
+ }
+ } catch (LargeObjectException e) {
+ // Some object is too large for the merge attempt to succeed. Assume
+ // it was a rework.
}
+ return ChangeKind.REWORK;
} finally {
key.repo = null;
}