You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2018/10/30 20:43:10 UTC
svn commit: r1845277 -
/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java
Author: seanfinan
Date: Tue Oct 30 20:43:10 2018
New Revision: 1845277
URL: http://svn.apache.org/viewvc?rev=1845277&view=rev
Log:
CTAKES-526 : Add shutdown hook to close hsql database
Modified:
ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java
Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java?rev=1845277&r1=1845276&r2=1845277&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java Tue Oct 30 20:43:10 2018
@@ -5,10 +5,7 @@ import org.apache.log4j.Logger;
import java.io.FileNotFoundException;
import java.net.URL;
-import java.sql.Connection;
-import java.sql.Driver;
-import java.sql.DriverManager;
-import java.sql.SQLException;
+import java.sql.*;
import java.util.*;
/**
@@ -96,6 +93,7 @@ public enum JdbcConnectionFactory {
EOL_LOGGER.info( "" );
LOGGER.info( " Database connected" );
CONNECTIONS.put( jdbcUrl, connection );
+ registerShutdownHook( connection );
return connection;
}
@@ -104,7 +102,7 @@ public enum JdbcConnectionFactory {
*
* @param jdbcUrl -
* @return -
- * @throws SQLException
+ * @throws SQLException -
*/
static private String getConnectionUrl( final String jdbcUrl ) throws SQLException {
final String urlDbPath = jdbcUrl.substring( HSQL_FILE_PREFIX.length() );
@@ -118,6 +116,29 @@ public enum JdbcConnectionFactory {
}
}
+ /**
+ * register a shutdown hook that will shut down the database, removing temporary and lock files.
+ *
+ * @param connection -
+ */
+ static private void registerShutdownHook( final Connection connection ) {
+ // Registers a shutdown hook for the Hsql instance so that it
+ // shuts down nicely and any temporary or lock files are cleaned up.
+ Runtime.getRuntime().addShutdownHook( new Thread( () -> {
+ try {
+ final Statement shutdown = connection.createStatement();
+ shutdown.execute( "SHUTDOWN" );
+ shutdown.close();
+ // The db is read-only, so there should be no need to roll back any transactions.
+ connection.clearWarnings();
+ connection.close();
+ } catch ( SQLException sqlE ) {
+ // ignore
+ }
+ } ) );
+ }
+
+
static private class DotPlotter extends TimerTask {
private int _count = 0;