From a6985bcfa83b5cc11d5bdb31ad762554937c7cd1 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Tue, 11 Jul 2017 10:10:17 -0400 Subject: [PATCH] Upgrade JGit to support improved BatchRefUpdates Now with atomic support for traditional on-disk repos, and finer-grained control over reflogs. RefUpdate.Result also grew some new error values, so extend existing switch statements to cover them. Change-Id: If685ed7f34d965e82cf11fcf59dd832394f2bb4a --- .../java/com/google/gerrit/gpg/PublicKeyStore.java | 2 ++ .../com/google/gerrit/gpg/server/DeleteGpgKey.java | 2 ++ .../com/google/gerrit/gpg/server/PostGpgKeys.java | 2 ++ .../google/gerrit/gpg/PublicKeyCheckerTest.java | 2 ++ .../pgm/init/api/VersionedMetaDataOnInit.java | 2 ++ .../google/gerrit/server/StarredChangesUtil.java | 4 ++++ .../account/externalids/ExternalIdsUpdate.java | 2 ++ .../gerrit/server/change/ConsistencyChecker.java | 2 ++ .../google/gerrit/server/edit/ChangeEditUtil.java | 2 ++ .../gerrit/server/git/VersionedMetaData.java | 4 ++++ .../google/gerrit/server/project/CreateBranch.java | 2 ++ .../gerrit/server/project/CreateProject.java | 2 ++ .../google/gerrit/server/project/DeleteRef.java | 2 ++ .../com/google/gerrit/server/project/SetHead.java | 2 ++ lib/jgit/jgit.bzl | 14 +++++++------- 15 files changed, 39 insertions(+), 7 deletions(-) diff --git a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/PublicKeyStore.java b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/PublicKeyStore.java index 8ab5fbd33e..19d503fba1 100644 --- a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/PublicKeyStore.java +++ b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/PublicKeyStore.java @@ -338,6 +338,8 @@ public class PublicKeyStore implements AutoCloseable { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: break; } diff --git a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/DeleteGpgKey.java b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/DeleteGpgKey.java index 779d5d4a4d..baf5a58f06 100644 --- a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/DeleteGpgKey.java +++ b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/DeleteGpgKey.java @@ -88,6 +88,8 @@ public class DeleteGpgKey implements RestModifyView { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new ResourceConflictException("Failed to delete public key: " + saveResult); } diff --git a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java index 41fcd042ae..7d1aceedf6 100644 --- a/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java +++ b/gerrit-gpg/src/main/java/com/google/gerrit/gpg/server/PostGpgKeys.java @@ -236,6 +236,8 @@ public class PostGpgKeys implements RestModifyView { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: // TODO(dborowitz): Backoff and retry on LOCK_FAILURE. throw new ResourceConflictException("Failed to save public keys: " + saveResult); diff --git a/gerrit-gpg/src/test/java/com/google/gerrit/gpg/PublicKeyCheckerTest.java b/gerrit-gpg/src/test/java/com/google/gerrit/gpg/PublicKeyCheckerTest.java index 39e2cb45ea..04ed1de73c 100644 --- a/gerrit-gpg/src/test/java/com/google/gerrit/gpg/PublicKeyCheckerTest.java +++ b/gerrit-gpg/src/test/java/com/google/gerrit/gpg/PublicKeyCheckerTest.java @@ -323,6 +323,8 @@ public class PublicKeyCheckerTest { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new AssertionError(result); } diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/VersionedMetaDataOnInit.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/VersionedMetaDataOnInit.java index fd825b8ebd..c34b423b2d 100644 --- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/VersionedMetaDataOnInit.java +++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/api/VersionedMetaDataOnInit.java @@ -128,6 +128,8 @@ public abstract class VersionedMetaDataOnInit extends VersionedMetaData { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new IOException( "Failed to update " + getRefName() + " of " + project + ": " + r.name()); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/StarredChangesUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/StarredChangesUtil.java index 2199d3a270..c1f0989d78 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/StarredChangesUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/StarredChangesUtil.java @@ -412,6 +412,8 @@ public class StarredChangesUtil { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new OrmException( String.format("Update star labels on ref %s failed: %s", refName, result.name())); @@ -439,6 +441,8 @@ public class StarredChangesUtil { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new OrmException( String.format("Delete star ref %s failed: %s", refName, result.name())); diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/account/externalids/ExternalIdsUpdate.java b/gerrit-server/src/main/java/com/google/gerrit/server/account/externalids/ExternalIdsUpdate.java index 2985504f44..46f27f2c47 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/account/externalids/ExternalIdsUpdate.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/account/externalids/ExternalIdsUpdate.java @@ -757,6 +757,8 @@ public class ExternalIdsUpdate { case NOT_ATTEMPTED: case REJECTED: case REJECTED_CURRENT_BRANCH: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new IOException("Updating external IDs failed with " + res); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java index 9fcb13df3a..56f637e9bd 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/ConsistencyChecker.java @@ -616,6 +616,8 @@ public class ConsistencyChecker { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: p.status = Status.FIX_FAILED; p.outcome = "Failed to update patch set ref: " + result; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java index e51312bb32..0d84767308 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/edit/ChangeEditUtil.java @@ -285,6 +285,8 @@ public class ChangeEditUtil { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new IOException(String.format("Failed to delete ref %s: %s", refName, result)); } diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java index 99661b3aa0..c7b64c04c3 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/VersionedMetaData.java @@ -359,6 +359,8 @@ public abstract class VersionedMetaData { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new IOException( "Cannot delete " @@ -444,6 +446,8 @@ public abstract class VersionedMetaData { case REJECTED: case REJECTED_CURRENT_BRANCH: case RENAMED: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new IOException( "Cannot update " diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java index 0c15063f38..4e2e327091 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/project/CreateBranch.java @@ -163,6 +163,8 @@ public class CreateBranch implements RestModifyView { case NOT_ATTEMPTED: case REJECTED: case REJECTED_CURRENT_BRANCH: + case REJECTED_MISSING_OBJECT: + case REJECTED_OTHER_REASON: default: throw new IOException("Setting HEAD failed with " + res); } diff --git a/lib/jgit/jgit.bzl b/lib/jgit/jgit.bzl index fd10fbba96..b6f8d99c8e 100644 --- a/lib/jgit/jgit.bzl +++ b/lib/jgit/jgit.bzl @@ -1,12 +1,12 @@ load("//tools/bzl:maven_jar.bzl", "GERRIT", "MAVEN_LOCAL", "MAVEN_CENTRAL", "maven_jar") -_JGIT_VERS = "4.8.0.201706111038-r" +_JGIT_VERS = "4.8.0.201706111038-r.71-g45da0fc6f" _DOC_VERS = _JGIT_VERS # Set to _JGIT_VERS unless using a snapshot JGIT_DOC_URL = "http://download.eclipse.org/jgit/site/" + _DOC_VERS + "/apidocs" -_JGIT_REPO = MAVEN_CENTRAL # Leave here even if set to MAVEN_CENTRAL. +_JGIT_REPO = GERRIT # Leave here even if set to MAVEN_CENTRAL. # set this to use a local version. # "/home//projects/jgit" @@ -26,28 +26,28 @@ def jgit_maven_repos(): name = "jgit_lib", artifact = "org.eclipse.jgit:org.eclipse.jgit:" + _JGIT_VERS, repository = _JGIT_REPO, - sha1 = "f0978a9e868accf9a405d9387bec091a99d87633", - src_sha1 = "93cefbf1d73f1179b40419a3898c53a64e52aa93", + sha1 = "7248b0a7d7f76dd4f7e55ed081b981cf4d8aa26e", + src_sha1 = "6ed203c95decc3f795f44ca17149e7554b92212d", unsign = True, ) maven_jar( name = "jgit_servlet", artifact = "org.eclipse.jgit:org.eclipse.jgit.http.server:" + _JGIT_VERS, repository = _JGIT_REPO, - sha1 = "3c099afdc063bad438a3b87eea643e9722a07de8", + sha1 = "f21fc0c651cc9475db92061432d919ba28b7a7ad", unsign = True, ) maven_jar( name = "jgit_archive", artifact = "org.eclipse.jgit:org.eclipse.jgit.archive:" + _JGIT_VERS, repository = _JGIT_REPO, - sha1 = "1350a5cf1fad91dd33b66f9fb804dc8e68270890", + sha1 = "0f179321f527840dfc8ca79894eba2f6b255dbab", ) maven_jar( name = "jgit_junit", artifact = "org.eclipse.jgit:org.eclipse.jgit.junit:" + _JGIT_VERS, repository = _JGIT_REPO, - sha1 = "4f45f8f6714df649dbad8c1b1baf68b9510b5047", + sha1 = "7e5225064cf14115bddaae9448246c83c89f78ad", unsign = True, )