Update JGit to latest 4.5.x release

JGit releases older than 4.5 are known to be prone to issues
with MissingObjectExceptions.

Since this is a major JGit version upgrade some code needs to be adapted
to changed JGit API.

Change-Id: Ia9099a5ac8fcbaf873e3354b5a47d2178c97444a
Signed-off-by: Edwin Kempin <ekempin@google.com>
This commit is contained in:
Edwin Kempin
2018-12-27 08:49:27 +01:00
parent 466ff56468
commit 4a3c2d14ca
45 changed files with 112 additions and 113 deletions

View File

@@ -184,7 +184,7 @@ public class GitUtil {
return ChangeIdUtil.computeChangeId(null, null, i, i, msg);
}
} finally {
rw.release();
rw.close();
}
}

View File

@@ -15,13 +15,18 @@
package com.google.gerrit.acceptance.git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
import org.junit.Before;
import java.io.IOException;
import java.net.URISyntaxException;
public class HttpPushForReviewIT extends AbstractPushForReview {
@Before
public void selectHttpUrl() throws GitAPIException, IOException {
CredentialsProvider.setDefault(new UsernamePasswordCredentialsProvider(
admin.username, admin.httpPassword));
selectProtocol(Protocol.HTTP);
}
}

View File

@@ -292,7 +292,7 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
assertEquals(admin.email, c.getAuthorIdent().getEmailAddress());
assertEquals(admin.email, c.getCommitterIdent().getEmailAddress());
} finally {
rw.release();
rw.close();
}
} finally {
r.close();
@@ -310,7 +310,7 @@ public class SubmitOnPushIT extends AbstractDaemonTest {
assertEquals(admin.email, c.getAuthorIdent().getEmailAddress());
assertEquals(serverIdent.getEmailAddress(), c.getCommitterIdent().getEmailAddress());
} finally {
rw.release();
rw.close();
}
} finally {
r.close();

View File

@@ -265,7 +265,7 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
repo.getRef("refs/heads/master").getObjectId()));
return Lists.newArrayList(rw);
} finally {
rw.release();
rw.close();
}
} finally {
repo.close();
@@ -278,7 +278,7 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
try {
return rw.parseCommit(repo.getRef(name).getObjectId());
} finally {
rw.release();
rw.close();
}
} finally {
repo.close();
@@ -300,7 +300,7 @@ public abstract class AbstractSubmit extends AbstractDaemonTest {
ObjectId newTreeId = repo.resolve("refs/heads/master^{tree}");
return getLatestDiff(repo, oldTreeId, newTreeId);
} finally {
rw.release();
rw.close();
}
} finally {
repo.close();

View File

@@ -232,8 +232,8 @@ public class CreateProjectIT extends AbstractDaemonTest {
tw.reset();
}
} finally {
tw.release();
rw.release();
tw.close();
rw.close();
repo.close();
}
}

View File

@@ -209,7 +209,7 @@ public class CatServlet extends HttpServlet {
return;
}
} finally {
reader.release();
reader.close();
}
} catch (IOException e) {
getServletContext().log("Cannot read repository", e);

View File

@@ -136,15 +136,15 @@ public class AllProjectsConfig extends VersionedMetaData {
updateRef(repo, ident, newRevision, "commit: " + msg);
revision = newRevision;
} finally {
rw.release();
rw.close();
}
} finally {
if (inserter != null) {
inserter.release();
inserter.close();
inserter = null;
}
if (reader != null) {
reader.release();
reader.close();
reader = null;
}
}

View File

@@ -280,7 +280,7 @@ public class ChangeUtil {
oi.flush();
revertCommit = revWalk.parseCommit(id);
} finally {
oi.release();
oi.close();
}
RefControl refControl = ctl.getRefControl();
@@ -344,7 +344,7 @@ public class ChangeUtil {
return change.getId();
} finally {
revWalk.release();
revWalk.close();
}
} finally {
git.close();
@@ -403,7 +403,7 @@ public class ChangeUtil {
oi.flush();
newCommit = revWalk.parseCommit(id);
} finally {
oi.release();
oi.close();
}
PatchSet.Id id = nextPatchSetId(git, change.currentPatchSetId());
@@ -426,7 +426,7 @@ public class ChangeUtil {
return change.getId();
} finally {
revWalk.release();
revWalk.close();
}
} finally {
git.close();

View File

@@ -144,7 +144,7 @@ public class ChangeKindCache {
// having the same tree as would exist when the prior commit is
// cherry-picked onto the next commit's new first parent.
ThreeWayMerger merger = MergeUtil.newThreeWayMerger(
key.repo, MergeUtil.createDryRunInserter(), key.strategyName);
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())) {
@@ -154,7 +154,7 @@ public class ChangeKindCache {
}
} finally {
key.repo = null;
walk.release();
walk.close();
}
}

View File

@@ -146,7 +146,7 @@ public class CherryPickChange {
mergeUtilFactory.create(projectState).createCherryPickFromCommit(git, oi, mergeTip,
commitToCherryPick, committerIdent, commitMessage, revWalk);
} finally {
oi.release();
oi.close();
}
if (cherryPickCommit == null) {
@@ -184,7 +184,7 @@ public class CherryPickChange {
cherryPickCommit, refControl);
}
} finally {
revWalk.release();
revWalk.close();
}
} finally {
git.close();

View File

@@ -267,7 +267,7 @@ class Files implements ChildCollection<RevisionResource, FileResource> {
db.get().accountPatchReviews().insert(inserts);
return pathList;
} finally {
reader.release();
reader.close();
}
} finally {
git.close();

View File

@@ -79,7 +79,7 @@ class GetArchive implements RestReadView<RevisionResource> {
@Override
public void close() throws IOException {
rw.release();
rw.close();
repo.close();
}
};
@@ -92,7 +92,7 @@ class GetArchive implements RestReadView<RevisionResource> {
return bin;
} finally {
if (close) {
rw.release();
rw.close();
}
}
} finally {

View File

@@ -71,10 +71,10 @@ public class GetContent implements RestReadView<FileResource> {
};
return result.setContentLength(object.getSize()).base64();
} finally {
tw.release();
tw.close();
}
} finally {
rw.release();
rw.close();
}
} finally {
repo.close();

View File

@@ -102,7 +102,7 @@ public class GetPatch implements RestReadView<RevisionResource> {
@Override
public void close() throws IOException {
rw.release();
rw.close();
repo.close();
}
};
@@ -123,7 +123,7 @@ public class GetPatch implements RestReadView<RevisionResource> {
return bin;
} finally {
if (close) {
rw.release();
rw.close();
}
}
} finally {

View File

@@ -81,7 +81,7 @@ public class GetRelated implements RestReadView<RevisionResource> {
info.changes = walk(rsrc, rw, ref);
return info;
} finally {
rw.release();
rw.close();
}
} finally {
git.close();

View File

@@ -68,7 +68,7 @@ class IncludedIn implements RestReadView<ChangeResource> {
}
return new IncludedInInfo(IncludedInResolver.resolve(r, rw, rev));
} finally {
rw.release();
rw.close();
}
} finally {
r.close();

View File

@@ -201,7 +201,7 @@ public class Mergeable implements RestReadView<RevisionResource> {
"Cannot merge test change %d", change.getId().get()), e);
return false;
} finally {
rw.release();
rw.close();
}
}

View File

@@ -139,10 +139,10 @@ public class RebaseChange {
throw new IOException(e.getMessage());
} finally {
if (inserter != null) {
inserter.release();
inserter.close();
}
if (rw != null) {
rw.release();
rw.close();
}
if (git != null) {
git.close();

View File

@@ -70,11 +70,11 @@ public class BanCommit {
RevCommit map = rw.parseCommit(ref.getObjectId());
return NoteMap.read(rw.getObjectReader(), map);
} finally {
rw.release();
rw.close();
}
} catch (IOException badMap) {
throw new IOException("Cannot load "
+ RefNames.REFS_REJECT_COMMITS, badMap);
throw new IOException("Cannot load " + RefNames.REFS_REJECT_COMMITS,
badMap);
}
}
@@ -139,8 +139,8 @@ public class BanCommit {
}
return result;
} finally {
revWalk.release();
inserter.release();
revWalk.close();
inserter.close();
}
} finally {
repo.close();

View File

@@ -297,10 +297,10 @@ public class MergeOp {
throw new MergeException("Cannot query the database", e);
} finally {
if (inserter != null) {
inserter.release();
inserter.close();
}
if (rw != null) {
rw.release();
rw.close();
}
if (repo != null) {
repo.close();

View File

@@ -394,7 +394,7 @@ public class MergeUtil {
return false;
}
final ThreeWayMerger m = newThreeWayMerger(repo, createDryRunInserter());
final ThreeWayMerger m = newThreeWayMerger(repo, createDryRunInserter(repo));
try {
return m.merge(new AnyObjectId[] {mergeTip, toMerge});
} catch (NoMergeBaseException e) {
@@ -441,7 +441,7 @@ public class MergeUtil {
//
try {
final ThreeWayMerger m =
newThreeWayMerger(repo, createDryRunInserter());
newThreeWayMerger(repo, createDryRunInserter(repo));
m.setBase(toMerge.getParent(0));
return m.merge(mergeTip, toMerge);
} catch (IOException e) {
@@ -468,28 +468,21 @@ public class MergeUtil {
}
}
public static ObjectInserter createDryRunInserter() {
return new ObjectInserter() {
public static ObjectInserter createDryRunInserter(Repository db) {
final ObjectInserter delegate = db.newObjectInserter();
return new ObjectInserter.Filter() {
@Override
public ObjectId insert(int objectType, long length, InputStream in)
throws IOException {
return idFor(objectType, length, in);
protected ObjectInserter delegate() {
return delegate;
}
@Override
public PackParser newPackParser(InputStream in) throws IOException {
throw new UnsupportedOperationException();
}
@Override
public void flush() throws IOException {
// Do nothing.
}
@Override
public void release() {
// Do nothing.
}
};
}
@@ -668,7 +661,7 @@ public class MergeUtil {
}
@Override
public void release() {
public void close() {
}
});
return (ThreeWayMerger) m;

View File

@@ -153,8 +153,8 @@ public class NotesBranchUtil {
}
updateRef(notesBranch);
} finally {
revWalk.release();
reader.release();
revWalk.close();
reader.close();
}
}

View File

@@ -380,7 +380,7 @@ public class SubmoduleOp {
+ subscriber.get(), e);
} finally {
if (recRw != null) {
recRw.release();
recRw.close();
}
if (pdb != null) {
pdb.close();
@@ -400,7 +400,7 @@ public class SubmoduleOp {
b.finish();
return dc;
} finally {
rw.release();
rw.close();
}
}

View File

@@ -147,7 +147,7 @@ class TagSet {
}
} finally {
if (rw != null) {
rw.release();
rw.close();
}
}
}
@@ -189,7 +189,7 @@ class TagSet {
} catch (IOException e) {
log.warn("Error building tags for repository " + projectName, e);
} finally {
rw.release();
rw.close();
}
}

View File

@@ -117,7 +117,7 @@ public abstract class VersionedMetaData {
revision = id != null ? new RevWalk(reader).parseCommit(id) : null;
onLoad();
} finally {
reader.release();
reader.close();
reader = null;
}
}
@@ -299,12 +299,12 @@ public abstract class VersionedMetaData {
newTree = null;
if (inserter != null) {
inserter.release();
inserter.close();
inserter = null;
}
if (reader != null) {
reader.release();
reader.close();
reader = null;
}
}

View File

@@ -310,7 +310,7 @@ public class ChangeBatchIndexer {
getPathsAndIndex(id);
}
} finally {
walk.release();
walk.close();
}
return null;
}
@@ -344,7 +344,7 @@ public class ChangeBatchIndexer {
}
}
} finally {
df.release();
df.close();
}
} catch (Exception e) {
fail("Failed to index commit " + b.name(), false, e);
@@ -389,7 +389,7 @@ public class ChangeBatchIndexer {
oi.flush();
return id;
} finally {
oi.release();
oi.close();
}
}

View File

@@ -407,7 +407,7 @@ public abstract class ChangeEmail extends NotificationEmail {
log.error("Cannot format patch", e);
return "";
} finally {
fmt.release();
fmt.close();
git.close();
}
}

View File

@@ -94,7 +94,7 @@ public class PatchSetNotificationSender {
commit = revWalk.parseCommit(ObjectId.fromString(
updatedPatchSet.getRevision().get()));
} finally {
revWalk.release();
revWalk.close();
}
final PatchSetInfo info = patchSetInfoFactory.get(commit, updatedPatchSet.getId());
final List<FooterLine> footerLines = commit.getFooterLines();

View File

@@ -435,7 +435,7 @@ public class ChangeNotes extends VersionedMetaData {
this.reviewers = reviewers.build();
submitRecords = ImmutableList.copyOf(parser.submitRecords);
} finally {
walk.release();
walk.close();
}
}

View File

@@ -75,7 +75,7 @@ public class PatchFile {
bTree = bCommit.getTree();
}
} finally {
reader.release();
reader.close();
}
}

View File

@@ -165,7 +165,7 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
return new PatchList(a, b, againstParent,
entries.toArray(new PatchListEntry[entries.size()]));
} finally {
reader.release();
reader.close();
}
}
@@ -281,7 +281,7 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
}
@Override
public void release() {
public void close() {
}
});
@@ -319,7 +319,7 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
Map<String, ObjectId> resolved = new HashMap<String, ObjectId>();
for (Map.Entry<String, MergeResult<? extends Sequence>> entry : r.entrySet()) {
MergeResult<? extends Sequence> p = entry.getValue();
TemporaryBuffer buf = new TemporaryBuffer.LocalFile(10 * 1024 * 1024);
TemporaryBuffer buf = new TemporaryBuffer.LocalFile(null, 10 * 1024 * 1024);
try {
fmt.formatMerge(buf, p, "BASE", oursName, theirsName, "UTF-8");
buf.close();
@@ -381,7 +381,7 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
}
ins.flush();
} finally {
ins.release();
ins.close();
}
if (save) {
@@ -400,7 +400,7 @@ public class PatchListLoader extends CacheLoader<PatchListKey, PatchList> {
oi.flush();
return id;
} finally {
oi.release();
oi.close();
}
}
}

View File

@@ -119,7 +119,7 @@ class PatchScriptBuilder {
try {
return build(content, comments, history);
} finally {
reader.release();
reader.close();
}
}

View File

@@ -94,7 +94,7 @@ public class PatchSetInfoFactory {
info.setParents(toParentInfos(src.getParents(), rw));
return info;
} finally {
rw.release();
rw.close();
}
} catch (IOException e) {
throw new PatchSetInfoNotAvailableException(e);

View File

@@ -69,7 +69,7 @@ public class GetHead implements RestReadView<ProjectResource> {
}
throw new AuthException("not allowed to see HEAD");
} finally {
rw.release();
rw.close();
}
}
throw new ResourceNotFoundException(Constants.HEAD);

View File

@@ -100,7 +100,7 @@ class ListDashboards implements RestReadView<ProjectResource> {
}
return all;
} finally {
rw.release();
rw.close();
}
} finally {
git.close();
@@ -134,7 +134,7 @@ class ListDashboards implements RestReadView<ProjectResource> {
}
}
} finally {
tw.release();
tw.close();
}
return list;
}

View File

@@ -301,7 +301,7 @@ public class PerformCreateProject {
+ createProjectArgs.getProjectName(), e);
throw e;
} finally {
oi.release();
oi.close();
}
}
}

View File

@@ -441,7 +441,7 @@ public class ChangeData {
commitMessage = c.getFullMessage();
commitFooters = c.getFooterLines();
} finally {
walk.release();
walk.close();
}
} finally {
repo.close();

View File

@@ -138,7 +138,7 @@ class ConflictsPredicate extends OrPredicate<ChangeData> {
} catch (NoSuchProjectException e) {
throw new IllegalStateException(e);
} finally {
rw.release();
rw.close();
}
} finally {
repo.close();

View File

@@ -109,7 +109,7 @@ public abstract class RevWalkPredicate extends OperatorPredicate<ChangeData> {
try {
return match(repo, rw, args);
} finally {
rw.release();
rw.close();
}
} finally {
repo.close();

View File

@@ -130,7 +130,7 @@ public class PRED_commit_edits_2 extends Predicate.P2 {
} catch (IOException err) {
throw new JavaException(this, 1, err);
} finally {
reader.release();
reader.close();
}
return engine.fail();

View File

@@ -127,7 +127,7 @@ public class IncludedInResolverTest extends RepositoryTestCase {
@After
public void tearDown() throws Exception {
revWalk.release();
revWalk.close();
super.tearDown();
}

View File

@@ -208,7 +208,7 @@ public class ChangeNotesTest {
assertEquals(author.getWhen(), committer.getWhen());
assertEquals(author.getTimeZone(), committer.getTimeZone());
} finally {
walk.release();
walk.close();
}
}
@@ -229,7 +229,7 @@ public class ChangeNotesTest {
+ "Label: -Code-Review\n",
commit.getFullMessage());
} finally {
walk.release();
walk.close();
}
}
@@ -277,7 +277,7 @@ public class ChangeNotesTest {
assertEquals(author.getWhen(), committer.getWhen());
assertEquals(author.getTimeZone(), committer.getTimeZone());
} finally {
walk.release();
walk.close();
}
}
@@ -302,7 +302,7 @@ public class ChangeNotesTest {
+ "Submitted-with: RULE_ERROR Problem with patch set: 1\n",
commit.getFullMessage());
} finally {
walk.release();
walk.close();
}
}

View File

@@ -431,7 +431,7 @@ public class CommitMsgHookTest extends HookTestCase {
oi.flush();
return e;
} finally {
oi.release();
oi.close();
}
}
@@ -457,7 +457,7 @@ public class CommitMsgHookTest extends HookTestCase {
fail(Constants.HEAD + " did not change: " + ref.getResult());
}
} finally {
oi.release();
oi.close();
}
}
}

View File

@@ -1,12 +1,13 @@
include_defs('//lib/maven.defs')
VERS = '3.4.2.201412180340-r'
REPO = MAVEN_CENTRAL # Leave here even if set to MAVEN_CENTRAL.
VERS = '4.5.4.201711221230-r'
maven_jar(
name = 'jgit',
id = 'org.eclipse.jgit:org.eclipse.jgit:' + VERS,
bin_sha1 = 'cc501e3db3f5a00713382753d7260ecf2d1fe7fa',
src_sha1 = '19c71b70882b83f4e15a888ff8ef4f2e0507efa0',
bin_sha1 = 'b30f322c7d441260f4fa454ce5de65cf7e961274',
src_sha1 = '459f648f8bbf10e1aa0b122d4f9919e1779922e9',
license = 'jgit',
unsign = True,
deps = [':ewah'],
@@ -20,7 +21,7 @@ maven_jar(
maven_jar(
name = 'jgit-servlet',
id = 'org.eclipse.jgit:org.eclipse.jgit.http.server:' + VERS,
sha1 = '9965a9cbb9673572848dea6d6eecf51d3e7d360c',
sha1 = '264fac29b6007146127156113ed3d4e0aa922b39',
license = 'jgit',
deps = [':jgit'],
unsign = True,
@@ -33,7 +34,7 @@ maven_jar(
maven_jar(
name = 'jgit-archive',
id = 'org.eclipse.jgit:org.eclipse.jgit.archive:' + VERS,
sha1 = '4232b91d3f6e77aff86894170fdfb68d455906a8',
sha1 = '6b0b919ee42bf8276193c3c03581634bc3aa7e18',
license = 'jgit',
deps = [':jgit',
'//lib/commons:compress',
@@ -49,7 +50,7 @@ maven_jar(
maven_jar(
name = 'junit',
id = 'org.eclipse.jgit:org.eclipse.jgit.junit:' + VERS,
sha1 = '8e69847e02cea0898c31e3a3066c8b4416938593',
sha1 = '58ca0a0fba72f2db6e6b27bd464dc44a946a617c',
license = 'DO_NOT_DISTRIBUTE',
unsign = True,
deps = [':jgit'],