diff options
author | Roberto E. Escobar | 2013-06-24 23:54:54 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2013-06-25 23:10:14 +0000 |
commit | 704d2142dc8d73812d542ad58abff0bf4045cf3b (patch) | |
tree | c668efdceb0b96d1f313314dc7510dd0751a403a | |
parent | f3aa5aa9762ce4ddcd8573436d10b21966c6375a (diff) | |
download | org.eclipse.osee-704d2142dc8d73812d542ad58abff0bf4045cf3b.tar.gz org.eclipse.osee-704d2142dc8d73812d542ad58abff0bf4045cf3b.tar.xz org.eclipse.osee-704d2142dc8d73812d542ad58abff0bf4045cf3b.zip |
bug: Clean-up HSQL Database shutdown
HSQL database is not closing down properly
which causes test databases to be left
behind in the file system.
Change-Id: Iab05452ba685f93077ed7286c7cac451482143a3
4 files changed, 49 insertions, 10 deletions
diff --git a/plugins/org.eclipse.osee.hsqldb/META-INF/MANIFEST.MF b/plugins/org.eclipse.osee.hsqldb/META-INF/MANIFEST.MF index 9680ee46758..c34a39e370f 100644 --- a/plugins/org.eclipse.osee.hsqldb/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.osee.hsqldb/META-INF/MANIFEST.MF @@ -9,6 +9,7 @@ Import-Package: org.eclipse.osee.framework.core.data, org.eclipse.osee.framework.jdk.core.util, org.eclipse.osee.framework.jdk.core.util.network, org.eclipse.osee.framework.logging, + org.hsqldb, org.hsqldb.jdbc, org.hsqldb.persist, org.hsqldb.server diff --git a/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlDbServer.java b/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlDbServer.java index 85ea98f6f4f..01f00646794 100644 --- a/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlDbServer.java +++ b/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlDbServer.java @@ -38,6 +38,12 @@ public class HyperSqlDbServer { instance.shutdown(); } + public static boolean stopServerWithWait() { + instance.shutdown(); + return instance.isShutdown(); + + } + private void startServerInternal(String host, int port, int webPort, IDatabaseInfo dbInfo) throws Exception { OseeLog.logf(HyperSqlDbServer.class, Level.INFO, "Starting HyperSQL Database Server on [%s:%s] with webserver on [%s,%s]....", host, port, host, webPort); @@ -93,4 +99,24 @@ public class HyperSqlDbServer { return knowIfServerUp; } + private boolean isShutdown() { + boolean isDead = false; + int numTimes = CHECK_ALIVE_NUMBER_OF_TIMES; + while (!isDead && numTimes > 0) { + try { + numTimes--; + nwServer.testNotRunning(); + isDead = true; + } catch (Exception e) { + isDead = false; + try { + Thread.sleep(3000); + } catch (InterruptedException ex) { + // Do nothing + } + } + } + return isDead; + } + } diff --git a/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlServerUtil.java b/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlServerUtil.java index ee01177287c..3bb9c353ad7 100644 --- a/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlServerUtil.java +++ b/plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlServerUtil.java @@ -19,6 +19,7 @@ import java.util.Properties; import java.util.logging.Level; import org.eclipse.osee.framework.core.data.IDatabaseInfo; import org.eclipse.osee.framework.logging.OseeLog; +import org.hsqldb.Database; import org.hsqldb.persist.HsqlProperties; import org.hsqldb.server.Server; @@ -63,13 +64,19 @@ public final class HyperSqlServerUtil { public void shutdown() { for (Server server : serverControls) { try { - server.shutdown(); + server.shutdownWithCatalogs(Database.CLOSEMODE_COMPACT); } catch (Exception e) { OseeLog.log(HyperSqlDbServer.class, Level.SEVERE, e.getMessage(), e); } } } + public void testNotRunning() throws Exception { + for (Server server : serverControls) { + server.checkRunning(false); + } + } + public void start() { for (Server server : serverControls) { try { diff --git a/plugins/org.eclipse.osee.orcs.db.mock/src/org/eclipse/osee/orcs/db/mock/internal/TestDatabase.java b/plugins/org.eclipse.osee.orcs.db.mock/src/org/eclipse/osee/orcs/db/mock/internal/TestDatabase.java index 64536d96da2..8b48c7fa2f8 100644 --- a/plugins/org.eclipse.osee.orcs.db.mock/src/org/eclipse/osee/orcs/db/mock/internal/TestDatabase.java +++ b/plugins/org.eclipse.osee.orcs.db.mock/src/org/eclipse/osee/orcs/db/mock/internal/TestDatabase.java @@ -124,21 +124,26 @@ public class TestDatabase { } public void cleanup() { - //TODO issue shutdown command to server; if (registration != null) { registration.unregister(); } System.setProperty("osee.application.server.data", ""); System.setProperty("osee.db.embedded.server", ""); - HyperSqlDbServer.stopServer(); - Runtime.getRuntime().addShutdownHook(new Thread() { - @Override - public void run() { - if (tempFolder != null) { - Lib.deleteDir(tempFolder); - } + boolean isDead = HyperSqlDbServer.stopServerWithWait(); + if (isDead) { + if (tempFolder != null) { + Lib.deleteDir(tempFolder); } - }); + } else { + Runtime.getRuntime().addShutdownHook(new Thread() { + @Override + public void run() { + if (tempFolder != null) { + Lib.deleteDir(tempFolder); + } + } + }); + } } }
\ No newline at end of file |