summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Jacques Lafay <jeanjacques.lafay@gmail.com>2016-10-02 11:35:29 +0200
committerJean-Jacques Lafay <jeanjacques.lafay@gmail.com>2016-10-02 09:38:18 +0000
commit0a503edfdd17b0cab7d12862d1e9d3dc63caa082 (patch)
tree738ec3be568f5866e176181ddae17b507c514c2e
parentb224bf9d4ad30e4259c20bc22ad2d261f785dc51 (diff)
Fix double Repository.close() in MergeOp
The call to closeRepository() from the finally block on line 461 doubles up with the "normal" call on line 446, so we have to make sure not to close() the repo twice. This resulted in the counter for the repo to regularly reach exactly 0, when all cached data are flushed, and we suffer a serious performance hit. Once enough changes have been merged however (especially more than the number of indexing threads that kick in immediately after a successful merge to check for mergeability), the counter stays consistently negative and performances return to normal. Note that this has been fixed in 2.13 as a side-effect of 4b1e2a460. Change-Id: I49181f0bff7b57d83bfad4ba225d1266ee545b35
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java3
1 files changed, 3 insertions, 0 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
index 709485839c..496b38602c 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/git/MergeOp.java
@@ -511,12 +511,15 @@ public class MergeOp {
private void closeRepository() {
if (inserter != null) {
inserter.close();
+ inserter = null;
}
if (rw != null) {
rw.close();
+ rw = null;
}
if (repo != null) {
repo.close();
+ repo = null;
}
}