Description
"Connection is Closed" error when running Course/System reports.
Symptoms
bb-services-log sample
{noformat}
Connection connection is closed is closed.<p><span class="captionText">For reference, the Error ID is b5571d74-a88b-4c6c-9fc5-58eb542b370d.</span>
java.sql.SQLException: Connection connection is closed is closed.
at org.apache.commons.dbcp.DelegatingConnection.checkOpen(DelegatingConnection.java:398)
at org.apache.commons.dbcp.DelegatingConnection.prepareCall(DelegatingConnection.java:306)
at blackboard.db.impl.SafetyNetConnection.prepareCall(SafetyNetConnection.java:311)
at org.apache.commons.dbcp.DelegatingConnection.prepareCall(DelegatingConnection.java:308)
at blackboard.persist.impl.StoredProcedureQuery.prepareStatement(StoredProcedureQuery.java:281)
at blackboard.persist.impl.Query.executeQuery(Query.java:154)
at blackboard.persist.BbPersistenceManager$3.run(BbPersistenceManager.java:584)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.persist.BbPersistenceManager.runDbQuery(BbPersistenceManager.java:569)
at blackboard.persist.impl.Query.run(Query.java:286)
at blackboard.persist.impl.Query.run(Query.java:280)
at blackboard.platform.sharablelock.impl.SharableLockManagerImpl.seizeLock(SharableLockManagerImpl.java:76)
at blackboard.platform.sharablelock.impl.SharableLockManagerImpl.performLockWork(SharableLockManagerImpl.java:47)
at blackboard.platform.sharablelock.impl.SharableLockManagerImpl.performSharedLockWork(SharableLockManagerImpl.java:33)
at blackboard.platform.reporting.service.impl.ReportExecutorImpl.execute(ReportExecutorImpl.java:61)
at blackboard.platform.reporting.service.impl.ReportExecutorImpl.execute(ReportExecutorImpl.java:49)
at blackboard.platform.reporting.web.struts.RunReportAction$ReportExecutionTask.call(RunReportAction.java:422)
at blackboard.platform.reporting.web.struts.RunReportAction$ReportExecutionTask.call(RunReportAction.java:398)
at blackboard.util.ThreadUtil$1.run(ThreadUtil.java:61)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.util.ThreadUtil.callWithContextClassLoader(ThreadUtil.java:53)
at blackboard.util.ThreadUtil.callWithContextClassLoader(ThreadUtil.java:36)
at blackboard.platform.servlet.processing.impl.LongRunningTaskThreadPoolServiceImpl$ContextPreservingCallable$1.run(LongRunningTaskThreadPoolServiceImpl.java:288)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.platform.servlet.processing.impl.LongRunningTaskThreadPoolServiceImpl$ContextPreservingCallable.call(LongRunningTaskThreadPoolServiceImpl.java:283)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
bb-sqlerror-log sample
{noformat}
2016-02-28 13:55:52 -0500 - blackboard.persist.impl.SimpleSelectQuery@e7b7d730 failed. - java.sql.SQLException: Connection connection is closed is closed.
at org.apache.commons.dbcp.DelegatingConnection.checkOpen(DelegatingConnection.java:398)
at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:279)
at blackboard.db.impl.SafetyNetConnection.prepareStatement(SafetyNetConnection.java:272)
at org.apache.commons.dbcp.DelegatingConnection.prepareStatement(DelegatingConnection.java:281)
at blackboard.persist.impl.SimpleSelectQuery.prepareStatement(SimpleSelectQuery.java:471)
at blackboard.persist.impl.Query.executeQuery(Query.java:154)
at blackboard.persist.impl.Query.executeQuery(Query.java:121)
at blackboard.persist.impl.NewBaseDbLoader$DbConnectivityPrivilege.run(NewBaseDbLoader.java:266)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.persist.impl.NewBaseDbLoader.loadObject(NewBaseDbLoader.java:113)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:87)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:67)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:61)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:55)
at blackboard.platform.context.impl.ContextImpl.getUser(ContextImpl.java:1119)
at blackboard.platform.intl.LocalizationUtil$4.run(LocalizationUtil.java:700)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.platform.intl.LocalizationUtil.renegotiateLocale(LocalizationUtil.java:671)
at blackboard.platform.intl.LocalizationUtil.access$100(LocalizationUtil.java:38)
at blackboard.platform.intl.LocalizationUtil$3.get(LocalizationUtil.java:660)
at blackboard.platform.intl.LocalizationUtil$3.get(LocalizationUtil.java:656)
at blackboard.util.ContextCachingLoader.getCachedObject(ContextCachingLoader.java:78)
at blackboard.platform.intl.LocalizationUtil.negotiateLocale(LocalizationUtil.java:663)
at blackboard.platform.intl.LocaleManagerImpl.getUncachedLocale(LocaleManagerImpl.java:119)
at blackboard.platform.intl.LocaleManagerImpl.access$000(LocaleManagerImpl.java:41)
at blackboard.platform.intl.LocaleManagerImpl$1.get(LocaleManagerImpl.java:98)
at blackboard.platform.intl.LocaleManagerImpl$1.get(LocaleManagerImpl.java:94)
at blackboard.util.ContextCachingLoader.getCachedObject(ContextCachingLoader.java:78)
at blackboard.platform.intl.LocaleManagerImpl.getLocale(LocaleManagerImpl.java:101)
at blackboard.platform.intl.BundleManagerImpl.getLocale(BundleManagerImpl.java:386)
at blackboard.platform.intl.BundleManagerImpl.getBundle(BundleManagerImpl.java:169)
at blackboard.platform.intl.BundleManagerImpl.getBundle(BundleManagerImpl.java:114)
at blackboard.persist.impl.NewBaseDbLoader.buildMessage(NewBaseDbLoader.java:246)
at blackboard.persist.impl.NewBaseDbLoader.buildMessage(NewBaseDbLoader.java:241)
at blackboard.persist.impl.NewBaseDbLoader.loadObject(NewBaseDbLoader.java:132)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:87)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:67)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:61)
at blackboard.persist.user.impl.UserDbLoaderImpl.loadById(UserDbLoaderImpl.java:55)
at blackboard.platform.context.impl.ContextImpl.getUser(ContextImpl.java:1119)
at blackboard.platform.monitor.MonitorEvent$1.run(MonitorEvent.java:69)
at blackboard.platform.monitor.impl.MonitorOverride.execute(MonitorOverride.java:67)
at blackboard.platform.monitor.MonitorEvent.<init>(MonitorEvent.java:54)
at blackboard.platform.monitor.log.LogMonitorEvent.<init>(LogMonitorEvent.java:57)
at blackboard.platform.monitor.log.impl.LogMonitorImpl.handleMessage(LogMonitorImpl.java:92)
at blackboard.platform.log.impl.MonitoringLogger.logError(MonitoringLogger.java:115)
at blackboard.persist.impl.Query.logSqlError(Query.java:226)
at blackboard.persist.impl.Query.executeQuery(Query.java:165)
at blackboard.persist.BbPersistenceManager$3.run(BbPersistenceManager.java:584)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.persist.BbPersistenceManager.runDbQuery(BbPersistenceManager.java:569)
at blackboard.persist.impl.Query.run(Query.java:286)
at blackboard.persist.impl.Query.run(Query.java:280)
at blackboard.platform.sharablelock.impl.SharableLockManagerImpl.seizeLock(SharableLockManagerImpl.java:76)
at blackboard.platform.sharablelock.impl.SharableLockManagerImpl.performLockWork(SharableLockManagerImpl.java:47)
at blackboard.platform.sharablelock.impl.SharableLockManagerImpl.performSharedLockWork(SharableLockManagerImpl.java:33)
at blackboard.platform.reporting.service.impl.ReportExecutorImpl.execute(ReportExecutorImpl.java:61)
at blackboard.platform.reporting.service.impl.ReportExecutorImpl.execute(ReportExecutorImpl.java:49)
at blackboard.platform.reporting.web.struts.RunReportAction$ReportExecutionTask.call(RunReportAction.java:422)
at blackboard.platform.reporting.web.struts.RunReportAction$ReportExecutionTask.call(RunReportAction.java:398)
at blackboard.util.ThreadUtil$1.run(ThreadUtil.java:61)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.util.ThreadUtil.callWithContextClassLoader(ThreadUtil.java:53)
at blackboard.util.ThreadUtil.callWithContextClassLoader(ThreadUtil.java:36)
at blackboard.platform.servlet.processing.impl.LongRunningTaskThreadPoolServiceImpl$ContextPreservingCallable$1.run(LongRunningTaskThreadPoolServiceImpl.java:288)
at java.security.AccessController.doPrivileged(Native Method)
at blackboard.platform.servlet.processing.impl.LongRunningTaskThreadPoolServiceImpl$ContextPreservingCallable.call(LongRunningTaskThreadPoolServiceImpl.java:283)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
Steps to Replicate
Log into Blackboard Learn as Administrator
Click on System Admin > Courses
Search and enter a Course
Click Quick Enroll
Click on Evaluation (in the course control panel) > Course Reports
Click on the chevron of any Course report 'i.e. Course Coverage' report > Run
Click on Submit
Expected Behavior:
The Report will run
Observed Behavior:
Connection connection is closed is closed
For reference, the Error ID is b5571d74-a88b-4c6c-9fc5-58eb542b370d
Target Release
Will Not Fix
