diff --git a/console/src/main/java/com/arcadedb/console/Console.java b/console/src/main/java/com/arcadedb/console/Console.java index 981f1f6cf2..2947590f9e 100644 --- a/console/src/main/java/com/arcadedb/console/Console.java +++ b/console/src/main/java/com/arcadedb/console/Console.java @@ -95,6 +95,10 @@ public Console(final boolean interactive) throws IOException { if (!interactive) return; + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + close(); + })); + lineReader.getHistory().load(); try { @@ -358,8 +362,14 @@ else if (!urlParts[0].isEmpty()) { final String databaseUrl = databaseDirectory + urlParts[0]; - databaseFactory = new DatabaseFactory(databaseUrl); - localDatabase = (DatabaseInternal) databaseFactory.setAutoTransaction(true).open(mode); + final File lockFile = new File(databaseUrl + "/database.lck"); + + if (!lockFile.exists()) { + databaseFactory = new DatabaseFactory(databaseUrl); + localDatabase = (DatabaseInternal) databaseFactory.setAutoTransaction(true).open(mode); + } else { + outputLine("Database appears locked by server."); + } } } else throw new ConsoleException("URL missing"); @@ -675,7 +685,7 @@ private void executeHelp() { outputLine("help|? -> ask for this help"); outputLine("info types -> prints available types"); outputLine("info transaction -> prints current transaction"); - outputLine("list databases |remote: -> lists databases"); + outputLine("list databases |remote: -> prints list of databases"); outputLine("load -> runs local script"); outputLine("rollback -> rolls back current transaction"); outputLine("set language = sql|sqlscript|cypher|gremlin|mongo -> sets console query language");