-
Bug
-
Resolution: Fixed
-
Low
-
3.1.2, 3.2.3
-
6
-
Severity 3 - Minor
-
0
-
Experienced Behavior:
- An error is encountered when trying to share a request through the customer portal.
- User is unable to add any participants due to error
- Adding a participant does work when done through the normal JIRA interface
The error message in the portal is caused by a JIRA Software Lexorank error that appears in the atlassian-jira.log file. There are multiple Lexorank errors that may be encountered. Below is one example:
2016-10-13 15:09:32,403 http-nio-8080-exec-14 ERROR tim 909x1538x1 1juu1mp 192.168.56.1 /rest/servicedesk/1/servicedesk/customer/participant/addparticipants/DESK-3 [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: Expected the first rank row to be of type MAXIMUM_MARKER_ROW. Found row[LexoRankRow{id=10, fieldId=10005, issueId=10001, lockHash='null', lockTime=null, bucket=0, rank='0|i00007:', type=ISSUE_RANK_ROW}] com.atlassian.greenhopper.manager.lexorank.LexoRankIntegrityException: Expected the first rank row to be of type MAXIMUM_MARKER_ROW. Found row[LexoRankRow{id=10, fieldId=10005, issueId=10001, lockHash='null', lockTime=null, bucket=0, rank='0|i00007:', type=ISSUE_RANK_ROW}] at com.atlassian.greenhopper.manager.lexorank.LexoRankDaoImpl.getMaximumMarkerRowAndPreviousRow(LexoRankDaoImpl.java:374) at com.atlassian.greenhopper.service.lexorank.LexoRankOperation.rankInitially(LexoRankOperation.java:173) at com.atlassian.greenhopper.service.lexorank.LexoRankOperation.execute(LexoRankOperation.java:112) at com.atlassian.greenhopper.manager.lexorank.LexoRankManagerImpl.performRankOperation(LexoRankManagerImpl.java:286) at com.atlassian.greenhopper.manager.lexorank.LexoRankManagerImpl.getRankOrRankInitially(LexoRankManagerImpl.java:86) at com.atlassian.greenhopper.customfield.lexorank.LexoRankCFType.getValueFromIssue(LexoRankCFType.java:121) at com.atlassian.greenhopper.customfield.lexorank.LexoRankCFType.getValueFromIssue(LexoRankCFType.java:29) at com.atlassian.jira.issue.fields.ImmutableCustomField.getCustomFieldParamsFromIssue(ImmutableCustomField.java:1231) at com.atlassian.jira.issue.fields.ImmutableCustomField.populateFromIssue(ImmutableCustomField.java:594) at com.atlassian.jira.bc.issue.DefaultIssueService.validateAndPopulateParamsWithoutScreenCheck(DefaultIssueService.java:967) at com.atlassian.jira.bc.issue.DefaultIssueService.validateAndPopulateParams(DefaultIssueService.java:886) at com.atlassian.jira.bc.issue.DefaultIssueService.validateAndUpdateIssueFromFields(DefaultIssueService.java:680) at com.atlassian.jira.bc.issue.DefaultIssueService.validateUpdate(DefaultIssueService.java:286) ... 3 filtered at java.lang.reflect.Method.invoke(Method.java:498) at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26) at com.sun.proxy.$Proxy282.validateUpdate(Unknown Source) ... 3 filtered at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56) at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70) at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:133) at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:121) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) at com.sun.proxy.$Proxy4867.validateUpdate(Unknown Source) at com.atlassian.servicedesk.internal.customfields.participants.ParticipantsCustomFieldManagerImpl.updateUserParticipants(ParticipantsCustomFieldManagerImpl.java:110) at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalManagerImpl.updateParticipantsField(RequestParticipantsInternalManagerImpl.java:110) at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalManagerImpl.lambda$addParticipants$5(RequestParticipantsInternalManagerImpl.java:71) at com.atlassian.pocketknife.EitherStep2.lambda$null$62(EitherStep2.java:23) at com.atlassian.fugue.Either$RightProjection.flatMap(Either.java:839) at com.atlassian.fugue.Either.flatMap(Either.java:294) at com.atlassian.pocketknife.EitherStep2.lambda$then$63(EitherStep2.java:23) at com.atlassian.fugue.Either$RightProjection.flatMap(Either.java:839) at com.atlassian.fugue.Either.flatMap(Either.java:294) at com.atlassian.pocketknife.EitherStep2.then(EitherStep2.java:23) at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalManagerImpl.addParticipants(RequestParticipantsInternalManagerImpl.java:67) at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalServiceImpl.lambda$addParticipants$3(RequestParticipantsInternalServiceImpl.java:89) at com.atlassian.fugue.Either$RightProjection.flatMap(Either.java:839) at com.atlassian.fugue.Either.flatMap(Either.java:294) at com.atlassian.pocketknife.EitherStep1.then(EitherStep1.java:21) at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalServiceImpl.addParticipants(RequestParticipantsInternalServiceImpl.java:89) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfu$$$$212135bc1d26e9f51fd57b9757afff$$$$nonfun$apply$11$$anonfun$apply$12.apply(PortalParticipantResource.scala:124) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfu$$$$212135bc1d26e9f51fd57b9757afff$$$$nonfun$apply$11$$anonfun$apply$12.apply(PortalParticipantResource.scala:123) at scalaz.$bslash$div.flatMap(Either.scala:134) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7$$anonfun$apply$8$$anonfun$apply$9$$anonfun$apply$11.apply(PortalParticipantResource.scala:123) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7$$anonfun$apply$8$$anonfun$apply$9$$anonfun$apply$11.apply(PortalParticipantResource.scala:122) at scalaz.$bslash$div.flatMap(Either.scala:134) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7$$anonfun$apply$8$$anonfun$apply$9.apply(PortalParticipantResource.scala:122) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7$$anonfun$apply$8$$anonfun$apply$9.apply(PortalParticipantResource.scala:121) at scalaz.$bslash$div.flatMap(Either.scala:134) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7$$anonfun$apply$8.apply(PortalParticipantResource.scala:121) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7$$anonfun$apply$8.apply(PortalParticipantResource.scala:120) at scalaz.$bslash$div.flatMap(Either.scala:134) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7.apply(PortalParticipantResource.scala:120) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6$$anonfun$apply$7.apply(PortalParticipantResource.scala:119) at scalaz.$bslash$div.flatMap(Either.scala:134) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6.apply(PortalParticipantResource.scala:119) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2$$anonfun$apply$6.apply(PortalParticipantResource.scala:118) at scalaz.$bslash$div.flatMap(Either.scala:134) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2.apply(PortalParticipantResource.scala:118) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource$$anonfun$2.apply(PortalParticipantResource.scala:117) at scalaz.$bslash$div.flatMap(Either.scala:134) at com.atlassian.servicedesk.internal.rest.PortalParticipantResource.addParticipants(PortalParticipantResource.scala:117) ... 3 filtered at java.lang.reflect.Method.invoke(Method.java:498) ... 19 filtered at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:154) ... 1 filtered at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:68) ... 33 filtered at com.atlassian.servicedesk.internal.web.OperationalStatusAwareHttpFilter.doFilter(OperationalStatusAwareHttpFilter.java:31) ... 4 filtered at com.atlassian.servicedesk.internal.web.UrlOperationalStatusCheckFilter.doFilterWhenLicensed(UrlOperationalStatusCheckFilter.java:38) at com.atlassian.servicedesk.internal.web.OperationalStatusAwareHttpFilter.doFilter(OperationalStatusAwareHttpFilter.java:31) ... 4 filtered at com.atlassian.servicedesk.internal.web.PopulateEyeballForRestFilter.doFilterWhenLicensed(PopulateEyeballForRestFilter.java:33) at com.atlassian.servicedesk.internal.web.OperationalStatusAwareHttpFilter.doFilter(OperationalStatusAwareHttpFilter.java:31) ... 8 filtered at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) ... 53 filtered at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:76) ... 1 filtered at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:74) ... 16 filtered at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37) ... 20 filtered at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30) ... 5 filtered at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:181) at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:142) at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.runInContext(ReentrantThreadLocalBasedCodeContext.java:57) at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runInCustomerContext(CustomerContextServiceImpl.java:38) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.inCustomerContext(CustomerContextSettingFilter.java:169) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:128) at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:121) ... 4 filtered at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:32) ... 8 filtered at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21) ... 4 filtered at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36) ... 29 filtered at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25) ... 27 filtered at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
Steps to Reproduce
- Install and license JIRA Core, JIRA Service Desk, and JIRA Software
- Create JIRA Service Desk project, allow customers to add participants through portal
- Create Scrum board based off of existing JSD project.
- Create 2nd user
- Reproduce Lexorank error by running below SQL:
- DELETE FROM "AO_60DB71_LEXORANK" WHERE "TYPE" IN (0,2);
- Create issue in portal
- Attempt to add 2nd user to request using the "Share" button in the portal.
Expected Behavior
- Able to add participants despite lexorank error
Workaround
- Resolve the Lexorank error then try to add participants
- relates to
-
JSDSERVER-3733 Request Participants not addable, failing with empty error message due to other field validations
- Closed
-
JSDSERVER-5498 Empty required field causes portal share error "Failed to update request participants field"
- Closed
- mentioned in
-
Page Loading...