diff options
author | Roberto E. Escobar | 2012-03-15 19:39:22 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2012-03-15 19:39:22 +0000 |
commit | 939814215ccc5edec6dcbb477b44f61c1d7d0a26 (patch) | |
tree | 5c54f3addd8cc2d4cc3f1ed95fb15352d68b4ef3 | |
parent | 98fec2677d0d432d9140063125458b0a09d3901e (diff) | |
download | org.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.
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; } |