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

The JEPP mail plugin throws NullPointerExceptions (sometimes) during startup

      NOTE: This bug report is for JIRA Service Desk Server. Using JIRA Service Desk Cloud? See the corresponding bug report.

      The JEPP code base can throw NPEs during JIRA Service Desk startup, but only some times.

      The exception looks like this

      Failure simplicity.atlassian.net: JIRA is 503 Server Error: Service Unavailable
      com.atlassian.servicedesk:sd-general-health-check: The internal modules have failed to start : NullPointerException:
      java.lang.NullPointerException
      at com.atlassian.jira.internal.mail.processor.feature.channel.MailChannelStore.getMailChannelByKey(MailChannelStore.java:63)
      at com.atlassian.jira.internal.mail.processor.feature.channel.MailChannelManager.getMailChannelDefinitionByKey(MailChannelManager.java:270)
      at com.atlassian.jira.internal.mail.processor.feature.channel.DefaultChannelManager.getMailChannelByKey(DefaultChannelManager.java:46)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:497)
      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.$Proxy2999.getMailChannelByKey(Unknown Source)
      at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.JEPP.JEPPServiceImpl.getMailChannelByKey(JEPPServiceImpl.scala:26)
      at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailChannelSettingTestValidator.validMailChannel(EmailChannelSettingTestValidator.scala:66)
      at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.com$atlassian$servicedesk$internal$feature$emailchannel$emailplatform$EmailPlatformChannelManagerImpl$$isBrokenEmailChannelSetting(EmailPlatformChannelManagerImpl.scala:329)
      at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl$$anonfun$getValidOnDemandEmailChannels$1.apply(EmailPlatformChannelManagerImpl.scala:309)
      at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl$$anonfun$getValidOnDemandEmailChannels$1.apply(EmailPlatformChannelManagerImpl.scala:309)
      at scala.collection.TraversableLike$$anonfun$filter$1.apply(TraversableLike.scala:264)
      at scala.collection.immutable.List.foreach(List.scala:318)
      at scala.collection.TraversableLike$class.filter(TraversableLike.scala:263)
      at scala.collection.AbstractTraversable.filter(Traversable.scala:105)
      at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.getValidOnDemandEmailChannels(EmailPlatformChannelManagerImpl.scala:309)
      at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.checkODEmailChannelConnectivityAndUpdateExpiredPasswords(EmailPlatformChannelManagerImpl.scala:113)
      at com.atlassian.servicedesk.internal.feature.emailchannel.EmailChannelManagerDelegator.checkODEmailChannelConnectivityAndUpdateExpiredPasswords(EmailChannelManagerDelegator.scala:44)
      at com.atlassian.servicedesk.internal.email.mailstore.ODMailStoreChecker.verifyAndUpdateODMailSettingsPassword(ODMailStoreChecker.java:20)
      at com.atlassian.servicedesk.bootstrap.lifecycle.TenantAwareneODMailInitialiser.initialize(TenantAwareneODMailInitialiser.java:59)
      at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.loadSuccessModules(PluginLifeCycle.java:424)
      at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.loadDynamicModules(PluginLifeCycle.java:378)
      at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.runPluginStartupSideEffectsImpl(PluginLifeCycle.java:341)
      at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.access$000(PluginLifeCycle.java:38)
      at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle$1.run(PluginLifeCycle.java:272)
      at com.atlassian.servicedesk.bootstrap.lifecycle.LifecycleLock.writeImpl(LifecycleLock.java:115)
      at com.atlassian.servicedesk.bootstrap.lifecycle.LifecycleLock.runOnStartup(LifecycleLock.java:87)
      at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.runPluginStartupSideEffects(PluginLifeCycle.java:267)

      The code is blowing up here

          Option<MailChannelDTO> getMailChannelByKey(final Option<TransactionContext> txnContext, ChannelKey key)
          {
              final SelectClauseProvider clauseProvider = SelectClauseProvider.builder()
                      .where(table.MAIL_CHANNEL_KEY.eq(key.getKey()))
                      .build();
      
      

      Its either the key variable is null or the table variable. I suspect its the table variable.

      Here is what I think is happening

      • the JEPP API is made available via OSGi and JSD starts calling on it
      • however the JEPP plugin has not started yet and has not run its init code
      • that init code makes sure the AO is present and then calls queryDslHelper.init();
      • this then inits the "table" variable above

      Normally this works because JEPP starts before JSD say and this is all done before the caller can invoke API services.

      The recent JIRA 7.x lifecycle changes have made this problem more likely but its always been present. We have a number of internal tickets reporting this problem.

            [JSDSERVER-2165] The JEPP mail plugin throws NullPointerExceptions (sometimes) during startup

            Owen made changes -
            Workflow Original: JSD Bug Workflow v5 - TEMP [ 2304863 ] New: JAC Bug Workflow v3 [ 3125494 ]
            Status Original: Done [ 10044 ] New: Closed [ 6 ]
            Katherine Yabut made changes -
            Workflow Original: JSD Bug Workflow v5 [ 2058779 ] New: JSD Bug Workflow v5 - TEMP [ 2304863 ]
            Katherine Yabut made changes -
            Workflow Original: JSD Bug Workflow v5 - TEMP [ 2056131 ] New: JSD Bug Workflow v5 [ 2058779 ]
            Katherine Yabut made changes -
            Workflow Original: JSD Bug Workflow v5 [ 1955566 ] New: JSD Bug Workflow v5 - TEMP [ 2056131 ]
            Katherine Yabut made changes -
            Workflow Original: JSD Bug Workflow v4 [ 1615326 ] New: JSD Bug Workflow v5 [ 1955566 ]
            jonah (Inactive) made changes -
            Description Original: The JEPP code base can throw NPEs during JIRA Service Desk startup, but only some times.

            The exception looks like this

            {quote}
            Failure simplicity.atlassian.net: JIRA is 503 Server Error: Service Unavailable
            com.atlassian.servicedesk:sd-general-health-check: The internal modules have failed to start : NullPointerException:
             java.lang.NullPointerException
            at com.atlassian.jira.internal.mail.processor.feature.channel.MailChannelStore.getMailChannelByKey(MailChannelStore.java:63)
            at com.atlassian.jira.internal.mail.processor.feature.channel.MailChannelManager.getMailChannelDefinitionByKey(MailChannelManager.java:270)
            at com.atlassian.jira.internal.mail.processor.feature.channel.DefaultChannelManager.getMailChannelByKey(DefaultChannelManager.java:46)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:497)
            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.$Proxy2999.getMailChannelByKey(Unknown Source)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.JEPP.JEPPServiceImpl.getMailChannelByKey(JEPPServiceImpl.scala:26)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailChannelSettingTestValidator.validMailChannel(EmailChannelSettingTestValidator.scala:66)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.com$atlassian$servicedesk$internal$feature$emailchannel$emailplatform$EmailPlatformChannelManagerImpl$$isBrokenEmailChannelSetting(EmailPlatformChannelManagerImpl.scala:329)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl$$anonfun$getValidOnDemandEmailChannels$1.apply(EmailPlatformChannelManagerImpl.scala:309)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl$$anonfun$getValidOnDemandEmailChannels$1.apply(EmailPlatformChannelManagerImpl.scala:309)
            at scala.collection.TraversableLike$$anonfun$filter$1.apply(TraversableLike.scala:264)
            at scala.collection.immutable.List.foreach(List.scala:318)
            at scala.collection.TraversableLike$class.filter(TraversableLike.scala:263)
            at scala.collection.AbstractTraversable.filter(Traversable.scala:105)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.getValidOnDemandEmailChannels(EmailPlatformChannelManagerImpl.scala:309)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.checkODEmailChannelConnectivityAndUpdateExpiredPasswords(EmailPlatformChannelManagerImpl.scala:113)
            at com.atlassian.servicedesk.internal.feature.emailchannel.EmailChannelManagerDelegator.checkODEmailChannelConnectivityAndUpdateExpiredPasswords(EmailChannelManagerDelegator.scala:44)
            at com.atlassian.servicedesk.internal.email.mailstore.ODMailStoreChecker.verifyAndUpdateODMailSettingsPassword(ODMailStoreChecker.java:20)
            at com.atlassian.servicedesk.bootstrap.lifecycle.TenantAwareneODMailInitialiser.initialize(TenantAwareneODMailInitialiser.java:59)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.loadSuccessModules(PluginLifeCycle.java:424)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.loadDynamicModules(PluginLifeCycle.java:378)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.runPluginStartupSideEffectsImpl(PluginLifeCycle.java:341)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.access$000(PluginLifeCycle.java:38)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle$1.run(PluginLifeCycle.java:272)
            at com.atlassian.servicedesk.bootstrap.lifecycle.LifecycleLock.writeImpl(LifecycleLock.java:115)
            at com.atlassian.servicedesk.bootstrap.lifecycle.LifecycleLock.runOnStartup(LifecycleLock.java:87)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.runPluginStartupSideEffects(PluginLifeCycle.java:267)
            {quote}

            The code is blowing up here

            {code}
                Option<MailChannelDTO> getMailChannelByKey(final Option<TransactionContext> txnContext, ChannelKey key)
                {
                    final SelectClauseProvider clauseProvider = SelectClauseProvider.builder()
                            .where(table.MAIL_CHANNEL_KEY.eq(key.getKey()))
                            .build();

            {code}

            Its either the key variable is null or the table variable. I suspect its the table variable.

            Here is what I think is happening

            * the JEPP API is made available via OSGi and JSD starts calling on it
            * however the JEPP plugin has not started yet and has not run its init code
            * that init code makes sure the AO is present and then calls queryDslHelper.init();
            * this then inits the "table" variable above

            Normally this works because JEPP starts before JSD say and this is all done before the caller can invoke API services.

            The recent JIRA 7.x lifecycle changes have made this problem more likely but its always been present. We have a number of internal tickets reporting this problem.
            New: {panel:bgColor=#e7f4fa}
              *NOTE:* This bug report is for *JIRA Service Desk Server*. Using *JIRA Service Desk Cloud*? [See the corresponding bug report|http://jira.atlassian.com/browse/JSDCLOUD-2165].
              {panel}

            The JEPP code base can throw NPEs during JIRA Service Desk startup, but only some times.

            The exception looks like this

            {quote}
            Failure simplicity.atlassian.net: JIRA is 503 Server Error: Service Unavailable
            com.atlassian.servicedesk:sd-general-health-check: The internal modules have failed to start : NullPointerException:
             java.lang.NullPointerException
            at com.atlassian.jira.internal.mail.processor.feature.channel.MailChannelStore.getMailChannelByKey(MailChannelStore.java:63)
            at com.atlassian.jira.internal.mail.processor.feature.channel.MailChannelManager.getMailChannelDefinitionByKey(MailChannelManager.java:270)
            at com.atlassian.jira.internal.mail.processor.feature.channel.DefaultChannelManager.getMailChannelByKey(DefaultChannelManager.java:46)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:497)
            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.$Proxy2999.getMailChannelByKey(Unknown Source)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.JEPP.JEPPServiceImpl.getMailChannelByKey(JEPPServiceImpl.scala:26)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailChannelSettingTestValidator.validMailChannel(EmailChannelSettingTestValidator.scala:66)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.com$atlassian$servicedesk$internal$feature$emailchannel$emailplatform$EmailPlatformChannelManagerImpl$$isBrokenEmailChannelSetting(EmailPlatformChannelManagerImpl.scala:329)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl$$anonfun$getValidOnDemandEmailChannels$1.apply(EmailPlatformChannelManagerImpl.scala:309)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl$$anonfun$getValidOnDemandEmailChannels$1.apply(EmailPlatformChannelManagerImpl.scala:309)
            at scala.collection.TraversableLike$$anonfun$filter$1.apply(TraversableLike.scala:264)
            at scala.collection.immutable.List.foreach(List.scala:318)
            at scala.collection.TraversableLike$class.filter(TraversableLike.scala:263)
            at scala.collection.AbstractTraversable.filter(Traversable.scala:105)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.getValidOnDemandEmailChannels(EmailPlatformChannelManagerImpl.scala:309)
            at com.atlassian.servicedesk.internal.feature.emailchannel.emailplatform.EmailPlatformChannelManagerImpl.checkODEmailChannelConnectivityAndUpdateExpiredPasswords(EmailPlatformChannelManagerImpl.scala:113)
            at com.atlassian.servicedesk.internal.feature.emailchannel.EmailChannelManagerDelegator.checkODEmailChannelConnectivityAndUpdateExpiredPasswords(EmailChannelManagerDelegator.scala:44)
            at com.atlassian.servicedesk.internal.email.mailstore.ODMailStoreChecker.verifyAndUpdateODMailSettingsPassword(ODMailStoreChecker.java:20)
            at com.atlassian.servicedesk.bootstrap.lifecycle.TenantAwareneODMailInitialiser.initialize(TenantAwareneODMailInitialiser.java:59)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.loadSuccessModules(PluginLifeCycle.java:424)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.loadDynamicModules(PluginLifeCycle.java:378)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.runPluginStartupSideEffectsImpl(PluginLifeCycle.java:341)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.access$000(PluginLifeCycle.java:38)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle$1.run(PluginLifeCycle.java:272)
            at com.atlassian.servicedesk.bootstrap.lifecycle.LifecycleLock.writeImpl(LifecycleLock.java:115)
            at com.atlassian.servicedesk.bootstrap.lifecycle.LifecycleLock.runOnStartup(LifecycleLock.java:87)
            at com.atlassian.servicedesk.bootstrap.lifecycle.PluginLifeCycle.runPluginStartupSideEffects(PluginLifeCycle.java:267)
            {quote}

            The code is blowing up here

            {code}
                Option<MailChannelDTO> getMailChannelByKey(final Option<TransactionContext> txnContext, ChannelKey key)
                {
                    final SelectClauseProvider clauseProvider = SelectClauseProvider.builder()
                            .where(table.MAIL_CHANNEL_KEY.eq(key.getKey()))
                            .build();

            {code}

            Its either the key variable is null or the table variable. I suspect its the table variable.

            Here is what I think is happening

            * the JEPP API is made available via OSGi and JSD starts calling on it
            * however the JEPP plugin has not started yet and has not run its init code
            * that init code makes sure the AO is present and then calls queryDslHelper.init();
            * this then inits the "table" variable above

            Normally this works because JEPP starts before JSD say and this is all done before the caller can invoke API services.

            The recent JIRA 7.x lifecycle changes have made this problem more likely but its always been present. We have a number of internal tickets reporting this problem.
            jonah (Inactive) made changes -
            Link New: This issue relates to JSDCLOUD-2165 [ JSDCLOUD-2165 ]
            Katherine Yabut made changes -
            Workflow Original: JSD Bug Workflow v2 [ 1602654 ] New: JSD Bug Workflow v4 [ 1615326 ]
            Owen made changes -
            Workflow Original: JSD Bug Workflow [ 1398829 ] New: JSD Bug Workflow v2 [ 1602654 ]
            Owen Sanico [Administrative Account] made changes -
            Workflow Original: TTT: Simple Issue Tracking Workflow [ 930639 ] New: JSD Bug Workflow [ 1398829 ]

              bbaker ɹǝʞɐq pɐɹq
              bbaker ɹǝʞɐq pɐɹq
              Affected customers:
              0 This affects my team
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: