Uploaded image for project: 'Jira Cloud'
  1. Jira Cloud
  2. JRACLOUD-68040

Updating issue fields fails in Jira fails with exception

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Medium
    • Issue - Navigation
    • None

    Description

      Summary

      When updating a cloned issue field, an exception is thrown and the field does not get updated.

      Environment

      Jira Cloud

      Steps to Reproduce

      1. Create an issue
      2. Update a system or custom field either via REST API or via the UI

      Expected Results

      The field gets updated.

      Actual Results

      The below exception is thrown in Jira logs

      com.querydsl.core.QueryException: Caught BatchUpdateException for insert into "public"."jiraissuetokens" ("field", "issueid", "tokens")
      values (?, ?, ?)
      	at com.querydsl.sql.support.JavaSE7SQLExceptionWrapper.wrap(JavaSE7SQLExceptionWrapper.java:41)
      	at com.querydsl.sql.DefaultSQLExceptionTranslator.translate(DefaultSQLExceptionTranslator.java:48)
      	at com.querydsl.sql.Configuration.translate(Configuration.java:459)
      	at com.querydsl.sql.dml.SQLInsertClause.execute(SQLInsertClause.java:445)
      	at com.atlassian.jira.issue.search.textsearch.DefaultTextTokensManager.lambda$createTokens$11(DefaultTextTokensManager.java:193)
      	at com.atlassian.jira.util.collect.Streams$2.tryAdvance(Streams.java:124)
      	at java.util.Spliterator.forEachRemaining(Spliterator.java:326)
      	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
      	at com.atlassian.jira.issue.search.textsearch.DefaultTextTokensManager.createTokens(DefaultTextTokensManager.java:190)
      	at com.atlassian.jira.issue.search.textsearch.DefaultTextTokensManager.lambda$updateTokensForModifiedFields$4(DefaultTextTokensManager.java:79)
      	at com.atlassian.jira.database.DefaultQueryDslAccessor$LegacyOfBizConnectionProvider.lambda$execute$0(DefaultQueryDslAccessor.java:156)
      	at com.atlassian.jira.database.DefaultQueryDslAccessor.executeWithLegacyOfBizTransaction(DefaultQueryDslAccessor.java:84)
      	at com.atlassian.jira.database.DefaultQueryDslAccessor.access$400(DefaultQueryDslAccessor.java:18)
      	at com.atlassian.jira.database.DefaultQueryDslAccessor$LegacyOfBizConnectionProvider.execute(DefaultQueryDslAccessor.java:155)
      	at com.atlassian.jira.issue.search.textsearch.DefaultTextTokensManager.updateTokensForModifiedFields(DefaultTextTokensManager.java:77)
      	at com.atlassian.jira.issue.managers.DefaultIssueManager.updateIssue(DefaultIssueManager.java:803)
      	at com.atlassian.jira.bc.issue.DefaultIssueService.update(DefaultIssueService.java:330)
      	at com.atlassian.jira.bc.issue.DefaultIssueService.update(DefaultIssueService.java:304)
      	... 2 filtered
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
      	at com.sun.proxy.$Proxy548.update(Unknown Source)
      	... 2 filtered
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
      	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$1.run(ServiceTCCLInterceptor.java:61)
      	at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:130)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokePrivileged(ServiceTCCLInterceptor.java:58)
      	at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:50)
      	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:208)
      	at com.sun.proxy.$Proxy3378.update(Unknown Source)
      	at com.atlassian.servicedesk.internal.customfields.participants.ParticipantsCustomFieldManagerImpl.updateUserParticipants(ParticipantsCustomFieldManagerImpl.java:116)
      	at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalManagerImpl.updateParticipantsField(RequestParticipantsInternalManagerImpl.java:157)
      	at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalManagerImpl.lambda$addParticipants$5(RequestParticipantsInternalManagerImpl.java:82)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$null$0(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:886)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$then$1(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:886)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.then(EitherStep2.java:20)
      	at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalManagerImpl.addParticipants(RequestParticipantsInternalManagerImpl.java:78)
      	at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalServiceImpl.lambda$addParticipants$2(RequestParticipantsInternalServiceImpl.java:74)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:886)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep1.then(EitherStep1.java:18)
      	at com.atlassian.servicedesk.internal.feature.reqparticipants.field.RequestParticipantsInternalServiceImpl.addParticipants(RequestParticipantsInternalServiceImpl.java:74)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManagerImpl.addParticipantsWithExistingAccounts(IncomingEmailManagerImpl.java:353)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailManagerImpl.processAdditionalRequestParticipantSignupsForIssue(IncomingEmailManagerImpl.java:270)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$null$28(IncomingEmailServiceImpl.java:324)
      	at io.atlassian.fugue.Either$AbstractProjection.forEach(Either.java:714)
      	at io.atlassian.fugue.Either.forEach(Either.java:280)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$addServiceDeskCommentToIssue$29(IncomingEmailServiceImpl.java:323)
      	at io.atlassian.fugue.Either$AbstractProjection.forEach(Either.java:714)
      	at io.atlassian.fugue.Either.forEach(Either.java:280)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.addServiceDeskCommentToIssue(IncomingEmailServiceImpl.java:322)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$addCommentToIssue$27(IncomingEmailServiceImpl.java:301)
      	at io.atlassian.fugue.Option$Some.fold(Option.java:444)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.addCommentToIssue(IncomingEmailServiceImpl.java:298)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$createNewOrCommentOnIssueWithMailChannelAsEmailSender$18(IncomingEmailServiceImpl.java:184)
      	at io.atlassian.fugue.Option$Some.fold(Option.java:444)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewOrCommentOnIssueWithMailChannelAsEmailSender(IncomingEmailServiceImpl.java:174)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$null$14(IncomingEmailServiceImpl.java:162)
      	at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:141)
      	at com.atlassian.servicedesk.internal.utils.context.ReentrantThreadLocalBasedCodeContext.runInContext(ReentrantThreadLocalBasedCodeContext.java:59)
      	at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runInCustomerContext(CustomerContextServiceImpl.java:39)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.inCustomerContext(IncomingEmailServiceImpl.java:431)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$inEmailContext$40(IncomingEmailServiceImpl.java:424)
      	at com.atlassian.pocketknife.internal.util.runner.AuthenticationContextUtilImpl.runAs(AuthenticationContextUtilImpl.java:56)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.inEmailContext(IncomingEmailServiceImpl.java:426)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$doCreateNewOrCommentOnIssueWithMailChannel$15(IncomingEmailServiceImpl.java:162)
      	at io.atlassian.fugue.Either$Right.fold(Either.java:620)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.doCreateNewOrCommentOnIssueWithMailChannel(IncomingEmailServiceImpl.java:160)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$createNewOrCommentOnIssueWithMailChannel$6(IncomingEmailServiceImpl.java:135)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$null$0(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:886)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.lambda$then$1(EitherStep2.java:20)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:886)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep2.then(EitherStep2.java:20)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.createNewOrCommentOnIssueWithMailChannel(IncomingEmailServiceImpl.java:135)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.lambda$processEmailWithMailChannel$1(IncomingEmailServiceImpl.java:126)
      	at io.atlassian.fugue.Either$RightProjection.flatMap(Either.java:886)
      	at io.atlassian.fugue.Either.flatMap(Either.java:231)
      	at com.atlassian.pocketknife.step.EitherStep1.then(EitherStep1.java:18)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.IncomingEmailServiceImpl.processEmailWithMailChannel(IncomingEmailServiceImpl.java:126)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.processMessage(SDMailHandler.java:76)
      	at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.handler.SDMailHandler.handleReplyMessage(SDMailHandler.java:58)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailHandlerWorker.handle(MailHandlerWorker.java:63)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.processMailItem(MailProcessorWorker.java:107)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.lambda$process$0(MailProcessorWorker.java:77)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.lambda$execute$0(DatabaseAccessorImpl.java:54)
      	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.executeInternal(DefaultTransactionalExecutor.java:88)
      	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor$1.execute(DefaultTransactionalExecutor.java:42)
      	at com.atlassian.jira.internal.sal.rdbms.JiraHostConnectionAccessor.lambda$borrowConnectionAndExecute$0(JiraHostConnectionAccessor.java:62)
      	at com.atlassian.jira.database.DatabaseAccessorImpl.executeQuery(DatabaseAccessorImpl.java:36)
      	at com.atlassian.jira.internal.sal.rdbms.JiraHostConnectionAccessor.borrowConnectionAndExecute(JiraHostConnectionAccessor.java:50)
      	at com.atlassian.jira.internal.sal.rdbms.JiraHostConnectionAccessor.execute(JiraHostConnectionAccessor.java:35)
      	at com.atlassian.sal.core.rdbms.DefaultTransactionalExecutor.execute(DefaultTransactionalExecutor.java:39)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.execute(DatabaseAccessorImpl.java:52)
      	at com.atlassian.pocketknife.internal.querydsl.DatabaseAccessorImpl.runInNewTransaction(DatabaseAccessorImpl.java:32)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorWorker.process(MailProcessorWorker.java:72)
      	at com.atlassian.jira.internal.mail.processor.feature.processor.MailProcessorService.run(MailProcessorService.java:54)
      	at com.atlassian.jira.internal.mail.processor.services.MailProcessorExecutor.run(MailProcessorExecutor.java:42)
      	at com.atlassian.jira.internal.mail.processor.services.AbstractMailExecutor.execute(AbstractMailExecutor.java:39)
      	at com.atlassian.jira.internal.mail.processor.services.MailJobRunner.runJob(MailJobRunner.java:39)
      	at com.atlassian.scheduler.core.JobLauncher.runJob(JobLauncher.java:195)
      	at com.atlassian.scheduler.core.JobLauncher.launchAndBuildResponse(JobLauncher.java:168)
      	at com.atlassian.scheduler.core.JobLauncher.launchJob(JobLauncher.java:139)
      	at com.atlassian.scheduler.core.JobLauncher.launch(JobLauncher.java:129)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.launchJob(CaesiumSchedulerService.java:509)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJob(CaesiumSchedulerService.java:486)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeClusteredJobWithRecoveryGuard(CaesiumSchedulerService.java:491)
      	at com.atlassian.scheduler.caesium.impl.CaesiumSchedulerService.executeQueuedJob(CaesiumSchedulerService.java:437)
      	at com.atlassian.jira.scheduler.JiraCaesiumSchedulerService.executeQueuedJob(JiraCaesiumSchedulerService.java:85)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeJob(SchedulerQueueWorker.java:65)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.executeNextJob(SchedulerQueueWorker.java:59)
      	at com.atlassian.scheduler.caesium.impl.SchedulerQueueWorker.run(SchedulerQueueWorker.java:34)
      	at java.lang.Thread.run(Thread.java:745)
      	Suppressed: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "jiraissuetokens_pkey"
        Detail: Key (issueid, field)=(158099, summary) already exists.
      		at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2477)
      		at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2190)
      		at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:472)
      		at org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:791)
      		at org.postgresql.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1563)
      	... 2 filtered
      		at java.lang.reflect.Method.invoke(Method.java:498)
      		at org.vibur.dbcp.proxy.AbstractInvocationHandler.targetInvoke(AbstractInvocationHandler.java:144)
      		at org.vibur.dbcp.proxy.StatementInvocationHandler.on(StatementInvocationHandler.java:161)
      		at com.atlassian.jira.connpool.JiraViburConnectionPoolProvider.lambda$null$5(JiraViburConnectionPoolProvider.java:149)
      		at org.vibur.dbcp.proxy.StatementInvocationHandler.processExecute(StatementInvocationHandler.java:123)
      		at org.vibur.dbcp.proxy.StatementInvocationHandler.restrictedInvoke(StatementInvocationHandler.java:85)
      		at org.vibur.dbcp.proxy.StatementInvocationHandler.restrictedInvoke(StatementInvocationHandler.java:37)
      		at org.vibur.dbcp.proxy.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
      		at com.sun.proxy.$Proxy8.executeBatch(Unknown Source)
      		at com.querydsl.sql.dml.AbstractSQLClause.executeBatch(AbstractSQLClause.java:192)
      		at com.querydsl.sql.dml.AbstractSQLClause.executeBatch(AbstractSQLClause.java:202)
      		at com.querydsl.sql.dml.SQLInsertClause.execute(SQLInsertClause.java:439)
      		... 130 more
      Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into "public"."jiraissuetokens" ("field", "issueid", "tokens")
      values ('summary', 158099, '''boxes'' ''re'' ''box'' ''entered'' ''enter'' ''wrong''') was aborted: ERROR: duplicate key value violates unique constraint "jiraissuetokens_pkey"
        Detail: Key (issueid, field)=(158099, summary) already exists.  Call getNextException to see other errors in the batch.
      	at org.postgresql.jdbc.BatchResultHandler.handleError(BatchResultHandler.java:148)
      	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2191)
      	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:472)
      	at org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:791)
      	at org.postgresql.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1563)
      	... 2 filtered
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at org.vibur.dbcp.proxy.AbstractInvocationHandler.targetInvoke(AbstractInvocationHandler.java:144)
      	at org.vibur.dbcp.proxy.StatementInvocationHandler.on(StatementInvocationHandler.java:161)
      	at com.atlassian.jira.connpool.JiraViburConnectionPoolProvider.lambda$null$5(JiraViburConnectionPoolProvider.java:149)
      	at org.vibur.dbcp.proxy.StatementInvocationHandler.processExecute(StatementInvocationHandler.java:123)
      	at org.vibur.dbcp.proxy.StatementInvocationHandler.restrictedInvoke(StatementInvocationHandler.java:85)
      	at org.vibur.dbcp.proxy.StatementInvocationHandler.restrictedInvoke(StatementInvocationHandler.java:37)
      	at org.vibur.dbcp.proxy.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
      	at com.sun.proxy.$Proxy8.executeBatch(Unknown Source)
      	at com.querydsl.sql.dml.AbstractSQLClause.executeBatch(AbstractSQLClause.java:192)
      	at com.querydsl.sql.dml.AbstractSQLClause.executeBatch(AbstractSQLClause.java:202)
      	at com.querydsl.sql.dml.SQLInsertClause.execute(SQLInsertClause.java:439)
      	... 130 more
      	[CIRCULAR REFERENCE:org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "jiraissuetokens_pkey"
        Detail: Key (issueid, field)=(158099, summary) already exists.]
      

      Notes

      Issue is not reproducible in all customer systems.

      Workaround

      There is no workaround available.

      Attachments

        Issue Links

          Activity

            People

              cfuller crf
              malonso@atlassian.com Miguel Alonso
              Votes:
              1 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: