Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto E. Escobar2012-03-15 19:39:22 +0000
committerRyan D. Brooks2012-03-15 19:39:22 +0000
commit939814215ccc5edec6dcbb477b44f61c1d7d0a26 (patch)
tree5c54f3addd8cc2d4cc3f1ed95fb15352d68b4ef3
parent98fec2677d0d432d9140063125458b0a09d3901e (diff)
downloadorg.eclipse.osee-939814215ccc5edec6dcbb477b44f61c1d7d0a26.tar.gz
org.eclipse.osee-939814215ccc5edec6dcbb477b44f61c1d7d0a26.tar.xz
org.eclipse.osee-939814215ccc5edec6dcbb477b44f61c1d7d0a26.zip
refinement: Improve OseeConnection and connection pooling
Synchronize expireLease method. Add check to the close method to ensure only open connections are returned to the pool. If the connection has been closed, destroy the connection and don't add it back to the connection pool.
-rw-r--r--plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/core/OseeConnection.java10
-rw-r--r--plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/internal/core/OseeConnectionImpl.java23
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/BaseDbSaxHandler.java3
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/MetaDataSaxHandler.java3
-rw-r--r--plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/indexer/callable/PurgeAllTagsDatabaseCallable.java3
5 files changed, 23 insertions, 19 deletions
diff --git a/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/core/OseeConnection.java b/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/core/OseeConnection.java
index db9d74d0724..4b1ce755491 100644
--- a/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/core/OseeConnection.java
+++ b/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/core/OseeConnection.java
@@ -10,15 +10,12 @@
*******************************************************************************/
package org.eclipse.osee.framework.database.core;
-import java.io.Closeable;
import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
-public abstract class OseeConnection implements Closeable {
+public abstract class OseeConnection {
- @Override
- public abstract void close();
+ public abstract void close() throws OseeCoreException;
public abstract boolean isClosed() throws OseeCoreException;
@@ -30,9 +27,10 @@ public abstract class OseeConnection implements Closeable {
protected abstract boolean getAutoCommit() throws OseeCoreException;
- protected abstract void commit() throws SQLException;
+ protected abstract void commit() throws OseeCoreException;
protected abstract void rollback() throws OseeCoreException;
protected abstract void destroy() throws OseeCoreException;
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/internal/core/OseeConnectionImpl.java b/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/internal/core/OseeConnectionImpl.java
index e0a7521cea4..d923c97cebc 100644
--- a/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/internal/core/OseeConnectionImpl.java
+++ b/plugins/org.eclipse.osee.framework.database/src/org/eclipse/osee/framework/database/internal/core/OseeConnectionImpl.java
@@ -25,7 +25,7 @@ public class OseeConnectionImpl extends OseeConnection {
private final OseeConnectionPoolImpl pool;
private final Connection conn;
private volatile boolean inuse;
- private long lastUsedTime;
+ private volatile long lastUsedTime;
public OseeConnectionImpl(Connection conn, OseeConnectionPoolImpl pool) {
super();
@@ -36,8 +36,12 @@ public class OseeConnectionImpl extends OseeConnection {
}
@Override
- public void close() {
- pool.returnConnection(this);
+ public void close() throws OseeCoreException {
+ if (isClosed()) {
+ destroy();
+ } else {
+ pool.returnConnection(this);
+ }
}
@Override
@@ -88,12 +92,12 @@ public class OseeConnectionImpl extends OseeConnection {
@Override
protected void destroy() throws OseeCoreException {
+ pool.removeConnection(this);
try {
conn.close();
} catch (SQLException ex) {
OseeExceptions.wrapAndThrow(ex);
}
- pool.removeConnection(this);
}
boolean inUse() {
@@ -104,7 +108,7 @@ public class OseeConnectionImpl extends OseeConnection {
return lastUsedTime;
}
- void expireLease() {
+ synchronized void expireLease() {
inuse = false;
lastUsedTime = System.currentTimeMillis();
}
@@ -129,8 +133,12 @@ public class OseeConnectionImpl extends OseeConnection {
}
@Override
- protected void commit() throws SQLException {
- conn.commit();
+ protected void commit() throws OseeCoreException {
+ try {
+ conn.commit();
+ } catch (SQLException ex) {
+ OseeExceptions.wrapAndThrow(ex);
+ }
}
@Override
@@ -141,4 +149,5 @@ public class OseeConnectionImpl extends OseeConnection {
OseeExceptions.wrapAndThrow(ex);
}
}
+
} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/BaseDbSaxHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/BaseDbSaxHandler.java
index 0294644385c..fb9ea1b5b3b 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/BaseDbSaxHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/BaseDbSaxHandler.java
@@ -19,7 +19,6 @@ import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.database.IOseeDatabaseService;
import org.eclipse.osee.framework.database.core.OseeConnection;
import org.eclipse.osee.framework.jdk.core.type.PropertyStore;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.logger.Log;
import org.eclipse.osee.orcs.db.internal.exchange.TranslationManager;
@@ -130,7 +129,7 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler {
}
}
} finally {
- Lib.close(connection);
+ connection.close();
}
return isTruncateSupported;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/MetaDataSaxHandler.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/MetaDataSaxHandler.java
index 0ed9821517b..c255d0f21a9 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/MetaDataSaxHandler.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/exchange/handler/MetaDataSaxHandler.java
@@ -22,7 +22,6 @@ import org.eclipse.osee.framework.database.IOseeDatabaseService;
import org.eclipse.osee.framework.database.core.OseeConnection;
import org.eclipse.osee.framework.database.core.SQL3DataType;
import org.eclipse.osee.framework.database.core.SupportedDatabase;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.jdk.core.util.io.xml.AbstractSaxHandler;
import org.eclipse.osee.orcs.db.internal.exchange.ExportImportXml;
@@ -106,7 +105,7 @@ public class MetaDataSaxHandler extends AbstractSaxHandler {
processMetaData(targetDbMetadata, dbMetaData, sourceTables);
}
} finally {
- Lib.close(connection);
+ connection.close();
}
return targetDbMetadata;
}
diff --git a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/indexer/callable/PurgeAllTagsDatabaseCallable.java b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/indexer/callable/PurgeAllTagsDatabaseCallable.java
index dfe99277470..cd6cdb93694 100644
--- a/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/indexer/callable/PurgeAllTagsDatabaseCallable.java
+++ b/plugins/org.eclipse.osee.orcs.db/src/org/eclipse/osee/orcs/db/internal/search/indexer/callable/PurgeAllTagsDatabaseCallable.java
@@ -17,7 +17,6 @@ import org.eclipse.osee.database.schema.DatabaseCallable;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.database.IOseeDatabaseService;
import org.eclipse.osee.framework.database.core.OseeConnection;
-import org.eclipse.osee.framework.jdk.core.util.Lib;
import org.eclipse.osee.logger.Log;
/**
@@ -71,7 +70,7 @@ public final class PurgeAllTagsDatabaseCallable extends DatabaseCallable<Integer
}
}
} finally {
- Lib.close(connection);
+ connection.close();
}
return isTruncateSupported;
}

Back to the top