From a786db8ab53c879858268da6a0cbe4ba9956d160 Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Mon, 4 Feb 2008 05:42:54 +0000 Subject: Make TransactionManager creation more flexible. --- .../carbonado/repo/sleepycat/BDBRepository.java | 16 ++++++++------- .../carbonado/repo/sleepycat/BDBStorage.java | 24 +++++++++++----------- 2 files changed, 21 insertions(+), 19 deletions(-) (limited to 'src/main/java/com/amazon/carbonado/repo/sleepycat') diff --git a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepository.java b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepository.java index a0c549b..4bf4e2b 100644 --- a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepository.java +++ b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBRepository.java @@ -63,6 +63,7 @@ import com.amazon.carbonado.sequence.SequenceValueProducer; import com.amazon.carbonado.spi.AbstractRepository; import com.amazon.carbonado.spi.ExceptionTransformer; import com.amazon.carbonado.spi.LobEngine; +import com.amazon.carbonado.spi.TransactionManager; import com.amazon.carbonado.spi.TransactionScope; /** @@ -93,6 +94,7 @@ abstract class BDBRepository extends AbstractRepository private final AtomicReference mRootRef; private final StorableCodecFactory mStorableCodecFactory; private final ExceptionTransformer mExTransformer; + private final BDBTransactionManager mTxnMgr; Checkpointer mCheckpointer; DeadlockDetector mDeadlockDetector; @@ -141,6 +143,7 @@ abstract class BDBRepository extends AbstractRepository mTriggerFactories = builder.getTriggerFactories(); mRootRef = rootRef; mExTransformer = exTransformer; + mTxnMgr = new BDBTransactionManager(mExTransformer, this); mRunCheckpointer = !builder.getReadOnly() && builder.getRunCheckpointer(); mRunDeadlockDetector = builder.getRunDeadlockDetector(); @@ -342,10 +345,6 @@ abstract class BDBRepository extends AbstractRepository return new SequenceValueGenerator(BDBRepository.this, name); } - protected BDBTransactionManager createTransactionManager() { - return new BDBTransactionManager(mExTransformer, this); - } - /** * @see com.amazon.carbonado.spi.RepositoryBuilder#isMaster */ @@ -489,9 +488,12 @@ abstract class BDBRepository extends AbstractRepository return mExTransformer.toRepositoryException(e); } - // Provides access to transaction scope from other classes. - final TransactionScope localTxnScope() { - return localTransactionScope(); + protected final TransactionManager transactionManager() { + return mTxnMgr; + } + + protected final TransactionScope localTransactionScope() { + return mTxnMgr.localScope(); } /** diff --git a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java index e7368ac..126e40f 100644 --- a/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java +++ b/src/main/java/com/amazon/carbonado/repo/sleepycat/BDBStorage.java @@ -203,7 +203,7 @@ abstract class BDBStorage implements Storage, Storag } } - TransactionScope scope = localTxnScope(); + TransactionScope scope = localTransactionScope(); // Lock out shutdown task. scope.getLock().lock(); @@ -317,7 +317,7 @@ abstract class BDBStorage implements Storage, Storag boolean reverseOrder) throws FetchException { - TransactionScope scope = localTxnScope(); + TransactionScope scope = localTransactionScope(); if (reverseRange) { { @@ -447,7 +447,7 @@ abstract class BDBStorage implements Storage, Storag boolean isPrimaryEmpty; try { - TransactionScope scope = mRepository.localTxnScope(); + TransactionScope scope = mRepository.localTransactionScope(); // Lock out shutdown task. scope.getLock().lock(); try { @@ -572,7 +572,7 @@ abstract class BDBStorage implements Storage, Storag } try { - Txn txn = mRepository.localTxnScope().getTxn(); + Txn txn = mRepository.localTransactionScope().getTxn(); return db_compact(txn, mPrimaryDatabase, start, end); } catch (Exception e) { throw mRepository.toRepositoryException(e); @@ -667,8 +667,8 @@ abstract class BDBStorage implements Storage, Storag return mRepository.toRepositoryException(e); } - TransactionScope localTxnScope() { - return mRepository.localTxnScope(); + TransactionScope localTransactionScope() { + return mRepository.localTransactionScope(); } /** @@ -726,7 +726,7 @@ abstract class BDBStorage implements Storage, Storag * prevent threads from starting work that will likely fail along the way. */ void checkClosed() throws FetchException { - TransactionScope scope = localTxnScope(); + TransactionScope scope = localTransactionScope(); // Lock out shutdown task. scope.getLock().lock(); @@ -747,7 +747,7 @@ abstract class BDBStorage implements Storage, Storag } void close() throws Exception { - TransactionScope scope = mRepository.localTxnScope(); + TransactionScope scope = mRepository.localTransactionScope(); scope.getLock().lock(); try { if (mPrimaryDatabase != null) { @@ -998,7 +998,7 @@ abstract class BDBStorage implements Storage, Storag } public byte[] tryLoad(byte[] key) throws FetchException { - TransactionScope scope = mStorage.localTxnScope(); + TransactionScope scope = mStorage.localTransactionScope(); byte[] result; // Lock out shutdown task. scope.getLock().lock(); @@ -1021,7 +1021,7 @@ abstract class BDBStorage implements Storage, Storag } public boolean tryInsert(S storable, byte[] key, byte[] value) throws PersistException { - TransactionScope scope = mStorage.localTxnScope(); + TransactionScope scope = mStorage.localTransactionScope(); Object result; // Lock out shutdown task. scope.getLock().lock(); @@ -1044,7 +1044,7 @@ abstract class BDBStorage implements Storage, Storag } public void store(S storable, byte[] key, byte[] value) throws PersistException { - TransactionScope scope = mStorage.localTxnScope(); + TransactionScope scope = mStorage.localTransactionScope(); // Lock out shutdown task. scope.getLock().lock(); try { @@ -1061,7 +1061,7 @@ abstract class BDBStorage implements Storage, Storag } public boolean tryDelete(byte[] key) throws PersistException { - TransactionScope scope = mStorage.localTxnScope(); + TransactionScope scope = mStorage.localTransactionScope(); // Lock out shutdown task. scope.getLock().lock(); try { -- cgit v1.2.3