Shutting down Bitbucket throws an error in the logs file

XMLWordPrintable

    • 8
    • Severity 3 - Minor
    • 2

      Issue Summary

      Shutting down the Bitbucket application issues an error in the application log. However it doesn't seem to have an impact on the performance of the application.

      This is reproducible on Data Center: Yes

      Steps to Reproduce

      1. Start up a Btbucketr instance and perform some activities such as browse through a couple of repositories etc
      2. Shut down the instance. 

      Expected Results

      The application gets shutdown gracefully.

      Actual Results

      The below error is thrown in the atlassian-bitbucket.log file:

      2024-02-09 12:38:29,538 ERROR [SpringApplicationShutdownHook]  c.a.e.i.AsynchronousAbleEventDispatcher There was an exception thrown trying to dispatch event [com.atlassian.config.lifecycle.events.ApplicationStoppingEvent@2415d5b5] from the invoker [com.atlassian.event.internal.ComparableListenerInvoker@3d5af776]
      java.lang.RuntimeException: Can't stop an already stopped recording.. Listener: com.atlassian.troubleshooting.jfr.manager.DefaultJfrRecordingManager event: com.atlassian.config.lifecycle.events.ApplicationStoppingEvent
      	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:53)
      	at com.atlassian.diagnostics.internal.platform.monitor.event.EventSystemMonitor.invokeMonitored(EventSystemMonitor.java:105)
      	at com.atlassian.diagnostics.internal.platform.monitor.event.MonitoredListenerInvoker.invoke(MonitoredListenerInvoker.java:38)
      	at com.atlassian.event.internal.ComparableListenerInvoker.invoke(ComparableListenerInvoker.java:48)
      	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$null$0(AsynchronousAbleEventDispatcher.java:37)
      	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:85)
      	at com.atlassian.diagnostics.internal.platform.monitor.event.MonitoredEventDispatcher.dispatch(MonitoredEventDispatcher.java:36)
      	at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:114)
      	at com.atlassian.event.internal.LockFreeEventPublisher.publish(LockFreeEventPublisher.java:40)
      	at com.atlassian.stash.internal.event.TransactionAwareEventPublisher.internalPublish(TransactionAwareEventPublisher.java:159)
      	at com.atlassian.stash.internal.event.TransactionAwareEventPublisher.publish(TransactionAwareEventPublisher.java:103)
      	at com.atlassian.stash.internal.config.ConfigLifecycle.stop(ConfigLifecycle.java:45)
      	at com.atlassian.stash.internal.spring.AbstractSmartLifecycle.stop(AbstractSmartLifecycle.java:36)
      	at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:235)
      	at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:54)
      	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:374)
      	at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:207)
      	at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:130)
      	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078)
      	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1032)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
      	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
      	at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
      	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.stopTomcat(TomcatWebServer.java:273)
      	at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.stop(TomcatWebServer.java:331)
      	at org.springframework.boot.web.servlet.context.WebServerStartStopLifecycle.stop(WebServerStartStopLifecycle.java:52)
      	at org.springframework.context.SmartLifecycle.stop(SmartLifecycle.java:117)
      	at org.springframework.context.support.DefaultLifecycleProcessor.doStop(DefaultLifecycleProcessor.java:235)
      	at org.springframework.context.support.DefaultLifecycleProcessor.access$300(DefaultLifecycleProcessor.java:54)
      	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.stop(DefaultLifecycleProcessor.java:374)
      	at org.springframework.context.support.DefaultLifecycleProcessor.stopBeans(DefaultLifecycleProcessor.java:207)
      	at org.springframework.context.support.DefaultLifecycleProcessor.onClose(DefaultLifecycleProcessor.java:130)
      	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1078)
      	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.doClose(ServletWebServerApplicationContext.java:174)
      	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:1032)
      	at org.springframework.boot.SpringApplicationShutdownHook.closeAndWait(SpringApplicationShutdownHook.java:145)
      	at java.base/java.lang.Iterable.forEach(Iterable.java:75)
      	at org.springframework.boot.SpringApplicationShutdownHook.run(SpringApplicationShutdownHook.java:114)
      	at java.base/java.lang.Thread.run(Thread.java:829)
      	... 23 frames trimmed
      Caused by: java.lang.IllegalStateException: Can't stop an already stopped recording.
      	at jdk.jfr/jdk.jfr.internal.PlatformRecorder.stop(PlatformRecorder.java:262)
      	at jdk.jfr/jdk.jfr.internal.PlatformRecording.stop(PlatformRecording.java:157)
      	at jdk.jfr/jdk.jfr.Recording.stop(Recording.java:210)
      	at com.atlassian.troubleshooting.jfr.domain.RecordingWrapper.stop(RecordingWrapper.java:207)
      	at com.atlassian.troubleshooting.jfr.service.JfrAlwaysOnRecordingService.lambda$stopDefaultRecording$1(JfrAlwaysOnRecordingService.java:66)
      	at java.base/java.util.Optional.ifPresent(Optional.java:183)
      	at com.atlassian.troubleshooting.jfr.service.JfrAlwaysOnRecordingService.stopDefaultRecording(JfrAlwaysOnRecordingService.java:65)
      	at com.atlassian.troubleshooting.jfr.manager.DefaultJfrRecordingManager.onStop(DefaultJfrRecordingManager.java:303)
      	at com.atlassian.troubleshooting.jfr.manager.DefaultJfrRecordingManager.onApplicationStoppingEvent(DefaultJfrRecordingManager.java:236)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:42)
      	... 40 common frames omitted 

      This is a thrown exception in the JFR https://github.com/AdoptOpenJDK/openjdk-jdk11/blob/master/src/jdk.jfr/share/classes/jdk/jfr/internal/PlatformRecorder.java#L263.

      Workaround

      Currently, there is no known workaround for this behavior as it doesn't seem to be having an impact on the application. 

            Assignee:
            Unassigned
            Reporter:
            Naveen
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

              Created:
              Updated: