Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto E. Escobar2013-06-24 23:54:54 +0000
committerRoberto E. Escobar2013-06-25 23:10:14 +0000
commit704d2142dc8d73812d542ad58abff0bf4045cf3b (patch)
treec668efdceb0b96d1f313314dc7510dd0751a403a
parentf3aa5aa9762ce4ddcd8573436d10b21966c6375a (diff)
downloadorg.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
-rw-r--r--plugins/org.eclipse.osee.hsqldb/META-INF/MANIFEST.MF1
-rw-r--r--plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlDbServer.java26
-rw-r--r--plugins/org.eclipse.osee.hsqldb/src/org/eclipse/osee/hsqldb/HyperSqlServerUtil.java9
-rw-r--r--plugins/org.eclipse.osee.orcs.db.mock/src/org/eclipse/osee/orcs/db/mock/internal/TestDatabase.java23
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

Back to the top