Uploaded image for project: 'Jira Service Management Data Center'
  1. Jira Service Management Data Center
  2. JSDSERVER-2040

Automation page is inaccessible due to null value in database

    XMLWordPrintable

Details

    Description

      Summary

      When attempting to access JIRA Service Desk Automation Settings, The browser becomes unresponsive and fails to return anything. (The page is grayed out). When this occurs an exception is thrown in the logs:

      2015-06-25 08:11:21,047 http-bio-8080-exec-24 ERROR captainplannet 491x1855x1 1r3cawh 192.168.0.1 /rest/servicedesk/automation/1/pages/settings/automation/ABC [common.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: java.lang.NullPointerException: null value
      com.atlassian.cache.CacheException: java.lang.NullPointerException: null value
      	at com.atlassian.cache.memory.DelegatingCache$DelegatingLoadingCache.get(DelegatingCache.java:322)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.RuleSetManagerImpl.getAllActiveRuleSets(RuleSetManagerImpl.java:153)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.RuleSetManagerImpl.getActiveRuleSetsByProject(RuleSetManagerImpl.java:137)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.RuleSetServiceImpl.getActiveRuleSetsByProject(RuleSetServiceImpl.java:144)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.RuleSetServiceImpl.getActiveRuleSetsByProject(RuleSetServiceImpl.java:152)
      	at com.atlassian.servicedesk.plugins.automation.internal.rest.AutomationSettingsPageResource.getAutomationPage(AutomationSettingsPageResource.java:99)  <+3> (NativeMethodAccessorImpl.java:57) (DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)  <+18> (DispatchProviderHelper.java:234) (DispatchProviderHelper.java:100) (DefaultMethodInvocation.java:61) (ExpandInterceptor.java:38) (DefaultMethodInvocation.java:61) (DispatchProviderHelper.java:132) (DispatchProviderHelper.java:230) (ResourceJavaMethodDispatcher.java:75) (HttpMethodRule.java:288) (ResourceClassRule.java:108) (RightHandPathRule.java:147) (RootResourceClassesRule.java:84) (WebApplicationImpl.java:1469) (WebApplicationImpl.java:1400) (WebApplicationImpl.java:1349) (WebApplicationImpl.java:1339) (WebComponent.java:416) (ServletContainer.java:537)
      	at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:178)  <+1> (ServletContainer.java:795)
      	at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:73)  <+16> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) (RestServletUtilsUpdaterFilter.java:26) (RestServletUtilsUpdaterFilter.java:40) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70) (ContextFilter.java:25) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.servicedesk.internal.web.RedirectExternalCustomerToPortalFilter.doFilter(RedirectExternalCustomerToPortalFilter.scala:18)  <+4> (AbstractHttpFilter.java:31) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:37)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.plugins.cors.CorsFilter.doFilter(CorsFilter.java:65)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:36)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:60)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:92)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:56)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36)  <+21> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AccessLogFilter.java:107) (AccessLogFilter.java:91) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (XsrfTokenAdditionRequestFilter.java:54) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (PageBuilderFilter.java:90) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (CommittedResponseHtmlErrorRecoveryFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70)
      	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)  <+22> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (SecurityFilter.java:239) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (TrustedApplicationsFilter.java:100) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (BaseLoginFilter.java:172) (JiraLoginFilter.java:70) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70) (OAuthFilter.java:79) (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:40)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)  <+9> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractJohnsonFilter.java:71) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208)
      	at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
      	at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
      	at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)  <+5> (UrlRewriteFilter.java:394) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (IteratingFilterChain.java:46) (DelegatingPluginFilter.java:70)
      	at com.atlassian.analytics.client.filter.JiraAnalyticsFilter.doFilter(JiraAnalyticsFilter.java:40)
      	at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)  <+3> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (DelegatingPluginFilter.java:70)
      	at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:61)  <+45> (DelegatingPluginFilter.java:78) (IteratingFilterChain.java:42) (ServletFilterModuleContainerFilter.java:77) (ServletFilterModuleContainerFilter.java:63) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractCachingFilter.java:33) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (AbstractEncodingFilter.java:41) (AbstractHttpFilter.java:31) (PathMatchingEncodingFilter.java:45) (AbstractHttpFilter.java:31) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (JiraStartupChecklistFilter.java:79) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (MultipartBoundaryCheckFilter.java:41) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (ChainedFilterStepRunner.java:87) (JiraFirstFilter.java:61) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (GzipFilter.java:115) (GzipFilter.java:92) (JiraGzipFilter.java:56) (ApplicationFilterChain.java:241) (ApplicationFilterChain.java:208) (StandardWrapperValve.java:220) (StandardContextValve.java:122) (AuthenticatorBase.java:501) (StandardHostValve.java:171) (ErrorReportValve.java:103) (StandardEngineValve.java:116) (AccessLogValve.java:950) (CoyoteAdapter.java:408) (AbstractHttp11Processor.java:1070) (AbstractProtocol.java:611) (JIoEndpoint.java:316)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: java.lang.NullPointerException: null value
      	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)
      	at com.google.common.collect.ImmutableMap.entryOf(ImmutableMap.java:139)
      	at com.google.common.collect.ImmutableMap$Builder.put(ImmutableMap.java:178)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.IfConditionConfigDataDao.loadConfigDataFromDbRows(IfConditionConfigDataDao.java:79)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.IfConditionConfigDataDao.getForIfConditionConfigWithId(IfConditionConfigDataDao.java:71)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.IfConditionConfigDao.loadIfConditionConfigsFromDbRows(IfConditionConfigDao.java:101)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.IfConditionConfigDao.getAllForIfThenWithId(IfConditionConfigDao.java:93)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.IfThenDao.loadIfThenFromDbRow(IfThenDao.java:149)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.IfThenDao.loadIfThensFromDbRows(IfThenDao.java:139)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.IfThenDao.getAllForRuleWithId(IfThenDao.java:131)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.RuleDao.loadRuleFromDbRow(RuleDao.java:141)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.RuleDao.loadRulesFromDbRows(RuleDao.java:130)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.RuleDao.getAllForRuleSetRevisionWithId(RuleDao.java:122)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.RuleSetRevisionDao.buildRuleSetRevision(RuleSetRevisionDao.java:193)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.RuleSetRevisionDao.getRuleSetRevision(RuleSetRevisionDao.java:188)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.dao.querydsl.RuleSetDaoImpl.getRuleSetRevision(RuleSetDaoImpl.java:204)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.RuleSetManagerImpl$RuleSetByRevisionIdCacheLoader.load(RuleSetManagerImpl.java:342)
      	at com.atlassian.servicedesk.plugins.automation.internal.configuration.ruleset.RuleSetManagerImpl$RuleSetByRevisionIdCacheLoader.load(RuleSetManagerImpl.java:336)
      	at com.atlassian.cache.memory.MemoryCacheManager$3$1.load(MemoryCacheManager.java:137)
      	at com.atlassian.cache.memory.BlockingCacheLoader.load(BlockingCacheLoader.java:51)
      	at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3573)
      	at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2350)
      	at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2313)
      	at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2228)
      	at com.google.common.cache.LocalCache.get(LocalCache.java:3970)
      	at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3974)
      	at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4834)
      	at com.atlassian.cache.memory.DelegatingCache$DelegatingLoadingCache.get(DelegatingCache.java:316)
      	... 197 more
      

      Environment

      This issue is experienced when using Oracle as a Database.

      Steps to Reproduce

      1. Attempt to access the 'Automation' section of JIRA Service Desk as in: Automating your service desk
      2. Observe that the area is inaccessible, and the browser fails to respond after clicking the 'Automation' link.

      Expected Results

      The Automation configuration should be shown when clicking the 'Automation' link.

      Actual Results

      The Screen greys out, and the user is unable to modify the automations of any service desk, an error is shown in the atlassian-jira.log

      Notes and Workaround.

      This is caused by an empty value in the following table: AO_9B2E3B_IF_COND_CONF_DATA on in the CONFIG_DATA_VALUE column. Oracle is treating this as a null value as per http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements005.htm#SQLRF51081 and subsequently users experience this bug.

      To check if this issue applies to your instance, run the following SQL:

      select NVL("CONFIG_DATA_VALUE",'-NULL-') AS "CONFIG_DATA_VALUE"  from "AO_9B2E3B_IF_COND_CONF_DATA";
      

      And check for a NULL value (shown as NULL in the CONFIG_DATA_VALUE column.

      If you identify that there are any 'null' values, modify the database so that the 'null' value is set to an empty value.

      The following example (you will need to change this for your database) will update the NULL value for the record with the ID=10:

      update "AO_9B2E3B_IF_COND_CONF_DATA" set "CONFIG_DATA_VALUE"='' where "ID" =10;
      

      Note: We recommend backing up your database before modifying the database.
      Additionally, direct database Modifications are not supported, however if you need assistance with determining the correct query to run, please contact Atlassian Support.

      The root cause of this issue is unknown at this time. Please feel free to vote, comment or discuss any observation of this issue in your environment or contact Atlassian Support as we would like to get to the bottom of this issue.

      Attachments

        Issue Links

          Activity

            People

              lpham Liem
              majones Matt Jones (Inactive)
              Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Backbone Issue Sync