luetzkendorf 2004/11/29 10:28:17 Modified: transaction/src/java/org/apache/commons/transaction/util/xa AbstractXAResource.java XidWrapper.java transaction/src/java/org/apache/commons/transaction/file FileResourceManager.java transaction/src/java/org/apache/commons/transaction/locking GenericLock.java transaction/src/java/org/apache/commons/transaction/util RendezvousBarrier.java Log: logging now tests for appropriate logging level as early as possible Revision Changes Path 1.2 +30 -20 jakarta-commons/transaction/src/java/org/apache/commons/transaction/util/xa/AbstractXAResource.java Index: AbstractXAResource.java =================================================================== RCS file: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/util/xa/AbstractXAResource.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AbstractXAResource.java 18 Nov 2004 23:27:19 -0000 1.1 +++ AbstractXAResource.java 29 Nov 2004 18:28:17 -0000 1.2 @@ -53,7 +53,9 @@ protected abstract boolean includeBranchInXid(); public void forget(Xid xid) throws XAException { - getLoggerFacade().logFine("Forgetting transaction branch " + xid); + if (getLoggerFacade().isFineEnabled()) { + getLoggerFacade().logFine("Forgetting transaction branch " + xid); + } TransactionalResource ts = getTransactionalResource(xid); if (ts == null) { throw new XAException(XAException.XAER_NOTA); @@ -69,7 +71,9 @@ throw new XAException(XAException.XAER_NOTA); } - getLoggerFacade().logFine("Committing transaction branch " + ts); + if (getLoggerFacade().isFineEnabled()) { + getLoggerFacade().logFine("Committing transaction branch " + ts); + } if (ts.getStatus() == STATUS_MARKED_ROLLBACK) { throw new XAException(XAException.XA_RBROLLBACK); @@ -94,7 +98,9 @@ throw new XAException(XAException.XAER_NOTA); } - getLoggerFacade().logFine("Rolling back transaction branch " + ts); + if (getLoggerFacade().isFineEnabled()) { + getLoggerFacade().logFine("Rolling back transaction branch " + ts); + } ts.rollback(); setCurrentlyActiveTransactionalResource(null); @@ -108,7 +114,9 @@ throw new XAException(XAException.XAER_NOTA); } - getLoggerFacade().logFine("Preparing transaction branch " + ts); + if (getLoggerFacade().isFineEnabled()) { + getLoggerFacade().logFine("Preparing transaction branch " + ts); + } if (ts.getStatus() == STATUS_MARKED_ROLLBACK) { throw new XAException(XAException.XA_RBROLLBACK); @@ -127,12 +135,13 @@ if (getCurrentlyActiveTransactionalResource() == null) { throw new XAException(XAException.XAER_INVAL); } - getLoggerFacade().logFine( - "Thread " - + Thread.currentThread() - + (flags == TMSUSPEND ? " suspends" : flags == TMFAIL ? " fails" : " ends") - + " work on behalf of transaction branch " - + ts); + if (getLoggerFacade().isFineEnabled()) { + getLoggerFacade().logFine(new StringBuffer(128) + .append("Thread ").append(Thread.currentThread()) + .append(flags == TMSUSPEND ? " suspends" : flags == TMFAIL ? " fails" : " ends") + .append(" work on behalf of transaction branch ") + .append(ts).toString()); + } switch (flags) { case TMSUSPEND : @@ -153,13 +162,14 @@ if (getCurrentlyActiveTransactionalResource() != null) { throw new XAException(XAException.XAER_INVAL); } - getLoggerFacade().logFine( - "Thread " - + Thread.currentThread() - + (flags == TMNOFLAGS ? " starts" : flags == TMJOIN ? " joins" : " resumes") - + " work on behalf of transaction branch " - + xid); - + if (getLoggerFacade().isFineEnabled()) { + getLoggerFacade().logFine(new StringBuffer(128) + .append("Thread ").append(Thread.currentThread()) + .append(flags == TMNOFLAGS ? " starts" : flags == TMJOIN ? " joins" : " resumes") + .append(" work on behalf of transaction branch ") + .append(xid).toString()); + } + TransactionalResource ts; switch (flags) { // a new transaction 1.2 +8 -5 jakarta-commons/transaction/src/java/org/apache/commons/transaction/util/xa/XidWrapper.java Index: XidWrapper.java =================================================================== RCS file: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/util/xa/XidWrapper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- XidWrapper.java 18 Nov 2004 23:27:19 -0000 1.1 +++ XidWrapper.java 29 Nov 2004 18:28:17 -0000 1.2 @@ -52,10 +52,13 @@ private XidWrapper(Xid xid, boolean includeBranch) { this.xid = xid; // do calculations once for performance - asString = - new String(xid.getGlobalTransactionId()) - + (includeBranch ? "-" + new String(xid.getBranchQualifier()) : ""); + StringBuffer b = new StringBuffer(64); + b.append(xid.getGlobalTransactionId()); + if (includeBranch) { + b.append("-").append(xid.getBranchQualifier()); + } + asString = b.toString(); hashCode = asString.hashCode(); } 1.2 +36 -29 jakarta-commons/transaction/src/java/org/apache/commons/transaction/file/FileResourceManager.java Index: FileResourceManager.java =================================================================== RCS file: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/file/FileResourceManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- FileResourceManager.java 18 Nov 2004 23:27:19 -0000 1.1 +++ FileResourceManager.java 29 Nov 2004 18:28:17 -0000 1.2 @@ -342,7 +342,7 @@ if (context == null) { msecs = getDefaultTransactionTimeout(); } else { - msecs = ((TransactionContext) context).timeoutMSecs; + msecs = context.timeoutMSecs; } return msecs; } @@ -351,7 +351,7 @@ assureRMReady(); TransactionContext context = getContext(txId); if (context != null) { - ((TransactionContext) context).timeoutMSecs = mSecs; + context.timeoutMSecs = mSecs; } else { throw new ResourceManagerException(ERR_NO_TX, txId); } @@ -372,7 +372,7 @@ TransactionContext context = getContext(txId); if (context != null) { if (level != ISOLATION_LEVEL_READ_COMMITTED || level != ISOLATION_LEVEL_REPEATABLE_READ) { - ((TransactionContext) context).isolationLevel = level; + context.isolationLevel = level; } else { throw new ResourceManagerException(ERR_ISOLATION_LEVEL_UNSUPPORTED, txId); } @@ -462,7 +462,7 @@ public void startTransaction(Object txId) throws ResourceManagerException { - logger.logFine("Starting Tx " + txId); + if (logger.isFineEnabled()) logger.logFine("Starting Tx " + txId); assureStarted(); // can only start a new transaction when not already stopping if (txId == null || txId.toString().length() == 0) { @@ -526,7 +526,7 @@ return PREPARE_FAILURE; } - logger.logFine("Preparing Tx " + txId); + if (logger.isFineEnabled()) logger.logFine("Preparing Tx " + txId); int prepareStatus = PREPARE_FAILURE; @@ -549,7 +549,7 @@ } context.status = STATUS_PREPARED; context.saveState(); - logger.logFine("Prepared Tx " + txId); + if (logger.isFineEnabled()) logger.logFine("Prepared Tx " + txId); return prepareStatus; } @@ -562,7 +562,7 @@ synchronized (context) { try { - logger.logFine("Rolling back Tx " + txId); + if (logger.isFineEnabled()) logger.logFine("Rolling back Tx " + txId); context.status = STATUS_ROLLING_BACK; context.saveState(); @@ -572,7 +572,7 @@ globalTransactions.remove(txId); context.cleanUp(); - logger.logFine("Rolled back Tx " + txId); + if (logger.isFineEnabled()) logger.logFine("Rolled back Tx " + txId); // any system or runtime exceptions or errors thrown in rollback means we are in deep trouble, set the dirty flag } catch (Error e) { @@ -601,7 +601,7 @@ synchronized (context) { try { - logger.logFine("Committing Tx " + txId); + if (logger.isFineEnabled()) logger.logFine("Committing Tx " + txId); context.status = STATUS_COMMITTING; context.saveState(); @@ -611,7 +611,7 @@ globalTransactions.remove(txId); context.cleanUp(); - logger.logFine("Committed Tx " + txId); + if (logger.isFineEnabled()) logger.logFine("Committed Tx " + txId); // any system or runtime exceptions or errors thrown in rollback means we are in deep trouble, set the dirty flag } catch (Error e) { @@ -641,7 +641,8 @@ TransactionContext context; synchronized (globalTransactions) { txId = generatedUniqueTxId(); - logger.logFiner("Creating temporary light weight tx " + txId + " to check for exists"); + if (logger.isFinerEnabled()) + logger.logFiner("Creating temporary light weight tx " + txId + " to check for exists"); context = new TransactionContext(txId); context.isLightWeight = true; // XXX higher isolation might be needed to make sure upgrade to commit lock always works @@ -654,7 +655,8 @@ context.freeLocks(); globalTransactions.remove(txId); - logger.logFiner("Removing temporary light weight tx " + txId); + if (logger.isFinerEnabled()) + logger.logFiner("Removing temporary light weight tx " + txId); return exists; } @@ -670,7 +672,7 @@ public void deleteResource(Object txId, Object resourceId, boolean assureOnly) throws ResourceManagerException { - logger.logFine(txId + " deleting " + resourceId); + if (logger.isFineEnabled()) logger.logFine(txId + " deleting " + resourceId); assureLock(resourceId, txId, false); @@ -707,7 +709,7 @@ public void createResource(Object txId, Object resourceId, boolean assureOnly) throws ResourceManagerException { - logger.logFine(txId + " creating " + resourceId); + if (logger.isFineEnabled()) logger.logFine(txId + " creating " + resourceId); assureLock(resourceId, txId, false); @@ -749,7 +751,8 @@ Object txId; synchronized (globalTransactions) { txId = generatedUniqueTxId(); - logger.logFiner("Creating temporary light weight tx " + txId + " for reading"); + if (logger.isFinerEnabled()) + logger.logFiner("Creating temporary light weight tx " + txId + " for reading"); TransactionContext context = new TransactionContext(txId); context.isLightWeight = true; // XXX higher isolation might be needed to make sure upgrade to commit lock always works @@ -764,7 +767,7 @@ public InputStream readResource(Object txId, Object resourceId) throws ResourceManagerException { - logger.logFine(txId + " reading " + resourceId); + if (logger.isFineEnabled()) logger.logFine(txId + " reading " + resourceId); assureLock(resourceId, txId, true); @@ -785,7 +788,7 @@ public OutputStream writeResource(Object txId, Object resourceId) throws ResourceManagerException { - logger.logFine(txId + " writing " + resourceId); + if (logger.isFineEnabled()) logger.logFine(txId + " writing " + resourceId); assureLock(resourceId, txId, false); @@ -1097,7 +1100,8 @@ */ protected void registerOpenResource(Object openResource) { - logger.logFiner("Registering open resource " + openResource); + if (logger.isFinerEnabled()) + logger.logFiner("Registering open resource " + openResource); globalOpenResources.add(openResource); } @@ -1114,7 +1118,7 @@ } protected void closeOpenResource(Object openResource) { - logger.logFiner("Releasing resource " + openResource); + if (logger.isFinerEnabled()) logger.logFiner("Releasing resource " + openResource); globalOpenResources.remove(openResource); if (openResource instanceof InputStream) { InputStream is = (InputStream) openResource; @@ -1556,18 +1560,21 @@ } synchronized (context) { if (context.isLightWeight) { - logger.logFiner("Upon close of resource removing temporary light weight tx " + txId); + if (logger.isFinerEnabled()) + logger.logFiner("Upon close of resource removing temporary light weight tx " + txId); context.freeLocks(); globalTransactions.remove(txId); } else { // release access lock in order to allow other transactions to commit MultiLevelLock lock = lockManager.atomicGetOrCreateLock(resourceId); if (lock.getLockLevel(txId) == LOCK_ACCESS) { - logger.logFiner( - "Upon close of resource releasing access lock for tx " - + txId - + " on resource at " - + resourceId); + if (logger.isFinerEnabled()) { + logger.logFiner( + "Upon close of resource releasing access lock for tx " + + txId + + " on resource at " + + resourceId); + } lock.release(txId); } } 1.2 +69 -55 jakarta-commons/transaction/src/java/org/apache/commons/transaction/locking/GenericLock.java Index: GenericLock.java =================================================================== RCS file: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/locking/GenericLock.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- GenericLock.java 18 Nov 2004 23:27:17 -0000 1.1 +++ GenericLock.java 29 Nov 2004 18:28:17 -0000 1.2 @@ -195,23 +195,27 @@ long timeoutMSecs) throws InterruptedException { - logger.logFiner( - ownerId.toString() - + " trying to acquire lock for " - + resourceId.toString() - + " at level " - + targetLockLevel - + " at " - + System.currentTimeMillis()); + if (logger.isFinerEnabled()) { + logger.logFiner( + ownerId.toString() + + " trying to acquire lock for " + + resourceId.toString() + + " at level " + + targetLockLevel + + " at " + + System.currentTimeMillis()); + } if (tryLock(ownerId, targetLockLevel, compatibility)) { - - logger.logFiner( - ownerId.toString() - + " actually acquired lock for " - + resourceId.toString() - + " at " - + System.currentTimeMillis()); + + if (logger.isFinerEnabled()) { + logger.logFiner( + ownerId.toString() + + " actually acquired lock for " + + resourceId.toString() + + " at " + + System.currentTimeMillis()); + } return true; } else { @@ -223,24 +227,28 @@ remaining > 0; remaining = timeoutMSecs - (System.currentTimeMillis() - started)) { - logger.logFiner( - ownerId.toString() - + " waiting on " - + resourceId.toString() - + " for msecs " - + timeoutMSecs - + " at " - + System.currentTimeMillis()); + if (logger.isFinerEnabled()) { + logger.logFiner( + ownerId.toString() + + " waiting on " + + resourceId.toString() + + " for msecs " + + timeoutMSecs + + " at " + + System.currentTimeMillis()); + } wait(remaining); if (tryLock(ownerId, targetLockLevel, compatibility)) { - logger.logFiner( - ownerId.toString() - + " waiting on " - + resourceId.toString() - + " eventually got the lock at " - + System.currentTimeMillis()); + if (logger.isFinerEnabled()) { + logger.logFiner( + ownerId.toString() + + " waiting on " + + resourceId.toString() + + " eventually got the lock at " + + System.currentTimeMillis()); + } return true; } @@ -255,12 +263,14 @@ */ public synchronized void release(Object ownerId) { if (owners.remove(ownerId) != null) { - logger.logFiner( - ownerId.toString() - + " releasing lock for " - + resourceId.toString() - + " at " - + System.currentTimeMillis()); + if (logger.isFinerEnabled()) { + logger.logFiner( + ownerId.toString() + + " releasing lock for " + + resourceId.toString() + + " at " + + System.currentTimeMillis()); + } notifyAll(); } } @@ -351,26 +361,30 @@ // be sure there exists at most one lock per owner if (lock != null) { - logger.logFinest( - ownerId.toString() - + " upgrading lock for " - + resourceId.toString() - + " to level " - + targetLockLevel - + " at " - + System.currentTimeMillis()); + if (logger.isFinestEnabled()) { + logger.logFinest( + ownerId.toString() + + " upgrading lock for " + + resourceId.toString() + + " to level " + + targetLockLevel + + " at " + + System.currentTimeMillis()); + } lock.lockLevel = targetLockLevel; } else { - logger.logFinest( - ownerId.toString() - + " getting new lock for " - + resourceId.toString() - + " at level " - + targetLockLevel - + " at " - + System.currentTimeMillis()); + if (logger.isFinestEnabled()) { + logger.logFinest( + ownerId.toString() + + " getting new lock for " + + resourceId.toString() + + " at level " + + targetLockLevel + + " at " + + System.currentTimeMillis()); + } owners.put(ownerId, new LockOwner(ownerId, targetLockLevel)); } 1.2 +25 -19 jakarta-commons/transaction/src/java/org/apache/commons/transaction/util/RendezvousBarrier.java Index: RendezvousBarrier.java =================================================================== RCS file: /home/cvs/jakarta-commons/transaction/src/java/org/apache/commons/transaction/util/RendezvousBarrier.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- RendezvousBarrier.java 18 Nov 2004 23:27:18 -0000 1.1 +++ RendezvousBarrier.java 29 Nov 2004 18:28:17 -0000 1.2 @@ -61,7 +61,8 @@ public synchronized void call() { count++; if (count >= parties) { - logger.logFine("Thread " + Thread.currentThread().getName() + " by CALL COMPLETING barrier " + name); + if (logger.isFineEnabled()) + logger.logFine("Thread " + Thread.currentThread().getName() + " by CALL COMPLETING barrier " + name); notifyAll(); } } @@ -76,26 +77,31 @@ public synchronized void meet() throws InterruptedException { count++; if (count >= parties) { - logger.logFine("Thread " + Thread.currentThread().getName() + " by MEET COMPLETING barrier " + name); + if (logger.isFineEnabled()) + logger.logFine("Thread " + Thread.currentThread().getName() + " by MEET COMPLETING barrier " + name); notifyAll(); } else { - logger.logFine( - "At barrier " - + name - + " thread " - + Thread.currentThread().getName() - + " WAITING for " - + (parties - count) - + " of " - + parties - + " parties"); + if (logger.isFineEnabled()) { + logger.logFine( + "At barrier " + + name + + " thread " + + Thread.currentThread().getName() + + " WAITING for " + + (parties - count) + + " of " + + parties + + " parties"); + } wait(timeout); if (count == 0) { // means the barrier has been reset } else if (count >= parties) { - logger.logFine("Thread " + Thread.currentThread().getName() + " CONTINUING at barrier " + name); + if (logger.isFineEnabled()) + logger.logFine("Thread " + Thread.currentThread().getName() + " CONTINUING at barrier " + name); } else { - logger.logFine("Thread " + Thread.currentThread().getName() + " FAILING at barrier " + name); + if (logger.isFineEnabled()) + logger.logFine("Thread " + Thread.currentThread().getName() + " FAILING at barrier " + name); notifyAll(); } } @@ -105,7 +111,7 @@ * Releases all waiting threads and resets the number of parties already arrived. */ public synchronized void reset() { - logger.logFine("Resetting barrier " + name); + if (logger.isFineEnabled()) logger.logFine("Resetting barrier " + name); count = 0; notifyAll(); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]