Details
-
Bug
-
Resolution: Won't Fix
-
Low
-
None
-
6.2.7
-
Databases: MS Sql Server
Windows Service
-
6.02
-
Description
Summary
After JIRA database connection is lost, stopping JIRA service hangs at "Stopping" status till the database connection is up.
Steps to Reproduce
- Make sure database is up.
- Start JIRA service and access JIRA (such as login to JIRA).
- Stop database service using Windows service console (Open the Control Panel (icons view), click on the Administrative Tools icon, click on Services).
- Stop JIRA service. JIRA service will stuck in "Stopping" status.
Expected Results
Able to stop the JIRA service gracefully even when there is no database connection.
Actual Results
JIRA service hangs at "Stopping" status till database connection is up.
Stack trace from atlassian-jira.log:
015-06-24 12:29:44,170 QuartzScheduler_Worker-0 ERROR ServiceRunner LocalPluginLicenseNotificationJob-job [atlassian.jira.service.ServiceRunner] An error occured while trying to run service 'LocalPluginLicenseNotificationJob-job'. Unable to establish a connection with the database. (Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.) com.opensymphony.module.propertyset.PropertyImplementationException: Unable to establish a connection with the database. (Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.) at com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet.findPropertyEntry(OFBizPropertySet.java:306) at com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet.get(OFBizPropertySet.java:266) at com.opensymphony.module.propertyset.AbstractPropertySet.getString(AbstractPropertySet.java:305) at com.atlassian.sal.jira.scheduling.JiraPluginSchedulerService.run(JiraPluginSchedulerService.java:50) at com.atlassian.jira.service.JiraServiceContainerImpl.run(JiraServiceContainerImpl.java:61) at com.atlassian.jira.service.ServiceRunner.execute(ServiceRunner.java:48) at org.quartz.core.JobRunShell.run(JobRunShell.java:195) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520) 2015-06-24 12:29:45,080 localhost-startStop-2 ERROR [NoModule] There was an error getting a DBCP datasource. java.lang.RuntimeException: Unable to obtain a connection from the underlying connection pool at org.ofbiz.core.entity.jdbc.interceptors.connection.ConnectionTracker.trackConnection(ConnectionTracker.java:59) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory.trackConnection(DBCPConnectionFactory.java:242) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:73) at org.ofbiz.core.entity.ConnectionFactory.tryGenericConnectionSources(ConnectionFactory.java:69) at org.ofbiz.core.entity.transaction.JNDIFactory.getConnection(JNDIFactory.java:146) at org.ofbiz.core.entity.TransactionFactory.getConnection(TransactionFactory.java:101) at org.ofbiz.core.entity.ConnectionFactory.getConnection(ConnectionFactory.java:59) at org.ofbiz.core.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:367) at org.ofbiz.core.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:515) at org.ofbiz.core.entity.GenericDAO.selectListIteratorByCondition(GenericDAO.java:844) at org.ofbiz.core.entity.GenericDAO.selectByAnd(GenericDAO.java:725) at org.ofbiz.core.entity.GenericHelperDAO.findByAnd(GenericHelperDAO.java:150) at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:901) at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:879) at org.ofbiz.core.entity.GenericDelegator.findAll(GenericDelegator.java:802) at com.atlassian.jira.ofbiz.DefaultOfBizDelegator.findAll(DefaultOfBizDelegator.java:357) at com.atlassian.jira.ofbiz.WrappingOfBizDelegator.findAll(WrappingOfBizDelegator.java:206) at com.atlassian.jira.issue.fields.screen.DefaultFieldScreenStore.getFieldScreens(DefaultFieldScreenStore.java:52) at com.atlassian.jira.issue.fields.screen.CachingFieldScreenStore$FieldScreenCache.<init>(CachingFieldScreenStore.java:190) at com.atlassian.jira.issue.fields.screen.CachingFieldScreenStore$1.get(CachingFieldScreenStore.java:49) at com.atlassian.jira.issue.fields.screen.CachingFieldScreenStore$1.get(CachingFieldScreenStore.java:45) at com.atlassian.cache.memory.MemoryCacheManager$1$1.apply(MemoryCacheManager.java:50) at com.atlassian.cache.memory.MemoryCacheManager$1$1.apply(MemoryCacheManager.java:46) at com.google.common.collect.ComputingConcurrentHashMap$ComputingValueReference.compute(ComputingConcurrentHashMap.java:355) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.compute(ComputingConcurrentHashMap.java:184) at com.google.common.collect.ComputingConcurrentHashMap$ComputingSegment.getOrCompute(ComputingConcurrentHashMap.java:153) at com.google.common.collect.ComputingConcurrentHashMap.getOrCompute(ComputingConcurrentHashMap.java:69) at com.google.common.collect.ComputingConcurrentHashMap$ComputingMapAdapter.get(ComputingConcurrentHashMap.java:393) at com.atlassian.cache.memory.DelegatingCachedReference.get(DelegatingCachedReference.java:39) at com.atlassian.jira.issue.fields.screen.CachingFieldScreenStore.refresh(CachingFieldScreenStore.java:131) at com.atlassian.jira.issue.fields.screen.DefaultFieldScreenManager.refresh(DefaultFieldScreenManager.java:141) at com.atlassian.jira.plugin.JiraCacheResetter.resetCaches(JiraCacheResetter.java:84) at com.atlassian.jira.plugin.JiraCacheResetter.access$000(JiraCacheResetter.java:23) at com.atlassian.jira.plugin.JiraCacheResetter$Delegate.onPluginModuleDisabled(JiraCacheResetter.java:55) <+2> at java.lang.reflect.Method.invoke(Unknown Source) at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:66) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:32) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:60) at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:160) at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:79) at com.atlassian.plugin.event.impl.DefaultPluginEventManager.broadcast(DefaultPluginEventManager.java:84) at com.atlassian.plugin.manager.DefaultPluginManager.broadcastIgnoreError(DefaultPluginManager.java:1772) at com.atlassian.plugin.manager.DefaultPluginManager.publishModuleDisabledEvents(DefaultPluginManager.java:1617) at com.atlassian.plugin.manager.DefaultPluginManager.notifyModuleDisabled(DefaultPluginManager.java:1601) at com.atlassian.plugin.manager.DefaultPluginManager.onPluginModuleUnavailable(DefaultPluginManager.java:380) <+2> at java.lang.reflect.Method.invoke(Unknown Source) at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:66) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:32) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:60) at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:160) at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:79) at com.atlassian.plugin.event.impl.DefaultPluginEventManager.broadcast(DefaultPluginEventManager.java:84) at com.atlassian.plugin.osgi.factory.UnrecognizedModuleDescriptorServiceTrackerCustomizer.removedService(UnrecognizedModuleDescriptorServiceTrackerCustomizer.java:141) at org.osgi.util.tracker.ServiceTracker$Tracked.customizerRemoved(ServiceTracker.java:922) at org.osgi.util.tracker.AbstractTracked.untrack(AbstractTracked.java:351) at org.osgi.util.tracker.ServiceTracker.close(ServiceTracker.java:403) at com.atlassian.plugin.osgi.factory.OsgiPluginInstalledHelper.onDisable(OsgiPluginInstalledHelper.java:104) at com.atlassian.plugin.osgi.factory.OsgiPlugin$1.bundleChanged(OsgiPlugin.java:110) at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:800) at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:728) at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:610) at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:3715) at org.apache.felix.framework.Felix.stopBundle(Felix.java:2180) at org.apache.felix.framework.Felix.uninstallBundle(Felix.java:2289) at org.apache.felix.framework.BundleImpl.uninstall(BundleImpl.java:965) at com.atlassian.plugin.osgi.factory.OsgiPlugin.uninstallInternal(OsgiPlugin.java:560) at com.atlassian.plugin.impl.AbstractPlugin.uninstall(AbstractPlugin.java:453) at com.atlassian.plugin.impl.AbstractDelegatingPlugin.uninstall(AbstractDelegatingPlugin.java:221) at com.atlassian.plugin.loaders.ScanningPluginLoader.onShutdown(ScanningPluginLoader.java:275) <+3> at java.lang.reflect.Method.invoke(Unknown Source) at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:36) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$2.run(AsynchronousAbleEventDispatcher.java:66) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher$1.execute(AsynchronousAbleEventDispatcher.java:32) at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:60) at com.atlassian.event.internal.EventPublisherImpl.invokeListeners(EventPublisherImpl.java:160) at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:79) at com.atlassian.plugin.event.impl.DefaultPluginEventManager.broadcast(DefaultPluginEventManager.java:84) at com.atlassian.plugin.manager.DefaultPluginManager.shutdown(DefaultPluginManager.java:323) at com.atlassian.jira.ComponentManager$PluginSystem.shutdown(ComponentManager.java:750) at com.atlassian.jira.ComponentManager.stop(ComponentManager.java:322) at com.atlassian.jira.upgrade.PluginSystemLauncher.stop(PluginSystemLauncher.java:37) at com.atlassian.jira.startup.DefaultJiraLauncher.stop(DefaultJiraLauncher.java:153) at com.atlassian.jira.startup.LauncherContextListener.contextDestroyed(LauncherContextListener.java:89) <+5> (StandardContext.java:4980) (StandardContext.java:5626) (LifecycleBase.java:232) (ContainerBase.java:1575) (ContainerBase.java:1564) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:136) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125) at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30) at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22) at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24) at org.postgresql.Driver.makeConnection(Driver.java:393) at org.postgresql.Driver.connect(Driver.java:267) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148) at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:79) at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory$1.call(DBCPConnectionFactory.java:246) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory$1.call(DBCPConnectionFactory.java:243) at org.ofbiz.core.entity.jdbc.interceptors.connection.ConnectionTracker.trackConnection(ConnectionTracker.java:53) ... 101 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at org.postgresql.core.PGStream.<init>(PGStream.java:62) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76) ... 118 more 2015-06-24 12:29:45,173 QuartzScheduler_Worker-0 ERROR ServiceRunner RemotePluginLicenseNotificationJob-job [NoModule] There was an error getting a DBCP datasource. java.lang.RuntimeException: Unable to obtain a connection from the underlying connection pool at org.ofbiz.core.entity.jdbc.interceptors.connection.ConnectionTracker.trackConnection(ConnectionTracker.java:59) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory.trackConnection(DBCPConnectionFactory.java:242) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory.getConnection(DBCPConnectionFactory.java:73) at org.ofbiz.core.entity.ConnectionFactory.tryGenericConnectionSources(ConnectionFactory.java:69) at org.ofbiz.core.entity.transaction.JNDIFactory.getConnection(JNDIFactory.java:146) at org.ofbiz.core.entity.TransactionFactory.getConnection(TransactionFactory.java:101) at org.ofbiz.core.entity.ConnectionFactory.getConnection(ConnectionFactory.java:59) at org.ofbiz.core.entity.jdbc.SQLProcessor.getConnection(SQLProcessor.java:367) at org.ofbiz.core.entity.jdbc.SQLProcessor.prepareStatement(SQLProcessor.java:515) at org.ofbiz.core.entity.GenericDAO.selectListIteratorByCondition(GenericDAO.java:844) at org.ofbiz.core.entity.GenericDAO.selectByAnd(GenericDAO.java:725) at org.ofbiz.core.entity.GenericHelperDAO.findByAnd(GenericHelperDAO.java:150) at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:901) at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:879) at org.ofbiz.core.entity.GenericDelegator.findByAnd(GenericDelegator.java:848) at com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet.findPropertyEntry(OFBizPropertySet.java:298) at com.opensymphony.module.propertyset.ofbiz.OFBizPropertySet.get(OFBizPropertySet.java:266) at com.opensymphony.module.propertyset.AbstractPropertySet.getString(AbstractPropertySet.java:305) at com.atlassian.sal.jira.scheduling.JiraPluginSchedulerService.run(JiraPluginSchedulerService.java:50) at com.atlassian.jira.service.JiraServiceContainerImpl.run(JiraServiceContainerImpl.java:61) at com.atlassian.jira.service.ServiceRunner.execute(ServiceRunner.java:48) at org.quartz.core.JobRunShell.run(JobRunShell.java:195) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520) Caused by: org.postgresql.util.PSQLException: Connection refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:136) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125) at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30) at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22) at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24) at org.postgresql.Driver.makeConnection(Driver.java:393) at org.postgresql.Driver.connect(Driver.java:267) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582) at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1148) at org.apache.commons.dbcp.AbandonedObjectPool.borrowObject(AbandonedObjectPool.java:79) at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:106) at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory$1.call(DBCPConnectionFactory.java:246) at org.ofbiz.core.entity.transaction.DBCPConnectionFactory$1.call(DBCPConnectionFactory.java:243) at org.ofbiz.core.entity.jdbc.interceptors.connection.ConnectionTracker.trackConnection(ConnectionTracker.java:53) ... 22 more Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.connect0(Native Method) at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at org.postgresql.core.PGStream.<init>(PGStream.java:62) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76) ... 39 more
Workaround
Can kill the JIRA process in "force" status. Use the windows command below:
sc queryex <service name>
For example JIRA service name is "JIRA290515092212". The result is:
SERVICE_NAME: JIRA290515092212 TYPE : 10 WIN32_OWN_PROCESS STATE : 4 RUNNING (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) WIN32_EXIT_CODE : 0 (0x0) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 3224 FLAGS :
Get the PID from the result and execute the following windows command:
taskkill /PID 3224 /F