My favorites | Sign in
Project Home Downloads Wiki Issues Source
New issue   Search
for
  Advanced search   Search tips   Subscriptions
Issue 3599: Unified diff screen is broken on stable-2.11 release for anonymous user
1 person starred this issue and may be notified of changes. Back to list
Status:  Duplicate
Merged:  issue 3531
Owner:  ----
Closed:  Oct 13
Cc:  david.pu...@sonymobile.com, sbel...@google.com


Sign in to add a comment
 
Project Member Reported by David.Os...@gmail.com, Oct 13, 2015
*****************************************************************
*****                                                       *****
***** !!!! THIS BUG TRACKER IS FOR GERRIT CODE REVIEW !!!!  *****
*****                                                       *****
***** DO NOT SUBMIT BUGS FOR CHROME, ANDROID, CYANOGENMOD,  *****
***** INTERNAL ISSUES WITH YOUR COMPANY'S GERRIT SETUP, ETC.*****
*****                                                       *****
*****   THOSE ISSUES BELONG IN DIFFERENT ISSUE TRACKERS     *****
*****                                                       *****
*****************************************************************
a
Affected Version:

stable-2.11 (v.2.11.2)

What steps will reproduce the problem?
1. Open https://git.eclipse.org/r/#/c/57583/2/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/WindowCursor.java as anonymous user
2. Click on unified diff icon in upper right corner

What is the expected output?

unified screen is opened

What do you see instead?

500 internal server error

Please provide any additional information below.

See also corresponding issue in eclipse issue tracker:

[1] https://bugs.eclipse.org/bugs/show_bug.cgi?id=479618


The culrpit seems to be the unconditional cast in RevisionResource.java called from Submit.java:

  @Override
  public UiAction.Description getDescription(RevisionResource resource) {
    PatchSet.Id current = resource.getChange().currentPatchSetId();
    String topic = resource.getChange().getTopic();
    boolean visible = !resource.getPatchSet().isDraft()
        && resource.getChange().getStatus().isOpen()
        && resource.getPatchSet().getId().equals(current)
        && resource.getControl().canSubmit();

    ReviewDb db = dbProvider.get();
    ChangeData cd = changeDataFactory.create(db, resource.getControl());
280 ==>    if (problemsForSubmittingChanges(Arrays.asList(cd), resource.getUser())
        != null) {
      visible = false;
    }

And in RevisionResource.java

  IdentifiedUser getUser() {
87 ==>    return (IdentifiedUser) getControl().getCurrentUser();
  }

Here is the complete stack trace:


[2015-10-13 05:24:27,928] WARN  /r : Error in patchSetDetail
java.lang.ClassCastException: com.google.gerrit.server.AnonymousUser incompatible with com.google.gerrit.server.IdentifiedUser
	at com.google.gerrit.server.change.RevisionResource.getUser(RevisionResource.java:87)
	at com.google.gerrit.server.change.Submit.getDescription(Submit.java:280)
	at com.google.gerrit.server.change.Submit.getDescription(Submit.java:89)
	at com.google.gerrit.server.extensions.webui.UiActions$4.apply(UiActions.java:118)
	at com.google.gerrit.server.extensions.webui.UiActions$4.apply(UiActions.java:88)
	at com.google.common.collect.Iterators$8.transform(Iterators.java:799)
	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:651)
	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:650)
	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
	at com.google.common.collect.Iterators.addAll(Iterators.java:361)
	at com.google.common.collect.Lists.newArrayList(Lists.java:160)
	at com.google.common.collect.Lists.newArrayList(Lists.java:144)
	at com.google.gerrit.server.extensions.webui.UiActions.sorted(UiActions.java:54)
	at com.google.gerrit.httpd.rpc.changedetail.PatchSetDetailFactory.call(PatchSetDetailFactory.java:219)
	at com.google.gerrit.httpd.rpc.changedetail.PatchSetDetailFactory.call(PatchSetDetailFactory.java:72)
	at com.google.gerrit.httpd.rpc.Handler.to(Handler.java:65)
	at com.google.gerrit.httpd.rpc.changedetail.ChangeDetailServiceImpl.patchSetDetail2(ChangeDetailServiceImpl.java:42)
	at com.google.gerrit.httpd.rpc.changedetail.ChangeDetailServiceImpl.patchSetDetail(ChangeDetailServiceImpl.java:36)
	at sun.reflect.GeneratedMethodAccessor60.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
	at java.lang.reflect.Method.invoke(Method.java:620)
	at com.google.gwtjsonrpc.server.MethodHandle.invoke(MethodHandle.java:91)
	at com.google.gwtjsonrpc.server.JsonServlet.doService(JsonServlet.java:381)
	at com.google.gwtjsonrpc.server.JsonServlet.service(JsonServlet.java:267)
	at com.google.gerrit.httpd.rpc.GerritJsonServlet.service(GerritJsonServlet.java:120)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
	at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:279)
	at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:269)
	at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:180)
	at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:91)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
	at com.google.gerrit.httpd.GetUserFilter.doFilter(GetUserFilter.java:82)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
	at com.google.gwtexpui.server.CacheControlFilter.doFilter(CacheControlFilter.java:73)
	at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
	at com.google.gerrit.httpd.RunAsFilter.doFilter(RunAsFilter.java:117)
	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:119)
	at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:133)
	at com.google.inject.servlet.GuiceFilter$1.call(GuiceFilter.java:130)
	at com.google.inject.servlet.GuiceFilter$Context.call(GuiceFilter.java:203)
	at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:130)
	at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
	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:497)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
	at java.lang.Thread.run(Thread.java:795)
Oct 13, 2015
Project Member #1 David.Os...@gmail.com
Adding Stefan to this issue, as he did some refactoring in this code area recently. Parts of the code related to submitted together feature was reverted on stable-2.11.
Cc: sbel...@google.com
Oct 13, 2015
Project Member #2 David.Os...@gmail.com
https://gerrit-review.googlesource.com/71500
Status: ChangeUnderReview
Oct 13, 2015
#3 tw201...@gmail.com
This is a duplicate of  issue 3531 .
Oct 13, 2015
Project Member #4 David.Os...@gmail.com
(No comment was entered for this change.)
Status: Duplicate
Mergedinto: 3531
Sign in to add a comment

Powered by Google Project Hosting