Database connections

Seems there may be some issues deleting database connections. Towards the bottom half of the output there are some constraint violations that seem to keep it from being deleted.:

com.inductiveautomation.ignition.gateway.web.pages.config.systemconsole.LogViewer$SerializableLoggingEvent$ClonedThrowable: Executing DELETE FROM DATASOURCES WHERE DATASOURCES_ID = ? for [DatasourceRecord 0 Deleted Dirty0]
simpleorm.sessionjdbc.SSessionJdbcHelper.flushExecuteUpdate(SSessionJdbcHelper.java:409)
simpleorm.sessionjdbc.SSessionJdbcHelper.flush(SSessionJdbcHelper.java:376)
simpleorm.sessionjdbc.SSessionJdbc.flush(SSessionJdbc.java:425)
simpleorm.sessionjdbc.SSessionJdbc.flush(SSessionJdbc.java:410)
simpleorm.sessionjdbc.SSessionJdbc.commitAndDetachDataSet(SSessionJdbc.java:353)
com.inductiveautomation.ignition.gateway.web.components.actions.DeleteRecordAction.doDelete(DeleteRecordAction.java:68)
com.inductiveautomation.ignition.gateway.web.components.actions.DeleteRecordAction.execute(DeleteRecordAction.java:143)
com.inductiveautomation.ignition.gateway.web.components.ConfirmationPanel$1.onClick(ConfirmationPanel.java:42)
org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Unknown Source)
com.inductiveautomation.ignition.gateway.web.pages.config.systemconsole.LogViewer$SerializableLoggingEvent$ClonedThrowable: Error sending prepstatement command through cluster.
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$ClusterPrepStatement.call(ClusteredDatasource.java:1164)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$ClusterPrepStatement.executeUpdate(ClusteredDatasource.java:1198)
simpleorm.sessionjdbc.SSessionJdbcHelper.flushExecuteUpdate(SSessionJdbcHelper.java:407)
simpleorm.sessionjdbc.SSessionJdbcHelper.flush(SSessionJdbcHelper.java:376)
simpleorm.sessionjdbc.SSessionJdbc.flush(SSessionJdbc.java:425)
simpleorm.sessionjdbc.SSessionJdbc.flush(SSessionJdbc.java:410)
simpleorm.sessionjdbc.SSessionJdbc.commitAndDetachDataSet(SSessionJdbc.java:353)
com.inductiveautomation.ignition.gateway.web.components.actions.DeleteRecordAction.doDelete(DeleteRecordAction.java:68)
com.inductiveautomation.ignition.gateway.web.components.actions.DeleteRecordAction.execute(DeleteRecordAction.java:143)
com.inductiveautomation.ignition.gateway.web.components.ConfirmationPanel$1.onClick(ConfirmationPanel.java:42)
org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Unknown Source)
com.inductiveautomation.ignition.gateway.web.pages.config.systemconsole.LogViewer$SerializableLoggingEvent$ClonedThrowable: Response from 127.0.0.1:10000 is error.
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl.sendGatheringCall(ClusterManagerImpl.java:821)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl.sendGatheringCall(ClusterManagerImpl.java:764)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl.sendCall(ClusterManagerImpl.java:842)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$ClusterPrepStatement.call(ClusteredDatasource.java:1157)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$ClusterPrepStatement.executeUpdate(ClusteredDatasource.java:1198)
simpleorm.sessionjdbc.SSessionJdbcHelper.flushExecuteUpdate(SSessionJdbcHelper.java:407)
simpleorm.sessionjdbc.SSessionJdbcHelper.flush(SSessionJdbcHelper.java:376)
simpleorm.sessionjdbc.SSessionJdbc.flush(SSessionJdbc.java:425)
simpleorm.sessionjdbc.SSessionJdbc.flush(SSessionJdbc.java:410)
simpleorm.sessionjdbc.SSessionJdbc.commitAndDetachDataSet(SSessionJdbc.java:353)
com.inductiveautomation.ignition.gateway.web.components.actions.DeleteRecordAction.doDelete(DeleteRecordAction.java:68)
com.inductiveautomation.ignition.gateway.web.components.actions.DeleteRecordAction.execute(DeleteRecordAction.java:143)
com.inductiveautomation.ignition.gateway.web.components.ConfirmationPanel$1.onClick(ConfirmationPanel.java:42)
org.apache.wicket.markup.html.link.Link.onLinkClicked(Link.java:224)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Unknown Source)
com.inductiveautomation.ignition.gateway.web.pages.config.systemconsole.LogViewer$SerializableLoggingEvent$ClonedThrowable: null
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$PrepStatementCommand.handle(ClusteredDatasource.java:339)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$Receiver.receiveCall(ClusteredDatasource.java:217)
com.inductiveautomation.ignition.gateway.cluster.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:45)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl$SyncCallReciever.dispatch(ClusterManagerImpl.java:1586)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl$SyncCallReciever.handle(ClusterManagerImpl.java:1570)
org.jgroups.blocks.MessageDispatcher.handle(MessageDispatcher.java:605)
org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:624)
org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:533)
org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:365)
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:764)
org.jgroups.JChannel.up(JChannel.java:1265)
org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:444)
org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.up(STREAMING_STATE_TRANSFER.java:243)
org.jgroups.protocols.pbcast.GMS.up(GMS.java:787)
org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:233)
org.jgroups.protocols.pbcast.NAKACK.handleMessage(NAKACK.java:830)
org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:693)
org.jgroups.protocols.BARRIER.up(BARRIER.java:136)
org.jgroups.protocols.Discovery.up(Discovery.java:244)
org.jgroups.protocols.TP.passMessageUp(TP.java:1266)
org.jgroups.protocols.TP.access$100(TP.java:49)
org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1809)
org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1788)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
com.inductiveautomation.ignition.gateway.web.pages.config.systemconsole.LogViewer$SerializableLoggingEvent$ClonedThrowable: integrity constraint violation: foreign key no action; FK_ALERTSTORAGEPROFILEPROPERTIES_DATASOURCE_DATASOURCE table: ALERTSTORAGEPROFILEPROPERTIES_DATASOURCE
org.hsqldb.jdbc.Util.sqlException(Util.java:200)
org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(JDBCPreparedStatement.java:4260)
org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(JDBCPreparedStatement.java:300)
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$ClusterPrepStatement._executeUpdate(ClusteredDatasource.java:1202)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$PrepStatementCommand.handle(ClusteredDatasource.java:339)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$Receiver.receiveCall(ClusteredDatasource.java:217)
com.inductiveautomation.ignition.gateway.cluster.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:45)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl$SyncCallReciever.dispatch(ClusterManagerImpl.java:1586)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl$SyncCallReciever.handle(ClusterManagerImpl.java:1570)
org.jgroups.blocks.MessageDispatcher.handle(MessageDispatcher.java:605)
org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:624)
org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:533)
org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:365)
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:764)
org.jgroups.JChannel.up(JChannel.java:1265)
org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:444)
org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.up(STREAMING_STATE_TRANSFER.java:243)
org.jgroups.protocols.pbcast.GMS.up(GMS.java:787)
org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:233)
org.jgroups.protocols.pbcast.NAKACK.handleMessage(NAKACK.java:830)
org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:693)
org.jgroups.protocols.BARRIER.up(BARRIER.java:136)
org.jgroups.protocols.Discovery.up(Discovery.java:244)
org.jgroups.protocols.TP.passMessageUp(TP.java:1266)
org.jgroups.protocols.TP.access$100(TP.java:49)
org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1809)
org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1788)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)
com.inductiveautomation.ignition.gateway.web.pages.config.systemconsole.LogViewer$SerializableLoggingEvent$ClonedThrowable: integrity constraint violation: foreign key no action; FK_ALERTSTORAGEPROFILEPROPERTIES_DATASOURCE_DATASOURCE table: ALERTSTORAGEPROFILEPROPERTIES_DATASOURCE
org.hsqldb.error.Error.error(Error.java:112)
org.hsqldb.StatementDML.checkCascadeDelete(StatementDML.java:788)
org.hsqldb.StatementDML.delete(StatementDML.java:666)
org.hsqldb.StatementDML.executeDeleteStatement(StatementDML.java:630)
org.hsqldb.StatementDML.getResult(StatementDML.java:165)
org.hsqldb.StatementDMQL.execute(StatementDMQL.java:198)
org.hsqldb.Session.executeCompiledStatement(Session.java:1159)
org.hsqldb.Session.executeCompiledStatement(Session.java:1376)
org.hsqldb.Session.execute(Session.java:857)
org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(JDBCPreparedStatement.java:4252)
org.hsqldb.jdbc.JDBCPreparedStatement.executeUpdate(JDBCPreparedStatement.java:300)
org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:102)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$ClusterPrepStatement._executeUpdate(ClusteredDatasource.java:1202)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$PrepStatementCommand.handle(ClusteredDatasource.java:339)
com.inductiveautomation.ignition.gateway.localdb.ClusteredDatasource$Receiver.receiveCall(ClusteredDatasource.java:217)
com.inductiveautomation.ignition.gateway.cluster.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:45)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl$SyncCallReciever.dispatch(ClusterManagerImpl.java:1586)
com.inductiveautomation.ignition.gateway.cluster.ClusterManagerImpl$SyncCallReciever.handle(ClusterManagerImpl.java:1570)
org.jgroups.blocks.MessageDispatcher.handle(MessageDispatcher.java:605)
org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:624)
org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:533)
org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:365)
org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:764)
org.jgroups.JChannel.up(JChannel.java:1265)
org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:444)
org.jgroups.protocols.pbcast.STREAMING_STATE_TRANSFER.up(STREAMING_STATE_TRANSFER.java:243)
org.jgroups.protocols.pbcast.GMS.up(GMS.java:787)
org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:233)
org.jgroups.protocols.pbcast.NAKACK.handleMessage(NAKACK.java:830)
org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:693)
org.jgroups.protocols.BARRIER.up(BARRIER.java:136)
org.jgroups.protocols.Discovery.up(Discovery.java:244)
org.jgroups.protocols.TP.passMessageUp(TP.java:1266)
org.jgroups.protocols.TP.access$100(TP.java:49)
org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1809)
org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1788)
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

Yes, that stack trace is basically the most unfriendly way possible for the system to tell you :

“You can’t delete this connection - an alert storage profile depends on it.”

Needless to say - we’ll make this check prettier, thanks for pointing it out.

Well, that is the issue.

I removed all references to the DB connection before this error came up. The 1st time I tried to delete it, it did politely tell me that it was in use. So, I went and created a new DB reference, changed all my stuff over to that and then tried to delete again. I then got the message above. So, i then stop/started the gateway and tried again. I still got the message again after that.

Darren

Hmm, well that message is pretty clearly indicating that there is an alert storage profile pointing towards the database. If you’re certain this isn’t the case, please send the Gateway backup to us so that we can investigate.

Well, I must not have hit the save button after I changed the DB connection for my alerts.

In other words, never mind. :blush:

Darren

No problem, it was helpful to have that nasty stack trace pointed out.