Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-63567

Jira EOL health check fails to execute if jira-healthcheck-eol.json file is missing from the home directory and instance has no access to the Marketplace

    XMLWordPrintable

Details

    Description

      Summary

      The 2.1.12 instance health plugin adds a check for the presence of jira-healthcheck-eol.json in your jira home directory to check EOL date. If that file is not present on the system and the system cannot reach the marketplace to check EOL the health check plugin will not run and will throw an error of 'there was an error performing the instance health check' in the GUI.

      Steps to Reproduce

      1. Install the latest JIRA instance health plugin
      2. Check that jira-healthcheck-eol.json does not exist in JIRA_HOME
      3. remove the ability of the system to connect to the marketplace
      4. Check the instance health tab in JIRA

      Expected Results

      The check does not fail if the file does not exist, as the data is persisted somewhere else (e.g.: in the database) or the file is recreated automatically.

      Actual Results

      The error "Unable to verify the End of Life date for version '7.2.x'. The check has not been performed." is returned, instead of performing the health check. An exception such as the below will appear in the logs:

      SupportHealthCheckThread-6 WARN      [c.a.j.p.healthcheck.util.SupportEolCheckUtil] Not able to retrieve the JIRA version information from MPAC
      

      Connection to MPAC fails and below stack trace can be seen:

      2016-12-20 10:29:40,691 SupportHealthCheckThread-2 ERROR ServiceRunner     [c.a.j.p.healthcheck.support.EolSupportHealthCheck] An error occurred when performing the EOL check, see the exceptions for more info
      java.net.UnknownHostException: marketplace.atlassian.com: nodename nor servname provided, or not known
       	at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
       	at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
       	at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
       	at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
       	at java.net.InetAddress.getAllByName(InetAddress.java:1192)
       	at java.net.InetAddress.getAllByName(InetAddress.java:1126)
       	at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
       	at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:111)
       	at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
       	at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
       	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
       	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
       	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
       	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
       	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
       	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
       	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
       	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
       	at com.atlassian.jira.plugins.healthcheck.util.SupportEolCheckUtil.fetchAndProcessVersions(SupportEolCheckUtil.java:65)
       	at com.atlassian.jira.plugins.healthcheck.support.EolSupportHealthCheck.doCheck(EolSupportHealthCheck.java:83)
       	at com.atlassian.jira.plugins.healthcheck.support.AbstractSupportHealthCheck.check(AbstractSupportHealthCheck.java:27)
       	at com.atlassian.support.healthcheck.impl.PluginSuppliedSupportHealthCheck.check(PluginSuppliedSupportHealthCheck.java:41)
       	at com.atlassian.support.healthcheck.concurrent.SupportHealthCheckTask.run(SupportHealthCheckTask.java:33)
       	at com.atlassian.support.healthcheck.concurrent.SupportHealthCheckProcess.run(SupportHealthCheckProcess.java:43)
       	at com.atlassian.support.healthcheck.thread.HealthCheckProcessCallable.call(HealthCheckProcessCallable.java:44)
       	at com.atlassian.support.healthcheck.thread.HealthCheckProcessCallable.call(HealthCheckProcessCallable.java:20)
       	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
       	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
       	at java.lang.Thread.run(Thread.java:745)
      

      Workaround

      Download the attached jira-healthcheck-eol.json and put it in your $JIRA_HOME directory.

      Notes

      Previously the EOL check did not take into account proxies when trying to establish a connection to the Atlassian Marketplace. However as of JRA-61781 this is fixed in JIRA Instance Health 2.1.20. There is an upgrade task that will create the file if it doesn't exist, however if the file is deleted or removed somehow (say deleted in a migration) the file is not created again (see related JRASERVER-65404).

      Attachments

        1. health_error.JPG
          health_error.JPG
          56 kB
        2. jira-healthcheck-eol.json
          0.2 kB
        3. jira-healthcheck-eol.json
          0.1 kB

        Issue Links

          Activity

            People

              Unassigned Unassigned
              ayakovlev@atlassian.com Andriy Yakovlev [Atlassian]
              Votes:
              8 Vote for this issue
              Watchers:
              18 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: