java.net.ConnectException: Connection refused: connect

I was working on the project seamlessly and went to bed last night. Woke up, opened the project, and got a “HSQLDB connection error Error starting HSQL server for database” error. Have tried to clean the database, create a new database, and get versions of the same error “Task ‘createDb’ failed
java.net.ConnectException: Connection refused: connect”

I am perfectly willing to delete the database and repopulate from my backups but I can’t figure out which files to modify/delete to make that happen and attempting to do it through Studio fails as described already. If that is not possible, I think the best alternative is to go back to the last baseline in my vcs and populate the changes since then.

When I quit last night, the shutdown routine was normal - stopped the server, closed the application. I did attempt to do a bulk save of the project to a local NAS but aborted it halfway. I have looked through all of the logs that I can think of from last night and only one has an error about 5 minutes before I shut down (from localhost_2020-01-27.log).

  • “27-Jan-2020 22:20:48.737 SEVERE [http-nio-8080-exec-9] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [app_servlet] in context with path [/app] threw exception”

The app.log looks clean and indicates I had several successful runs after the error above.

The studio.log from today has the following highlights with the full log below:

  • 2020-01-28 14:47:21,438 FATAL [hsqldb.db.HSQLDB5AC2F4F449.ENGINE] readExistingData failed
    org.hsqldb.HsqlException: data exception: invalid datetime format
  • 2020-01-28 14:47:21,553 FATAL [hsqldb.db.HSQLDB5AC2F4F449.ENGINE] could not reopen database
    org.hsqldb.HsqlException: error in script file line: 807 org.hsqldb.HsqlException: data exception: invalid datetime format
  • 2020-01-28 14:47:21,578 ERROR [com.haulmont.studio.ui.app.App] Exception occured
    com.haulmont.studio.common.exceptions.HsqlConnectionException: Error starting HSQL server for database fleetassessment

The full error log from one attempt to start the server is below

2020-01-28 15:03:42,768 FATAL [hsqldb.db.HSQLDB5AC2F4F449.ENGINE] readExistingData failed
org.hsqldb.HsqlException: data exception: invalid datetime format
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.Scanner.scanDateParts(Unknown Source)
at org.hsqldb.Scanner.newDate(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readDate(Unknown Source)
at org.hsqldb.rowio.RowInputBase.readData(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readData(Unknown Source)
at org.hsqldb.rowio.RowInputBase.readData(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readData(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.processStatement(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.readLoggedStatement(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.readExistingData(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderBase.readAll(Unknown Source)
at org.hsqldb.persist.Log.processScript(Unknown Source)
at org.hsqldb.persist.Log.open(Unknown Source)
at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
at org.hsqldb.Database.reopen(Unknown Source)
at org.hsqldb.Database.open(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.server.Server.openDatabases(Unknown Source)
at org.hsqldb.server.Server.run(Unknown Source)
at org.hsqldb.server.Server.access$000(Unknown Source)
at org.hsqldb.server.Server$ServerThread.run(Unknown Source)
2020-01-28 15:03:42,768 WARN [hsqldb.db.HSQLDB5AC2F4F449.ENGINE] Script processing failure
org.hsqldb.HsqlException: error in script file line: 807 org.hsqldb.HsqlException: data exception: invalid datetime format
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.readExistingData(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderBase.readAll(Unknown Source)
at org.hsqldb.persist.Log.processScript(Unknown Source)
at org.hsqldb.persist.Log.open(Unknown Source)
at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
at org.hsqldb.Database.reopen(Unknown Source)
at org.hsqldb.Database.open(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.server.Server.openDatabases(Unknown Source)
at org.hsqldb.server.Server.run(Unknown Source)
at org.hsqldb.server.Server.access$000(Unknown Source)
at org.hsqldb.server.Server$ServerThread.run(Unknown Source)
Caused by: org.hsqldb.HsqlException: data exception: invalid datetime format
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.Scanner.scanDateParts(Unknown Source)
at org.hsqldb.Scanner.newDate(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readDate(Unknown Source)
at org.hsqldb.rowio.RowInputBase.readData(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readData(Unknown Source)
at org.hsqldb.rowio.RowInputBase.readData(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readData(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.processStatement(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.readLoggedStatement(Unknown Source)
… 13 more
2020-01-28 15:03:42,769 INFO [hsqldb.db.HSQLDB5AC2F4F449.ENGINE] Database closed
2020-01-28 15:03:42,872 FATAL [hsqldb.db.HSQLDB5AC2F4F449.ENGINE] could not reopen database
org.hsqldb.HsqlException: error in script file line: 807 org.hsqldb.HsqlException: data exception: invalid datetime format
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.readExistingData(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderBase.readAll(Unknown Source)
at org.hsqldb.persist.Log.processScript(Unknown Source)
at org.hsqldb.persist.Log.open(Unknown Source)
at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
at org.hsqldb.Database.reopen(Unknown Source)
at org.hsqldb.Database.open(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.server.Server.openDatabases(Unknown Source)
at org.hsqldb.server.Server.run(Unknown Source)
at org.hsqldb.server.Server.access$000(Unknown Source)
at org.hsqldb.server.Server$ServerThread.run(Unknown Source)
Caused by: org.hsqldb.HsqlException: data exception: invalid datetime format
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.Scanner.scanDateParts(Unknown Source)
at org.hsqldb.Scanner.newDate(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readDate(Unknown Source)
at org.hsqldb.rowio.RowInputBase.readData(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readData(Unknown Source)
at org.hsqldb.rowio.RowInputBase.readData(Unknown Source)
at org.hsqldb.rowio.RowInputTextLog.readData(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.processStatement(Unknown Source)
at org.hsqldb.scriptio.ScriptReaderText.readLoggedStatement(Unknown Source)
… 13 more
2020-01-28 15:03:42,903 ERROR [com.haulmont.studio.ui.app.App] Exception occured
com.haulmont.studio.common.exceptions.HsqlConnectionException: Error starting HSQL server for database fleetassessment
at com.haulmont.studio.backend.ed.ddl.HsqlServer.startServer(HsqlServer.java:103)
at com.haulmont.studio.backend.ed.ddl.HsqlControl.startServer(HsqlControl.java:48)
at com.haulmont.studio.backend.ed.ddl.DbManager.dbExists(DbManager.java:252)
at com.haulmont.studio.backend.ed.ddl.DbManager.dbInitialized(DbManager.java:178)
at com.haulmont.studio.ui.app.ToolsPanel.checkDbStateAndRestart(ToolsPanel.java:575)
at com.haulmont.studio.ui.app.ToolsPanel.restart(ToolsPanel.java:873)
at com.haulmont.studio.ui.app.ToolsPanel.lambda$createToolBar$d3203346$2(ToolsPanel.java:215)
at sun.reflect.GeneratedMethodAccessor119.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:200)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:163)
at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:1037)
at com.vaadin.ui.Button.fireClick(Button.java:377)
at com.vaadin.ui.Button$1.click(Button.java:54)
at sun.reflect.GeneratedMethodAccessor120.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:158)
at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:119)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:444)
at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:409)
at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:274)
at com.vaadin.server.communication.PushHandler$2.run(PushHandler.java:148)
at com.vaadin.server.communication.PushHandler.callWithUi(PushHandler.java:240)
at com.vaadin.server.communication.PushHandler.onMessage(PushHandler.java:518)
at com.vaadin.server.communication.PushAtmosphereHandler.onMessage(PushAtmosphereHandler.java:87)
at com.vaadin.server.communication.PushAtmosphereHandler.onRequest(PushAtmosphereHandler.java:77)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:199)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:107)
at org.atmosphere.container.Jetty9AsyncSupportWithWebSocket.service(Jetty9AsyncSupportWithWebSocket.java:180)
at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:2075)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:571)
at org.atmosphere.websocket.DefaultWebSocketProcessor$3.run(DefaultWebSocketProcessor.java:333)
at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:328)
at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:425)
at org.atmosphere.container.Jetty9WebSocketHandler.onWebSocketText(Jetty9WebSocketHandler.java:125)
at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextMessage(JettyListenerEventDriver.java:128)
at org.eclipse.jetty.websocket.common.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69)
at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.appendMessage(AbstractEventDriver.java:65)
at org.eclipse.jetty.websocket.common.events.JettyListenerEventDriver.onTextFrame(JettyListenerEventDriver.java:122)
at org.eclipse.jetty.websocket.common.events.AbstractEventDriver.incomingFrame(AbstractEventDriver.java:161)
at org.eclipse.jetty.websocket.common.WebSocketSession.incomingFrame(WebSocketSession.java:309)
at org.eclipse.jetty.websocket.common.extensions.ExtensionStack.incomingFrame(ExtensionStack.java:214)
at org.eclipse.jetty.websocket.common.Parser.notifyFrame(Parser.java:220)
at org.eclipse.jetty.websocket.common.Parser.parse(Parser.java:258)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.readParse(AbstractWebSocketConnection.java:632)
at org.eclipse.jetty.websocket.common.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:480)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
at java.lang.Thread.run(Thread.java:748)
2020-01-28 15:03:42,918 INFO [com.haulmont.studio.backend.stat.StatManager] Sending usage statistics"

Was able to find which file was corrupted and which script file they were referring to. It turned out to be in the “deploy/hsqldb/fleetassessment/fleetassessment.script” file that initially populates the database. Somehow about 6 date entries had gotten corrupted and the year was replaced with a random 7 number sequence. Manually changed those and the database opens.

Will now see if there is some recurrent thing that corrupts the file or if that was some random one-off.

The corruption recurred. Something occurring during the project closing is causing the .script file to be saved with these corrupted entries. I will look at the individual entities being corrupted and try to identify a common thread between them…

As with most of problems, it was operator error. There was an obscure loop that was only recently possible that set the date to null. Erroneously, thought the date validator would have caught it prior to committing but it didn’t.

Hi,
If you care about your development-time data then I would advise you to switch your development environment to use PostgreSQL database.

HSQLDB is intended for fast prototyping and in-memory caching. If you worry about loosing your HSQLDB data then you shouldn’t use it at all.

PostgreSQL is free to use, cross platform, not hard to install. Like other production-grade databases, it survives abnormal system crashes and so on.