Jira-Sudo plugin: Visibility of comments

Thomas Buckel March 18, 2016

Hi David,

First of all great plugin. One question though: When I add a comment via sudo to an issue, the visibility of the comment is shown as 'Visible to Users' whereas the default comments added without sudo plugin don't have this. Is this specific to the plugin and could it be changed?

Thanks,

Thomas

2 answers

1 vote
David Erickson March 18, 2016

Hi Thomas-

Thanks for your kind words!  Interesting issue, I haven't encountered this myself.  Do you mind attaching a screenshot of where you are seeing this message?  It would also be helpful to know your JIRA version, and what your security settings look like for the project where you see this issue.

Thanks,

David

0 votes
Thomas Buckel March 18, 2016

Thanks for the quick response David.

Screenshot below:

Screen Shot 2016-03-19 at 1.20.33 PM.png

The JIRA version is 6.1.7 and while I have modified the some of the security settings, I'm not aware of a change that might have caused this. When I added a comment without the REST API, I haven't seen it.

Don't think it will cause a functional problem - just odd. Will also see on Monday how the behaviour is for other operations like updates.

Thomas

 

David Erickson March 18, 2016

Thanks Thomas, can you try adding a comment to that issue as the same account that you 'sudo'd to?  

 

I haven't tried restricting comment visibility, but the plugin shouldn't be doing anything other than posting as that user, so I'd expect a comment posted by you using the web interface to show the same output.

Thomas Buckel March 18, 2016

Good point, should have done that before wink

However when I add the comment as the same user to the same issue directly through JIRA I'm not seeing the same restriction.

I've tested it in our dev/test environment where we have played with the permissions and security schemes to that might have caused it? 

Will try in another environment and keep you posted.

Again, thanks for your prompt support.

David Erickson March 18, 2016

No problem, let me know what you learn.

Thomas Buckel March 18, 2016

Some more info: "Users" is the name of "jira-users" in the Default Permissioning scheme. Now the project I am testing on has a different Permissioning Scheme and jira-users. Now after removing the 'jira-users' mapping from the Default Permissioning Scheme (which is not used by the project), I'm getting this exception:


2016-03-19 14:39:38,820 http-bio-8180-exec-6 ERROR thomas 879x18314x1 1ju86r 168.1.6.40,127.0.0.1 /rest/api/latest/issue/13882/comment [jira.rest.exception.ExceptionInterceptor] Returning internal server error in response
java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedMethodAccessor1537.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:234)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept(DispatchProviderHelper.java:100)
        at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
        at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept(ExpandInterceptor.java:38)
        at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
        at com.atlassian.jira.rest.exception.ExceptionInterceptor.intercept(ExceptionInterceptor.java:59)
        at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
        at com.atlassian.jira.rest.v2.issue.scope.RequestScopeInterceptor.intercept(RequestScopeInterceptor.java:43)
        at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke(DefaultMethodInvocation.java:61)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors(DispatchProviderHelper.java:132)
        at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch(DispatchProviderHelper.java:230)
        at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
        at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
        at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
        at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
        at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
        at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
        at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
        at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
        at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:178)
        at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:795)
        at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:73)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
        at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:26)
        at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:40)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.plugins.cors.CorsFilter.doFilter(CorsFilter.java:65)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
        at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36)
        at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
        at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
        at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)        .....
Caused by: java.lang.NullPointerException
        at com.atlassian.jira.rest.v2.issue.CommentResource.getCommentVisibilityParams(CommentResource.java:348)
        at com.atlassian.jira.rest.v2.issue.CommentResource.addComment(CommentResource.java:315)
        at com.atlassian.jira.rest.v2.issue.IssueResource.addComment(IssueResource.java:1405)
        ... 183 more



 

2016-03-19 14:39:38,820 http-bio-8180-exec-6 ERROR thomas 879x18314x1 1ju86r 168.1.6.40,127.0.0.1 /rest/api/latest/issue/13882/comment [jira.rest.exception.ExceptionInterceptor] Returning internal server error in response
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor1537.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke(DispatchProviderHelper.java:234)

.........

at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at com.atlassian.jira.rest.v2.issue.CommentResource.getCommentVisibilityParams(CommentResource.java:348)
at com.atlassian.jira.rest.v2.issue.CommentResource.addComment(CommentResource.java:315)
at com.atlassian.jira.rest.v2.issue.IssueResource.addComment(IssueResource.java:1405)
... 183 more


Thomas Buckel March 18, 2016

Apologies, one more:

Once I added the JIRA group 'jira-users' to my permissioning scheme and map it to a role, the plugin works again and creates the 'restricted to Users' again:

image2016-3-19 15:8:47.png

David Erickson March 19, 2016

Hi Thomas-

Are you using any other plugins with JIRA that could cause it to print what comments are restricted to?

My hunch is that in the permission scheme for your project viewing the issue and comments is restricted to users in the role Users.  Can you try creating a new issue, and commenting on it via the GUI first, to see if it also prints out the same notification?  Then try adding a second comment via the API and sudo to the same user.

Thomas Buckel March 19, 2016

Hi David,

Thanks again for your prompt responses. I did some further digging through the code and I could realized that we create the comments with a Visibility "Users". This wasn't shown when using the Rest API as such (bug there?) but explains the behaviour. Apologies for the false alarm.

Great support though wink

Expect some licenses coming through within the next weeks or months as the other operations seem to work seemless!

Cheers,

Thomas

David Erickson March 19, 2016

Thank you, and sounds great.  Let me know if there is anything else I can do to help.

-David

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events