Merge branch 'stable-2.14'
* stable-2.14: Serve PolyGerrit index.html from a Soy template Don't leak ObjectReaders created from ObjectInserters Upgrade JGit to 4.6.1.201703071140-r.169-g61e336475 Change-Id: I88e483c54d50e540829b3cc6e9c139a59f05329b
This commit is contained in:
@@ -73,6 +73,7 @@ import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.lib.NullProgressMonitor;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.ObjectReader;
|
||||
import org.eclipse.jgit.lib.ProgressMonitor;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.RefDatabase;
|
||||
@@ -271,7 +272,8 @@ public class RebuildNoteDb extends SiteProgram {
|
||||
pm.beginTask(FormatUtil.elide(project.get(), 50), allChanges.get(project).size());
|
||||
try (NoteDbUpdateManager manager = updateManagerFactory.create(project);
|
||||
ObjectInserter allUsersInserter = allUsersRepo.newObjectInserter();
|
||||
RevWalk allUsersRw = new RevWalk(allUsersInserter.newReader())) {
|
||||
ObjectReader reader = allUsersInserter.newReader();
|
||||
RevWalk allUsersRw = new RevWalk(reader)) {
|
||||
manager.setAllUsersRepo(
|
||||
allUsersRepo, allUsersRw, allUsersInserter, new ChainedReceiveCommands(allUsersRepo));
|
||||
for (Change.Id changeId : allChanges.get(project)) {
|
||||
|
@@ -61,6 +61,7 @@ import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.ObjectReader;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
@@ -153,7 +154,8 @@ public class CherryPickChange {
|
||||
// created later on, to ensure the cherry-picked commit is flushed
|
||||
// before patch sets are updated.
|
||||
ObjectInserter oi = git.newObjectInserter();
|
||||
CodeReviewRevWalk revWalk = CodeReviewCommit.newRevWalk(oi.newReader())) {
|
||||
ObjectReader reader = oi.newReader();
|
||||
CodeReviewRevWalk revWalk = CodeReviewCommit.newRevWalk(reader)) {
|
||||
Ref destRef = git.getRefDatabase().exactRef(targetRef);
|
||||
if (destRef == null) {
|
||||
throw new InvalidChangeOperationException(
|
||||
|
@@ -76,6 +76,7 @@ import org.eclipse.jgit.lib.CommitBuilder;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.ObjectReader;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
@@ -184,7 +185,8 @@ public class CreateChange implements RestModifyView<TopLevelResource, ChangeInpu
|
||||
Project.NameKey project = rsrc.getNameKey();
|
||||
try (Repository git = gitManager.openRepository(project);
|
||||
ObjectInserter oi = git.newObjectInserter();
|
||||
RevWalk rw = new RevWalk(oi.newReader())) {
|
||||
ObjectReader reader = oi.newReader();
|
||||
RevWalk rw = new RevWalk(reader)) {
|
||||
ObjectId parentCommit;
|
||||
List<String> groups;
|
||||
if (input.baseChange != null) {
|
||||
|
@@ -56,6 +56,7 @@ import java.sql.Timestamp;
|
||||
import java.util.TimeZone;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.ObjectReader;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
@@ -126,7 +127,8 @@ public class CreateMergePatchSet implements RestModifyView<ChangeResource, Merge
|
||||
Branch.NameKey dest = change.getDest();
|
||||
try (Repository git = gitManager.openRepository(project);
|
||||
ObjectInserter oi = git.newObjectInserter();
|
||||
RevWalk rw = new RevWalk(oi.newReader())) {
|
||||
ObjectReader reader = oi.newReader();
|
||||
RevWalk rw = new RevWalk(reader)) {
|
||||
|
||||
RevCommit sourceCommit = MergeUtil.resolveCommit(git, rw, merge.source);
|
||||
if (!projectControl.canReadCommit(db.get(), git, sourceCommit)) {
|
||||
|
@@ -41,6 +41,7 @@ import java.util.concurrent.TimeUnit;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.ObjectReader;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
@@ -89,7 +90,8 @@ public class GetBlame implements RestReadView<FileResource> {
|
||||
Project.NameKey project = resource.getRevision().getChange().getProject();
|
||||
try (Repository repository = repoManager.openRepository(project);
|
||||
ObjectInserter ins = repository.newObjectInserter();
|
||||
RevWalk revWalk = new RevWalk(ins.newReader())) {
|
||||
ObjectReader reader = ins.newReader();
|
||||
RevWalk revWalk = new RevWalk(reader)) {
|
||||
String refName =
|
||||
resource.getRevision().getEdit().isPresent()
|
||||
? resource.getRevision().getEdit().get().getRefName()
|
||||
|
@@ -178,6 +178,7 @@ public class NoteDbUpdateManager implements AutoCloseable {
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
rw.getObjectReader().close();
|
||||
rw.close();
|
||||
if (close) {
|
||||
if (finalIns != null) {
|
||||
@@ -295,10 +296,18 @@ public class NoteDbUpdateManager implements AutoCloseable {
|
||||
}
|
||||
|
||||
private OpenRepo openRepo(Project.NameKey p) throws IOException {
|
||||
Repository repo = repoManager.openRepository(p);
|
||||
ObjectInserter ins = repo.newObjectInserter();
|
||||
return new OpenRepo(
|
||||
repo, new RevWalk(ins.newReader()), ins, new ChainedReceiveCommands(repo), true);
|
||||
Repository repo = repoManager.openRepository(p); // Closed by OpenRepo#close.
|
||||
ObjectInserter ins = repo.newObjectInserter(); // Closed by OpenRepo#close.
|
||||
ObjectReader reader = ins.newReader(); // Not closed by OpenRepo#close.
|
||||
try (RevWalk rw = new RevWalk(reader)) { // Doesn't escape OpenRepo constructor.
|
||||
return new OpenRepo(repo, rw, ins, new ChainedReceiveCommands(repo), true) {
|
||||
@Override
|
||||
public void close() {
|
||||
reader.close();
|
||||
super.close();
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isEmpty() {
|
||||
|
@@ -234,6 +234,7 @@ public abstract class BatchUpdate implements AutoCloseable {
|
||||
@Override
|
||||
public void close() {
|
||||
if (closeRepo) {
|
||||
revWalk.getObjectReader().close();
|
||||
revWalk.close();
|
||||
inserter.close();
|
||||
repo.close();
|
||||
|
@@ -79,6 +79,7 @@ import org.eclipse.jgit.lib.BatchRefUpdate;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.lib.NullProgressMonitor;
|
||||
import org.eclipse.jgit.lib.ObjectInserter;
|
||||
import org.eclipse.jgit.lib.ObjectReader;
|
||||
import org.eclipse.jgit.lib.PersonIdent;
|
||||
import org.eclipse.jgit.lib.Repository;
|
||||
import org.eclipse.jgit.revwalk.RevWalk;
|
||||
@@ -401,16 +402,14 @@ class ReviewDbBatchUpdate extends BatchUpdate {
|
||||
}
|
||||
|
||||
if (onSubmitValidators != null && commands != null && !commands.isEmpty()) {
|
||||
// Validation of refs has to take place here and not at the beginning
|
||||
// executeRefUpdates. Otherwise failing validation in a second
|
||||
// BatchUpdate object will happen *after* first object's
|
||||
// executeRefUpdates has finished, hence after first repo's refs have
|
||||
// been updated, which is too late.
|
||||
onSubmitValidators.validate(
|
||||
project,
|
||||
new ReadOnlyRepository(getRepository()),
|
||||
ctx.getInserter().newReader(),
|
||||
commands.getCommands());
|
||||
try (ObjectReader reader = ctx.getInserter().newReader()) {
|
||||
// Validation of refs has to take place here and not at the beginning
|
||||
// executeRefUpdates. Otherwise failing validation in a second BatchUpdate object will
|
||||
// happen *after* first object's executeRefUpdates has finished, hence after first repo's
|
||||
// refs have been updated, which is too late.
|
||||
onSubmitValidators.validate(
|
||||
project, new ReadOnlyRepository(getRepository()), reader, commands.getCommands());
|
||||
}
|
||||
}
|
||||
|
||||
if (inserter != null) {
|
||||
|
@@ -1,6 +1,6 @@
|
||||
load("//tools/bzl:maven_jar.bzl", "GERRIT", "MAVEN_LOCAL", "MAVEN_CENTRAL", "maven_jar")
|
||||
|
||||
_JGIT_VERS = "4.6.1.201703071140-r.149-g61f830d3a"
|
||||
_JGIT_VERS = "4.6.1.201703071140-r.169-g61e336475"
|
||||
|
||||
_DOC_VERS = "4.6.0.201612231935-r" # Set to _JGIT_VERS unless using a snapshot
|
||||
|
||||
@@ -26,28 +26,28 @@ def jgit_maven_repos():
|
||||
name = "jgit_lib",
|
||||
artifact = "org.eclipse.jgit:org.eclipse.jgit:" + _JGIT_VERS,
|
||||
repository = _JGIT_REPO,
|
||||
sha1 = "dbb390b827b968558342e882e0c9b90e1ed037a2",
|
||||
src_sha1 = "05d8939d08fe75a080fbf84f3163df5127950985",
|
||||
sha1 = "ae2d80dfa58eff4228425eb49cd22fc3190637b9",
|
||||
src_sha1 = "693c525ef00a5e1ab918d90aff9893a19ebf43dd",
|
||||
unsign = True,
|
||||
)
|
||||
maven_jar(
|
||||
name = "jgit_servlet",
|
||||
artifact = "org.eclipse.jgit:org.eclipse.jgit.http.server:" + _JGIT_VERS,
|
||||
repository = _JGIT_REPO,
|
||||
sha1 = "136026aa28b065d04194cadcb3371b5a3f6c7235",
|
||||
sha1 = "7610fde96610fbc17782ed383a721c4168bfd760",
|
||||
unsign = True,
|
||||
)
|
||||
maven_jar(
|
||||
name = "jgit_archive",
|
||||
artifact = "org.eclipse.jgit:org.eclipse.jgit.archive:" + _JGIT_VERS,
|
||||
repository = _JGIT_REPO,
|
||||
sha1 = "8be5fa1000cf66ff3deae257bb29870c93f83363",
|
||||
sha1 = "c5c6ecac620a62a1f4115dcff63d7baa257582f1",
|
||||
)
|
||||
maven_jar(
|
||||
name = "jgit_junit",
|
||||
artifact = "org.eclipse.jgit:org.eclipse.jgit.junit:" + _JGIT_VERS,
|
||||
repository = _JGIT_REPO,
|
||||
sha1 = "d6a6c49b137a7f1a30ec55a228826d9146c0eba4",
|
||||
sha1 = "5ed3263792c677e3e5a594d235f8360c38433324",
|
||||
unsign = True,
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user