| Issue 1491: | Nested Submodule Subscriptions Don't Update | |
| 4 people starred this issue and may be notified of changes. | Back to list |
Affected Version: 2.4-rc0 What steps will reproduce the problem? 1) Create three repositories in Gerrit: A, B, and C. 2) Clone A, add B as a submodule. Include the "branch = master" line in .gitmodules to configure a Gerrit Submodule Subscription. 3) Clone B, add C as a submodule. Include the "branch = master" line in .gitmodules to configure a Gerrit Submodule Subscription. 4) Create and submit a change to the master branch of C. What is the expected output? What do you see instead? Expected: The submodule subscription for repository B activates, creating a new commit that updates the submodule pointer from B to C. The submodule subscription for A then activates, creating a new commit that updates the submodule pointer from A to B. Observed: The submodule subscription for repository B operates correctly. The submodule subscription for repository A, however, fails with a stack trace like the following: [2012-07-25 03:01:17,063] ERROR com.google.gerrit.server.git.SubmoduleOp : Cannot update gitlinks for refs/heads/master org.eclipse.jgit.errors.MissingObjectException: Missing unknown 15f7e3e02a2772f4e1b13f8e25224b6eff5751d5 at org.eclipse.jgit.storage.file.WindowCursor.open(WindowCursor.java:125) at org.eclipse.jgit.lib.ObjectReader.open(ObjectReader.java:228) at org.eclipse.jgit.revwalk.RevWalk.parseAny(RevWalk.java:811) at org.eclipse.jgit.revwalk.RevWalk.parseCommit(RevWalk.java:724) at com.google.gerrit.server.git.SubmoduleOp.updateGitlinks(SubmoduleOp.java:265) at com.google.gerrit.server.git.SubmoduleOp.updateSuperProjects(SubmoduleOp.java:239) at com.google.gerrit.server.git.SubmoduleOp.updateGitlinks(SubmoduleOp.java:344) at com.google.gerrit.server.git.SubmoduleOp.updateSuperProjects(SubmoduleOp.java:239) at com.google.gerrit.server.git.SubmoduleOp.update(SubmoduleOp.java:121) at com.google.gerrit.server.git.MergeOp.updateSubscriptions(MergeOp.java:1135) at com.google.gerrit.server.git.MergeOp.merge(MergeOp.java:280) at com.google.gerrit.server.git.ChangeMergeQueue.mergeImpl(ChangeMergeQueue.java:181) at com.google.gerrit.server.git.ChangeMergeQueue.merge(ChangeMergeQueue.java:101) at com.google.gerrit.server.changedetail.Submit.call(Submit.java:184) at com.google.gerrit.httpd.rpc.changedetail.SubmitAction.call(SubmitAction.java:54) at com.google.gerrit.httpd.rpc.changedetail.SubmitAction.call(SubmitAction.java:30) at com.google.gerrit.httpd.rpc.Handler.to(Handler.java:65) at com.google.gerrit.httpd.rpc.changedetail.ChangeManageServiceImpl.submit(ChangeManageServiceImpl.java:52) at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.google.gwtjsonrpc.server.MethodHandle.invoke(MethodHandle.java:91) at com.google.gwtjsonrpc.server.JsonServlet.doService(JsonServlet.java:379) at com.google.gwtjsonrpc.server.JsonServlet.service(JsonServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:263) at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:178) at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:62) at com.google.gerrit.pgm.http.jetty.GetUserFilter.doFilter(GetUserFilter.java:76) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:76) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.gerrit.httpd.RequireSslFilter.doFilter(RequireSslFilter.java:68) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.gerrit.httpd.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:54) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:168) at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58) at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:118) at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:113) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1322) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:473) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:921) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:403) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:856) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114) at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:59) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:114) at org.eclipse.jetty.server.Server.handle(Server.java:352) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:596) at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1069) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:805) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218) at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:426) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:510) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.access$000(SelectChannelEndPoint.java:34) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:40) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:450) at java.lang.Thread.run(Thread.java:662) [2012-07-25 03:01:17,065] ERROR com.google.gerrit.server.git.MergeOp : The gitLinks were not updated according to the subscriptions Cannot update gitlinks for refs/heads/master
Oct 16, 2012
#2
sjakub
Oct 16, 2012
Actually the this problem affects not only nested repositories... Because the exception stops processing subscribers, other repositories that directly use the repository that got changed and happen to be processed after nested one, won't get modified...
Oct 16, 2012
Thanks for looking into how to fix this. Would you be able to push the fix to the Gerrit project on [1] for code review? We can only accept fixes from contributors that have a valid contributor agreement, see [2] for details. [1] https://gerrit-review.googlesource.com [2] https://gerrit-review.googlesource.com/Documentation/dev-contributing.html
Oct 17, 2012
It's submitted (https://gerrit-review.googlesource.com/#/c/38520/). I submitted it to master, should I do the same with stable-2.4 (and possibly stable-2.5)? I'm not sure what the procedure is...
Oct 17, 2012
No need to upload it for stable-2.4. At the moment there is no stable bug-fix release planned for 2.4 (not sure if there will be any). Gerrit 2.5 is just about to be released (rc1 was published today). Only critical bugs can still be fixed there. If your change gets accepted for master I might cherry-pick it to 2.5 if this fix is important for you.
Status:
ChangeUnderReview
Oct 17, 2012
Got it. Thanks for the fast response. 2.5 would be great! :)
Oct 17, 2012
We would also love to see this fixed in 2.5
Oct 18, 2012
I've cherry-picked it for 2.5.
Status:
Submitted
Labels: FixedIn-2.5
Oct 18, 2012
Thanks! :)
Oct 25, 2012
Issue 1628 has been merged into this issue.
Oct 31, 2012
(No comment was entered for this change.)
Status:
Released
|
|
| ► Sign in to add a comment |