From: <tk...@hy...> - 2007-09-24 18:04:29
|
Author: tkeeney Date: 2007-09-24 11:04:25 -0700 (Mon, 24 Sep 2007) New Revision: 5999 URL: http://svn.hyperic.org/?view=rev&root=Hyperic+HQ&revision=5999 Modified: trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java Log: Since we're managing the txn explicitly through JDBC, there's no need to use container managed txns. Changed class to use bean managed txns in the addData methods. Modified: trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java =================================================================== --- trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java 2007-09-24 17:31:04 UTC (rev 5998) +++ trunk/src/org/hyperic/hq/measurement/server/session/DataManagerEJBImpl.java 2007-09-24 18:04:25 UTC (rev 5999) @@ -86,8 +86,7 @@ * local-jndi-name="LocalDataManager" * view-type="local" * type="Stateless" - * - * @ejb:transaction type="NOTSUPPORTED" + * transaction-type="Bean" */ public class DataManagerEJBImpl extends SessionEJB implements SessionBean { private static final String logCtx = DataManagerEJBImpl.class.getName(); @@ -119,8 +118,6 @@ private static final int IND_CFG_COUNT = MeasurementConstants.IND_CFG_COUNT; private static final int IND_LAST_TIME = MeasurementConstants.IND_LAST_TIME; - private SessionContext _ctx; - // Pager class name private boolean confDefaultsLoaded = false; @@ -224,7 +221,6 @@ * @param data a list of {@link DataPoint}s * * @ejb:interface-method - * @ejb:transaction type="NOTSUPPORTED" */ public boolean addData(List data) { if (shouldAbortDataInsertion(data)) { @@ -240,33 +236,39 @@ Connection conn = safeGetConnection(); if (conn == null) { - // We are in a bad state. Set txn rollback in case this txn was - // initiated by the client. - _ctx.setRollbackOnly(); return false; } try { boolean autocommit = conn.getAutoCommit(); - conn.setAutoCommit(false); - if (dialect.supportsMultiInsertStmt()) { - succeeded = insertDataWithOneInsert(data, conn); - } else { - succeeded = insertDataInBatch(data, conn); - } + + try { + conn.setAutoCommit(false); + if (dialect.supportsMultiInsertStmt()) { + succeeded = insertDataWithOneInsert(data, conn); + } else { + succeeded = insertDataInBatch(data, conn); + } - if (succeeded) { - _log.debug("Inserting data in a single transaction succeeded."); - sendMetricEvents(data); - } else { - _log.debug("Inserting data in a single transaction failed." + - " Rolling back transaction."); + if (succeeded) { + _log.debug("Inserting data in a single transaction succeeded."); + conn.commit(); + sendMetricEvents(data); + } else { + _log.debug("Inserting data in a single transaction failed." + + " Rolling back transaction."); + conn.rollback(); + conn.setAutoCommit(true); + addDataWithCommits(data, true, conn); + } + + } catch (SQLException e) { conn.rollback(); - addDataWithCommits(data, true, conn); + throw e; + } finally { + conn.setAutoCommit(autocommit); } - conn.commit(); - conn.setAutoCommit(autocommit); } catch (SQLException e) { _log.debug("Transaction failed around inserting metric data.", e); @@ -286,7 +288,6 @@ * XXX: Why would you ever not want to overwrite? * * @ejb:interface-method - * @ejb:transaction type="NOTSUPPORTED" */ public void addData(List data, boolean overwrite) { /** @@ -2326,7 +2327,5 @@ public void ejbActivate() {} public void ejbPassivate() {} public void ejbRemove() {} - public void setSessionContext(SessionContext ctx) { - _ctx = ctx; - } + public void setSessionContext(SessionContext ctx) {} } |