diff options
author | Dave Borowitz <dborowitz@google.com> | 2015-06-05 12:40:51 -0700 |
---|---|---|
committer | David Pursehouse <david.pursehouse@sonymobile.com> | 2015-06-06 02:22:48 +0000 |
commit | 8d73b76bd911652170578196b2e695b507faea3e (patch) | |
tree | 0340a1c61bd5dd3eeade8cd30ec221ef59e68e74 | |
parent | 8ce1a4e7e67ce2b19cef876b5db1faab28640164 (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.java | 15 |
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; } |