diff options
author | Jean-Jacques Lafay <jeanjacques.lafay@gmail.com> | 2016-10-02 11:35:29 +0200 |
---|---|---|
committer | Jean-Jacques Lafay <jeanjacques.lafay@gmail.com> | 2016-10-02 09:38:18 +0000 |
commit | 0a503edfdd17b0cab7d12862d1e9d3dc63caa082 (patch) | |
tree | 738ec3be568f5866e176181ddae17b507c514c2e | |
parent | b224bf9d4ad30e4259c20bc22ad2d261f785dc51 (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.java | 3 |
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; } } |