| Issue 2706: | Deleting multiple branches causes LockFailedException | |
| 3 people starred this issue and may be notified of changes. | Back to list |
Affected Version: 2.8.3, 2.9-rc (2.9-rc1-168-g7833b5d-dirty)
What steps will reproduce the problem?
1. Go to a project with MANY branches and a long development tree (a trivial test case didn't seem to work)
2. Select multiple (~10-12) branches to delete
3. Attempt to delete branches
What is the expected output? What do you see instead?
Branches should delete successfully, but instead, an Internal Server Error is given and a LockFailedException is thrown. Deleting the branches one at a time works normally.
Please provide any additional information below.
org.eclipse.jgit.errors.LockFailedException: Cannot lock repo.git/packed-refs
at org.eclipse.jgit.internal.storage.file.RefDirectory.delete(RefDirectory
.java:565)
at org.eclipse.jgit.internal.storage.file.RefDirectoryUpdate.doDelete(RefD
irectoryUpdate.java:144)
at org.eclipse.jgit.lib.RefUpdate$2.execute(RefUpdate.java:545)
at org.eclipse.jgit.lib.RefUpdate.updateImpl(RefUpdate.java:624)
at org.eclipse.jgit.lib.RefUpdate.delete(RefUpdate.java:542)
at org.eclipse.jgit.lib.RefUpdate.delete(RefUpdate.java:515)
at com.google.gerrit.server.project.DeleteBranch.apply(DeleteBranch.java:8
0)
at com.google.gerrit.server.project.DeleteBranch.apply(DeleteBranch.java:3
8)
at com.google.gerrit.httpd.restapi.RestApiServlet.service(RestApiServlet.j
ava:303)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:278)
at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:268)
at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:180)
at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:93)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:70)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:113)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.gerrit.httpd.RequireSslFilter.doFilter(RequireSslFilter.java:68)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.gerrit.httpd.AllRequestFilter$FilterProxy$1.doFilter(AllRequestFilter.java:64)
at com.google.gerrit.httpd.AllRequestFilter$FilterProxy.doFilter(AllRequestFilter.java:57)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.gerrit.httpd.RequestContextFilter.doFilter(RequestContextFilter.java:75)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:120)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:132)
at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:129)
at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:206)
at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:129)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1539)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:524)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:219)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1110)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1044)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:459)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:280)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:229)
at org.eclipse.jetty.io.AbstractConnection$1.run(AbstractConnection.java:505)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:607)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:536)
at java.lang.Thread.run(Thread.java:724)
Sep 29, 2014
#1
jfas...@gmail.com
Dec 4, 2014
Issue 3042 has been merged into this issue.
Dec 4, 2014
More details how to reproduce the issue: -Run gc on the repo -Delete 2 or more branch The problem is that when deleting multiple branches, branch deletion is done is parallel and jgit fails to lock the pack-ref file to remove the branch from it since the first deletion that gets executed already locked the file.
Status:
Accepted
Jan 12, 2015
https://gerrit-review.googlesource.com/#/c/63210/
Jan 28, 2015
https://gerrit-review.googlesource.com/#/c/63702/
Feb 5, 2015
(No comment was entered for this change.)
Status:
Submitted
Labels: FixedIn-2.11
Apr 16, 2015
(No comment was entered for this change.)
Status:
Released
|
|
| ► Sign in to add a comment |