Hello Community,
I've been using a very old version of JIRA, and only today updated to 7.9.2.
I am hosting Jira myself since I started using it, and my server runs on NetBSD/amd64 7.1.2 with the latest OpenJDK 8 available through pkgsrc.
Up until this update it was never a problem starting and accessing Jira, but since the update, I get the following error when I try accessing it via web-browser:
java.lang.UnsupportedOperationException: Current thread CPU time measurement is not supported.
at sun.management.ThreadImpl.verifyCurrentThreadCpuTime(ThreadImpl.java:210) [?:1.8.0_162-internal]
at sun.management.ThreadImpl.getCurrentThreadUserTime(ThreadImpl.java:276) [?:1.8.0_162-internal]
at com.atlassian.jira.servermetrics.RequestMetricsCollector.getCurrentThreadUserDuration(RequestMetricsCollector.java:144) [classes/:?]
at com.atlassian.jira.servermetrics.RequestMetricsCollector.started(RequestMetricsCollector.java:43) [classes/:?]
at com.atlassian.jira.servermetrics.NestedRequestsMetricsCollector.startCollectionInCurrentThread(NestedRequestsMetricsCollector.java:33) [classes/:?]
at com.atlassian.jira.servermetrics.MultiThreadedRequestMetricsCollector.startCollectionInCurrentThread(MultiThreadedRequestMetricsCollector.java:26) [classes/:?]
at com.atlassian.jira.servermetrics.RequestMetricsDispatcher.startCollection(RequestMetricsDispatcher.java:56) [classes/:?]
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.lambda$startCollection$0(MetricsCollectorFilter.java:32) [classes/:?]
at java.util.Optional.map(Optional.java:215) [?:1.8.0_162-internal]
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.startCollection(MetricsCollectorFilter.java:32) [classes/:?]
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:24) [classes/:?]
at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) [atlassian-core-5.0.8.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:8.5.6]
at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter(ChainedFilterStepRunner.java:74) [classes/:?]
at com.atlassian.jira.web.filters.JiraFirstFilter.doFilter(JiraFirstFilter.java:57) [classes/:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:8.5.6]
at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:115) [atlassian-gzipfilter-3.0.0.jar:?]
at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:92) [atlassian-gzipfilter-3.0.0.jar:?]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:8.5.6]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:8.5.6]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [catalina.jar:8.5.6]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108) [catalina.jar:8.5.6]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.6]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.5.6]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.6]
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620) [catalina.jar:8.5.6]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [catalina.jar:8.5.6]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:784) [tomcat-coyote.jar:8.5.6]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.6]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:802) [tomcat-coyote.jar:8.5.6]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1410) [tomcat-coyote.jar:8.5.6]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.6]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_162-internal]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_162-internal]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.6]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_162-internal]
Now, in general, best practice before calling a method like
getCurrentThreadUserTime()
or anything like that, is to call for
isCurrentThreadCpuTimeSupported()
This is at least the quintessence of the JavaDoc, as you can read here.
Excerpt:
Thread CPU time
A Java virtual machine implementation may support measuring the CPU time for the current thread, for any thread, or for no threads.
The isThreadCpuTimeSupported() method can be used to determine if a Java virtual machine supports measuring of the CPU time for any thread. The isCurrentThreadCpuTimeSupported() method can be used to determine if a Java virtual machine supports measuring of the CPU time for the current thread. A Java virtual machine implementation that supports CPU time measurement for any thread will also support that for the current thread.
The CPU time provided by this interface has nanosecond precision but not necessarily nanosecond accuracy.
A Java virtual machine may disable CPU time measurement by default. The isThreadCpuTimeEnabled() and setThreadCpuTimeEnabled(boolean) methods can be used to test if CPU time measurement is enabled and to enable/disable this support respectively. Enabling thread CPU measurement could be expensive in some Java virtual machine implementations.
However, this seems to be ignored here, leading to the case that there are systems (mainly BSD and BSD-like systems), on which Jira will not work anymore.
I have searched the internet and this community a while in order to check if there's already a solution for this, as I am rarely the first to encounter such things. As I didn't find any, I am now posting this, and ask, if anyone here knows a solution - is there an option to disable this collecting of metrics, or is there anything else I can do...I wouldn't want to go back to an older version of Jira, just because of this...
Any help is appreciated, thank you very much!
Volkmar Seifert