JBoss Cache SVN: r7248 - benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-12-03 11:36:57 -0500 (Wed, 03 Dec 2008)
New Revision: 7248
Modified:
benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RC.xml
benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RR.xml
Log:
Modified: benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RC.xml
===================================================================
--- benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RC.xml 2008-12-03 16:29:44 UTC (rev 7247)
+++ benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RC.xml 2008-12-03 16:36:57 UTC (rev 7248)
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.0">
- <locking isolationLevel="READ_COMMITTED" lockAcquisitionTimeout="10000" nodeLockingScheme="mvcc" concurrencyLevel="300"/>
+ <locking isolationLevel="READ_COMMITTED" lockAcquisitionTimeout="600000" nodeLockingScheme="mvcc" concurrencyLevel="3000"
+ lockParentForChildInsertRemove="true"/>
<transaction transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup"/>
<stateRetrieval timeout="20000" fetchInMemoryState="false"/>
<transport clusterName="JBossCache-Cluster"/>
Modified: benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RR.xml
===================================================================
--- benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RR.xml 2008-12-03 16:29:44 UTC (rev 7247)
+++ benchmarks/benchmark-fwk/trunk/cache-products/jbosscache-3.0.0/conf/mvcc-local-RR.xml 2008-12-03 16:36:57 UTC (rev 7248)
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:jboss:jbosscache-core:config:3.0">
- <locking isolationLevel="REPEATABLE_READ" lockAcquisitionTimeout="10000" nodeLockingScheme="mvcc" concurrencyLevel="300"/>
+ <locking isolationLevel="REPEATABLE_READ" lockAcquisitionTimeout="600000" nodeLockingScheme="mvcc" concurrencyLevel="3000"
+lockParentForChildInsertRemove="true"/>
<transaction transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup"/>
<stateRetrieval timeout="20000" fetchInMemoryState="false"/>
<transport clusterName="JBossCache-Cluster"/>
15 years, 5 months
JBoss Cache SVN: r7247 - in core/branches/flat/src/main/java/org/jboss/starobrno: atomic and 4 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-12-03 11:29:44 -0500 (Wed, 03 Dec 2008)
New Revision: 7247
Modified:
core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java
core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java
core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapProxy.java
core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java
core/branches/flat/src/main/java/org/jboss/starobrno/batch/BatchContainer.java
core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/BatchingInterceptor.java
core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java
core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java
core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java
core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java
Log:
Improvements in auto batching
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/CacheDelegate.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -21,14 +21,6 @@
*/
package org.jboss.starobrno;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-
import org.jboss.cache.CacheStatus;
import org.jboss.cache.Version;
import org.jboss.cache.buddyreplication.BuddyManager;
@@ -40,12 +32,7 @@
import org.jboss.starobrno.commands.CommandsFactory;
import org.jboss.starobrno.commands.read.GetKeyValueCommand;
import org.jboss.starobrno.commands.read.SizeCommand;
-import org.jboss.starobrno.commands.write.ClearCommand;
-import org.jboss.starobrno.commands.write.EvictCommand;
-import org.jboss.starobrno.commands.write.PutKeyValueCommand;
-import org.jboss.starobrno.commands.write.PutMapCommand;
-import org.jboss.starobrno.commands.write.RemoveCommand;
-import org.jboss.starobrno.commands.write.ReplaceCommand;
+import org.jboss.starobrno.commands.write.*;
import org.jboss.starobrno.config.Configuration;
import org.jboss.starobrno.config.ConfigurationException;
import org.jboss.starobrno.container.DataContainer;
@@ -65,6 +52,13 @@
import org.jboss.starobrno.transaction.TransactionTable;
import org.jgroups.Address;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/**
* @author Mircea.Markus(a)jboss.com
*/
@@ -434,4 +428,9 @@
{
return getAtomicMap(key);
}
+
+ public BatchContainer getBatchContainer()
+ {
+ return batchContainer;
+ }
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/CacheSPI.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -21,18 +21,13 @@
*/
package org.jboss.starobrno;
-import java.util.List;
-
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
-
import net.jcip.annotations.ThreadSafe;
-
import org.jboss.cache.Node;
import org.jboss.cache.NodeSPI;
import org.jboss.cache.buddyreplication.BuddyManager;
import org.jboss.cache.buddyreplication.GravitateResult;
import org.jboss.cache.marshall.Marshaller;
+import org.jboss.starobrno.batch.BatchContainer;
import org.jboss.starobrno.context.InvocationContext;
import org.jboss.starobrno.factories.ComponentRegistry;
import org.jboss.starobrno.interceptors.base.CommandInterceptor;
@@ -45,6 +40,10 @@
import org.jboss.starobrno.transaction.GlobalTransaction;
import org.jboss.starobrno.transaction.TransactionTable;
+import javax.transaction.Transaction;
+import javax.transaction.TransactionManager;
+import java.util.List;
+
/**
* A more detailed interface to {@link Cache}, which is used when writing plugins for or extending JBoss Cache. A reference
* to this interface should only be obtained when it is passed in to your code, for example when you write an
@@ -215,4 +214,6 @@
Object getDirect(Object key);
LockManager getLockManager();
+
+ BatchContainer getBatchContainer();
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapProxy.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapProxy.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/atomic/AtomicHashMapProxy.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -22,6 +22,7 @@
package org.jboss.starobrno.atomic;
import org.jboss.starobrno.Cache;
+import org.jboss.starobrno.CacheSPI;
import org.jboss.starobrno.batch.AutoBatchSupport;
import java.util.Collection;
@@ -36,11 +37,14 @@
public class AtomicHashMapProxy<K, V> extends AutoBatchSupport implements AtomicMap<K, V>
{
Object deltaMapKey;
+ Cache cache;
public AtomicHashMapProxy(Cache cache, Object deltaMapKey)
{
this.cache = cache;
this.deltaMapKey = deltaMapKey;
+ assertBatchingSupported(cache.getConfiguration());
+ this.batchContainer = ((CacheSPI) cache).getBatchContainer();
}
// internal helper, reduces lots of casts.
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -22,7 +22,8 @@
package org.jboss.starobrno.batch;
import net.jcip.annotations.NotThreadSafe;
-import org.jboss.starobrno.Cache;
+import org.jboss.starobrno.config.Configuration;
+import org.jboss.starobrno.config.ConfigurationException;
/**
* Enables for automatic batching.
@@ -40,12 +41,18 @@
return new BatchDetails();
}
};
- protected Cache cache;
+ protected BatchContainer batchContainer;
+ protected void assertBatchingSupported(Configuration c)
+ {
+ if (!c.isInvocationBatchingEnabled())
+ throw new ConfigurationException("Invocation batching not enabled in current configuration! Please use the <invocationBatching /> element.");
+ }
+
protected void startAtomic()
{
BatchDetails bd = batchDetails.get();
- if (!bd.startedBatch) bd.startedBatch = cache.startBatch();
+ if (!bd.startedBatch) bd.startedBatch = batchContainer.startBatch(true);
bd.invocationCount++;
}
@@ -55,7 +62,7 @@
bd.invocationCount--;
if (bd.startedBatch && bd.invocationCount == 0)
{
- cache.endBatch(true);
+ batchContainer.endBatch(true, true);
bd.startedBatch = false;
}
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/batch/BatchContainer.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/batch/BatchContainer.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/batch/BatchContainer.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -38,6 +38,14 @@
{
TransactionManager transactionManager;
private ThreadLocal<Transaction> batchTransactionContainer = new ThreadLocal<Transaction>();
+ private ThreadLocal<Boolean> suspendTxAfterInvocation = new ThreadLocal<Boolean>()
+ {
+ @Override
+ protected Boolean initialValue()
+ {
+ return false;
+ }
+ };
@Inject
void inject(TransactionManager transactionManager)
@@ -53,12 +61,22 @@
*/
public boolean startBatch() throws CacheException
{
+ return startBatch(false);
+ }
+
+ public boolean startBatch(boolean autoBatch) throws CacheException
+ {
try
{
if (transactionManager.getTransaction() == null && batchTransactionContainer.get() == null)
{
transactionManager.begin();
- batchTransactionContainer.set(transactionManager.suspend());
+ suspendTxAfterInvocation.set(!autoBatch);
+
+ if (autoBatch)
+ batchTransactionContainer.set(transactionManager.getTransaction());
+ else
+ batchTransactionContainer.set(transactionManager.suspend()); // do not suspend if this is from an AutoBatch!
return true;
}
return false;
@@ -71,13 +89,21 @@
public void endBatch(boolean success)
{
+ endBatch(false, success);
+ }
+
+ public void endBatch(boolean autoBatch, boolean success)
+ {
Transaction tx = batchTransactionContainer.get();
if (tx == null) return;
Transaction existingTx = null;
try
{
existingTx = transactionManager.getTransaction();
- transactionManager.resume(tx);
+
+ if ((existingTx == null && !autoBatch) || !tx.equals(existingTx))
+ transactionManager.resume(tx);
+
if (success)
tx.commit();
else
@@ -92,7 +118,7 @@
batchTransactionContainer.remove();
try
{
- if (existingTx != null) transactionManager.resume(existingTx);
+ if (!autoBatch && existingTx != null) transactionManager.resume(existingTx);
}
catch (Exception e)
{
@@ -105,4 +131,9 @@
{
return batchTransactionContainer.get();
}
+
+ public boolean isSuspendTxAfterInvocation()
+ {
+ return suspendTxAfterInvocation.get();
+ }
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/BatchingInterceptor.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/BatchingInterceptor.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/BatchingInterceptor.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -72,7 +72,7 @@
}
finally
{
- if (tx != null && transactionManager.getTransaction() != null)
+ if (tx != null && transactionManager.getTransaction() != null && batchContainer.isSuspendTxAfterInvocation())
transactionManager.suspend();
}
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/NodeImpl.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -26,9 +26,7 @@
import org.jboss.starobrno.util.Immutables;
import org.jboss.starobrno.util.Util;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
/**
* Implementation backed by an {@link AtomicMap}
@@ -78,9 +76,11 @@
return Immutables.immutableSetCopy(getStructure().keySet());
}
+ @SuppressWarnings("unchecked")
public Map<K, V> getData()
{
- return Immutables.immutableMapCopy(getDataInternal());
+ return Collections.unmodifiableMap(new HashMap(getDataInternal()));
+// return Immutables.immutableMapCopy(getDataInternal());
}
public Set<K> getKeys()
@@ -358,7 +358,7 @@
AtomicMap<K, V> getDataInternal()
{
- return (AtomicMap<K, V>) atomicMapCache.getAtomicMap(dataKey);
+ return (AtomicMap<K, V>) cache.getAtomicMap(dataKey);
}
// void updateStructure(FastCopyHashMap<Object, Fqn> s)
@@ -368,7 +368,7 @@
AtomicMap<Object, Fqn> getStructure()
{
- return atomicMapCache.getAtomicMap(structureKey, Object.class, Fqn.class);
+ return cache.getAtomicMap(structureKey, Object.class, Fqn.class);
}
public boolean equals(Object o)
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -91,7 +91,7 @@
startAtomic();
try
{
- AtomicMap map = atomicMapCache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA));
+ AtomicMap map = cache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA));
return map == null ? null : (V) map.remove(key);
}
finally
@@ -148,7 +148,7 @@
@SuppressWarnings("unchecked")
public V get(Fqn fqn, K key)
{
- Map m = atomicMapCache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA));
+ Map m = cache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA));
if (m == null) return null;
return (V) m.get(key);
}
@@ -296,7 +296,7 @@
try
{
createNodeInCache(fqn);
- return (V) atomicMapCache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA)).put(key, value);
+ return (V) cache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.DATA)).put(key, value);
}
finally
{
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeStructureSupport.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -29,12 +29,13 @@
public class TreeStructureSupport extends AutoBatchSupport
{
- AtomicMapCache atomicMapCache;
+ AtomicMapCache cache;
public TreeStructureSupport(Cache cache)
{
- this.cache = cache;
- atomicMapCache = (AtomicMapCache) cache;
+ this.cache = (AtomicMapCache) cache;
+ assertBatchingSupported(cache.getConfiguration());
+ batchContainer = ((CacheSPI) cache).getBatchContainer();
}
public boolean exists(Fqn f)
@@ -76,8 +77,8 @@
}
// FastCopyHashMap<Object, Fqn> structure = new FastCopyHashMap<Object, Fqn>();
// cache.put(structureKey, structure);
- atomicMapCache.getAtomicMap(structureKey);
- atomicMapCache.getAtomicMap(dataKey);
+ cache.getAtomicMap(structureKey);
+ cache.getAtomicMap(dataKey);
return true;
}
finally
@@ -88,7 +89,7 @@
AtomicMap<Object, Fqn> getStructure(Fqn fqn)
{
- return atomicMapCache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.STRUCTURE), Object.class, Fqn.class);
+ return cache.getAtomicMap(new NodeKey(fqn, NodeKey.Type.STRUCTURE), Object.class, Fqn.class);
}
// void updateStructure(Fqn fqn, FastCopyHashMap<Object, Fqn> structure)
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java 2008-12-03 16:28:05 UTC (rev 7246)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/util/Immutables.java 2008-12-03 16:29:44 UTC (rev 7247)
@@ -22,7 +22,6 @@
package org.jboss.starobrno.util;
import org.jboss.cache.util.ImmutableListCopy;
-import org.jboss.starobrno.atomic.AtomicHashMapProxy;
import java.io.Serializable;
import java.lang.reflect.Array;
@@ -189,8 +188,6 @@
@SuppressWarnings("unchecked")
private static <T extends Map> T attemptKnownMapCopy(T map)
{
- if (map instanceof AtomicHashMapProxy)
- return map; // just a proxy!!
if (map instanceof FastCopyHashMap)
return (T) ((FastCopyHashMap) map).clone();
if (map instanceof HashMap)
15 years, 5 months
JBoss Cache SVN: r7246 - core/branches/flat/src/test/java/org/jboss/starobrno/api/tree.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-12-03 11:28:05 -0500 (Wed, 03 Dec 2008)
New Revision: 7246
Modified:
core/branches/flat/src/test/java/org/jboss/starobrno/api/tree/NodeMoveAPITest.java
Log:
check if parent is locked
Modified: core/branches/flat/src/test/java/org/jboss/starobrno/api/tree/NodeMoveAPITest.java
===================================================================
--- core/branches/flat/src/test/java/org/jboss/starobrno/api/tree/NodeMoveAPITest.java 2008-12-03 15:19:08 UTC (rev 7245)
+++ core/branches/flat/src/test/java/org/jboss/starobrno/api/tree/NodeMoveAPITest.java 2008-12-03 16:28:05 UTC (rev 7246)
@@ -596,7 +596,7 @@
Cache<Object, Object> cache = tree.getCache();
// /a/b, /c, /c/e, /a/b/c and /a/b/c/e should all be locked.
- assert TreeStructureSupport.isLocked(cache, A_B);
+ assert !cache.getConfiguration().isLockParentForChildInsertRemove() || TreeStructureSupport.isLocked(cache, A_B);
assert TreeStructureSupport.isLocked(cache, C);
assert TreeStructureSupport.isLocked(cache, C_E);
assert TreeStructureSupport.isLocked(cache, A_B_C);
15 years, 5 months
JBoss Cache SVN: r7245 - in core/branches/flat/src/main/java/org/jboss/starobrno: interceptors and 1 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-12-03 10:19:08 -0500 (Wed, 03 Dec 2008)
New Revision: 7245
Removed:
core/branches/flat/src/main/java/org/jboss/starobrno/transaction/OrderedSynchronizationHandler.java
Modified:
core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContext.java
core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContextImpl.java
core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/TxInterceptor.java
Log:
Ordered sync handler is no longer necessary since we only register a single sync!!
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContext.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContext.java 2008-12-03 13:41:59 UTC (rev 7244)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContext.java 2008-12-03 15:19:08 UTC (rev 7245)
@@ -23,7 +23,6 @@
import org.jboss.starobrno.commands.VisitableCommand;
import org.jboss.starobrno.config.Option;
-import org.jboss.starobrno.transaction.OrderedSynchronizationHandler;
import javax.transaction.Transaction;
import java.util.List;
@@ -71,7 +70,7 @@
/**
* Adds the node that has been removed in the scope of the current transaction.
*
- * @param fqn fqn that has been removed.
+ * @param key fqn that has been removed.
* @throws NullPointerException if the Fqn is null.
*/
void addRemovedEntry(Object key);
@@ -225,7 +224,7 @@
/**
* Adds an Fqn to the list of uninitialized nodes created by the cache loader.
*
- * @param fqn fqn to add. Must not be null.
+ * @param key fqn to add. Must not be null.
*/
void addDummyEntryCreatedByCacheLoader(Object key);
@@ -249,18 +248,6 @@
Option getOption();
/**
- * @return the ordered sync handler associated with this transaction
- */
- OrderedSynchronizationHandler getOrderedSynchronizationHandler();
-
- /**
- * Associates an ordered sync handler with this transaction.
- *
- * @param orderedSynchronizationHandler to set
- */
- void setOrderedSynchronizationHandler(OrderedSynchronizationHandler orderedSynchronizationHandler);
-
- /**
* @return true if modifications were registered.
*/
boolean hasModifications();
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContextImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContextImpl.java 2008-12-03 13:41:59 UTC (rev 7244)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/context/TransactionContextImpl.java 2008-12-03 15:19:08 UTC (rev 7245)
@@ -25,18 +25,11 @@
import org.jboss.starobrno.commands.VisitableCommand;
import org.jboss.starobrno.config.Option;
import org.jboss.starobrno.container.MVCCEntry;
-import org.jboss.starobrno.transaction.OrderedSynchronizationHandler;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
/**
* A transaction context specially geared to dealing with MVCC.
@@ -51,8 +44,6 @@
*/
private Transaction ltx = null;
private Option option;
- private OrderedSynchronizationHandler orderedSynchronizationHandler;
-
private boolean forceAsyncReplication = false;
private boolean forceSyncReplication = false;
@@ -90,7 +81,6 @@
public TransactionContextImpl(Transaction tx) throws SystemException, RollbackException
{
ltx = tx;
- orderedSynchronizationHandler = new OrderedSynchronizationHandler(tx);
}
/**
@@ -100,7 +90,7 @@
* would delegate to this method if a transaction is in scope.
* <p/>
*
- * @param fqn fqn to look up
+ * @param key fqn to look up
* @return a node, or null if it cannot be found.
*/
public MVCCEntry lookupEntry(Object key)
@@ -150,7 +140,6 @@
public void reset()
{
- orderedSynchronizationHandler = null;
modificationList = null;
localModifications = null;
option = null;
@@ -316,16 +305,6 @@
return this.option;
}
- public OrderedSynchronizationHandler getOrderedSynchronizationHandler()
- {
- return orderedSynchronizationHandler;
- }
-
- public void setOrderedSynchronizationHandler(OrderedSynchronizationHandler orderedSynchronizationHandler)
- {
- this.orderedSynchronizationHandler = orderedSynchronizationHandler;
- }
-
public boolean hasModifications()
{
return modificationList != null && !modificationList.isEmpty();
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/TxInterceptor.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/TxInterceptor.java 2008-12-03 13:41:59 UTC (rev 7244)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/interceptors/TxInterceptor.java 2008-12-03 15:19:08 UTC (rev 7245)
@@ -41,22 +41,12 @@
import org.jboss.starobrno.jmx.annotations.ManagedOperation;
import org.jboss.starobrno.lock.LockManager;
import org.jboss.starobrno.notifications.Notifier;
-
import org.jboss.starobrno.remoting.ReplicationException;
import org.jboss.starobrno.transaction.GlobalTransaction;
-import org.jboss.starobrno.transaction.OrderedSynchronizationHandler;
import org.jboss.starobrno.transaction.TransactionTable;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import javax.transaction.*;
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
@@ -675,14 +665,10 @@
/**
* Registers a sync hander against a tx.
*/
- private void registerHandler(Transaction tx, Synchronization handler, InvocationContext ctx) throws Exception
+ private void registerHandler(Transaction tx, Synchronization sync, InvocationContext ctx) throws Exception
{
- OrderedSynchronizationHandler orderedHandler = ctx.getTransactionContext().getOrderedSynchronizationHandler(); //OrderedSynchronizationHandler.getInstance(tx);
-
- if (trace) log.trace("registering for TX completion: SynchronizationHandler(" + handler + ")");
-
- orderedHandler.registerAtHead(handler);// needs to be invoked first on TX commit
-
+ if (trace) log.trace("registering for TX completion: Synchronization (" + sync + ")");
+ tx.registerSynchronization(sync);
notifier.notifyTransactionRegistered(tx, ctx);
}
Deleted: core/branches/flat/src/main/java/org/jboss/starobrno/transaction/OrderedSynchronizationHandler.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/transaction/OrderedSynchronizationHandler.java 2008-12-03 13:41:59 UTC (rev 7244)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/transaction/OrderedSynchronizationHandler.java 2008-12-03 15:19:08 UTC (rev 7245)
@@ -1,119 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2000 - 2008, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.starobrno.transaction;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import javax.transaction.RollbackException;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import java.util.LinkedList;
-
-/**
- * Maintains a list of Synchronization handlers. Reason is that we have to
- * invoke certain handlers <em>before</em> others. See the description in
- * SyncTxUnitTestCase.testConcurrentPuts(). For example, for synchronous
- * replication, we have to execute the ReplicationInterceptor's
- * afterCompletion() <em>before</em> the TransactionInterceptor's.
- *
- * @author Bela Ban
- * @version $Id$
- */
-public class OrderedSynchronizationHandler implements Synchronization
-{
- static final Log log = LogFactory.getLog(org.jboss.cache.interceptors.OrderedSynchronizationHandler.class);
-
- private Transaction tx = null;
- private final LinkedList<Synchronization> handlers = new LinkedList<Synchronization>();
-
- public OrderedSynchronizationHandler(Transaction tx) throws SystemException, RollbackException
- {
- this.tx = tx;
- tx.registerSynchronization(this);
- }
-
- public void registerAtHead(Synchronization handler)
- {
- register(handler, true);
- }
-
- public void registerAtTail(Synchronization handler)
- {
- register(handler, false);
- }
-
- void register(Synchronization handler, boolean head)
- {
- if (handler != null && !handlers.contains(handler))
- {
- if (head)
- handlers.addFirst(handler);
- else
- handlers.addLast(handler);
- }
- }
-
- public void beforeCompletion()
- {
- for (Synchronization sync : handlers)
- {
- sync.beforeCompletion();
- }
- }
-
- public void afterCompletion(int status)
- {
- RuntimeException exceptionInAfterCompletion = null;
- for (Synchronization sync : handlers)
- {
- try
- {
- sync.afterCompletion(status);
- }
- catch (Throwable t)
- {
- log.error("failed calling afterCompletion() on " + sync, t);
- exceptionInAfterCompletion = (RuntimeException) t;
- }
- }
-
- // throw the exception so the TM can deal with it.
- if (exceptionInAfterCompletion != null) throw exceptionInAfterCompletion;
- }
-
- @Override
- public String toString()
- {
- return "tx=" + getTxAsString() + ", handlers=" + handlers;
- }
-
- private String getTxAsString()
- {
- // JBCACHE-1114 -- don't call toString() on tx or it can lead to stack overflow
- if (tx == null)
- return null;
-
- return tx.getClass().getName() + "@" + System.identityHashCode(tx);
- }
-}
\ No newline at end of file
15 years, 5 months
JBoss Cache SVN: r7244 - core/trunk/src/test/java/org/jboss/cache.
by jbosscache-commits@lists.jboss.org
Author: mircea.markus
Date: 2008-12-03 08:41:59 -0500 (Wed, 03 Dec 2008)
New Revision: 7244
Modified:
core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java
Log:
added some debug code
Modified: core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java 2008-12-03 13:36:04 UTC (rev 7243)
+++ core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java 2008-12-03 13:41:59 UTC (rev 7244)
@@ -178,7 +178,7 @@
private void tryMCastAddress()
{
String useIpV4 = System.getProperty("java.net.preferIPv4Stack");
- log.trace("++++++++++++++++++++++++++++++ useIpV4 property=" + useIpV4);
+ log.error("++++++++++++++++++++++++++++++ useIpV4 property=" + useIpV4);
SocketAddress socketAddress = new InetSocketAddress("224.10.10.10", 45588);
try
{
15 years, 5 months
JBoss Cache SVN: r7243 - core/trunk/src/test/java/org/jboss/cache.
by jbosscache-commits@lists.jboss.org
Author: mircea.markus
Date: 2008-12-03 08:36:04 -0500 (Wed, 03 Dec 2008)
New Revision: 7243
Modified:
core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java
Log:
added some debug code
Modified: core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java 2008-12-02 19:31:53 UTC (rev 7242)
+++ core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java 2008-12-03 13:36:04 UTC (rev 7243)
@@ -16,11 +16,15 @@
import org.jboss.cache.util.TestingUtil;
import java.io.InputStream;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.net.SocketAddress;
+import java.net.InetSocketAddress;
+import java.net.MulticastSocket;
/**
* @author <a href="mailto:dpospisi@redhat.com">Dominik Pospisil (dpospisi(a)redhat.com)</a>
@@ -139,12 +143,7 @@
// }
checkCaches();
- String useIpV4 = System.getProperty("java.net.preferIPv4Stack");
- if (useIpV4 == null || !useIpV4.equalsIgnoreCase("tRue"))
- {
- System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ not using IPv4");
- log.error("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ not using IPv4");
- }
+ tryMCastAddress();
switch (configuration.getCacheMode())
{
@@ -176,6 +175,22 @@
}
+ private void tryMCastAddress()
+ {
+ String useIpV4 = System.getProperty("java.net.preferIPv4Stack");
+ log.trace("++++++++++++++++++++++++++++++ useIpV4 property=" + useIpV4);
+ SocketAddress socketAddress = new InetSocketAddress("224.10.10.10", 45588);
+ try
+ {
+ MulticastSocket ms = new MulticastSocket(socketAddress);
+ } catch (IOException e)
+ {
+ System.err.println("+++++++++++++++++++++++++++ Error : " + e.getMessage());
+ log.error("+++++++++++++++++++++++++++ Error : " + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
/**
* Destroys all caches created by this factory in the current thread.
*
15 years, 5 months
JBoss Cache SVN: r7242 - in core/branches/flat/src/main/java/org/jboss/starobrno: transaction and 1 other directories.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-12-02 14:31:53 -0500 (Tue, 02 Dec 2008)
New Revision: 7242
Modified:
core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java
core/branches/flat/src/main/java/org/jboss/starobrno/transaction/TransactionTable.java
core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java
Log:
Added logging and fixed batching issue
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java 2008-12-02 17:12:22 UTC (rev 7241)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java 2008-12-02 19:31:53 UTC (rev 7242)
@@ -32,25 +32,38 @@
@NotThreadSafe
public abstract class AutoBatchSupport
{
- boolean startedBatch;
+ ThreadLocal<BatchDetails> batchDetails = new ThreadLocal<BatchDetails>()
+ {
+ @Override
+ protected BatchDetails initialValue()
+ {
+ return new BatchDetails();
+ }
+ };
protected Cache cache;
- // this count is to deal with reentrancy from within the same class
- int invocationCount;
-
protected void startAtomic()
{
- if (!startedBatch) startedBatch = cache.startBatch();
- invocationCount++;
+ BatchDetails bd = batchDetails.get();
+ if (!bd.startedBatch) bd.startedBatch = cache.startBatch();
+ bd.invocationCount++;
}
protected void endAtomic()
{
- invocationCount--;
- if (startedBatch && invocationCount == 0)
+ BatchDetails bd = batchDetails.get();
+ bd.invocationCount--;
+ if (bd.startedBatch && bd.invocationCount == 0)
{
cache.endBatch(true);
- startedBatch = false;
+ bd.startedBatch = false;
}
}
+
+ private static class BatchDetails
+ {
+ boolean startedBatch;
+ // this count is to deal with reentrancy from within the same class
+ int invocationCount;
+ }
}
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/transaction/TransactionTable.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/transaction/TransactionTable.java 2008-12-02 17:12:22 UTC (rev 7241)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/transaction/TransactionTable.java 2008-12-02 19:31:53 UTC (rev 7242)
@@ -405,6 +405,7 @@
{
Address addr = rpcManager.getLocalAddress();
gtx = GlobalTransaction.create(addr);
+ if (trace) log.trace("Creating new GlobalTransaction " + gtx);
put(tx, gtx);
TransactionContext transactionContext;
try
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java 2008-12-02 17:12:22 UTC (rev 7241)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/tree/TreeCacheImpl.java 2008-12-02 19:31:53 UTC (rev 7242)
@@ -21,6 +21,8 @@
*/
package org.jboss.starobrno.tree;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.jboss.cache.CacheStatus;
import org.jboss.cache.NodeNotExistsException;
import org.jboss.cache.Region;
@@ -41,6 +43,9 @@
*/
public class TreeCacheImpl<K, V> extends TreeStructureSupport implements TreeCache<K, V>
{
+ private static final Log log = LogFactory.getLog(TreeCacheImpl.class);
+ private static final boolean trace = log.isTraceEnabled();
+
public TreeCacheImpl(Cache<K, V> cache)
{
super(cache);
@@ -286,6 +291,7 @@
@SuppressWarnings("unchecked")
public V put(Fqn fqn, K key, V value)
{
+ if (trace) log.trace("Start: Putting value under key [" + key + "] for node [" + fqn + "]");
startAtomic();
try
{
@@ -295,6 +301,7 @@
finally
{
endAtomic();
+ if (trace) log.trace("End: Putting value under key [" + key + "] for node [" + fqn + "]");
}
}
15 years, 5 months
JBoss Cache SVN: r7241 - in core/trunk: src/test/java/org/jboss/cache and 1 other directory.
by jbosscache-commits@lists.jboss.org
Author: mircea.markus
Date: 2008-12-02 12:12:22 -0500 (Tue, 02 Dec 2008)
New Revision: 7241
Modified:
core/trunk/pom.xml
core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java
Log:
parallel tests
Modified: core/trunk/pom.xml
===================================================================
--- core/trunk/pom.xml 2008-12-02 17:07:08 UTC (rev 7240)
+++ core/trunk/pom.xml 2008-12-02 17:12:22 UTC (rev 7241)
@@ -132,7 +132,7 @@
<version>2.4.3-JBOSS</version>
<configuration>
<parallel>tests</parallel>
- <threadCount>1</threadCount>
+ <threadCount>10</threadCount>
<forkMode>none</forkMode>
<trimStackTrace>false</trimStackTrace>
<properties>
Modified: core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java 2008-12-02 17:07:08 UTC (rev 7240)
+++ core/trunk/src/test/java/org/jboss/cache/UnitTestCacheFactory.java 2008-12-02 17:12:22 UTC (rev 7241)
@@ -139,6 +139,12 @@
// }
checkCaches();
+ String useIpV4 = System.getProperty("java.net.preferIPv4Stack");
+ if (useIpV4 == null || !useIpV4.equalsIgnoreCase("tRue"))
+ {
+ System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ not using IPv4");
+ log.error("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ not using IPv4");
+ }
switch (configuration.getCacheMode())
{
@@ -221,7 +227,7 @@
public void mangleConfiguration(Configuration configuration)
{
configuration.setClusterConfig(mangleClusterConfiguration(configuration.getClusterConfig()));
- // Check if the cluster name contains thread id. If not, append.
+ // Check if the cluster name contains thread id. If not, append.
// We can not just append the threadId, since some of the tests are crating instances
// using configurations derived from configurations returned by this factory.
@@ -231,7 +237,7 @@
if (clusterName.indexOf(Thread.currentThread().getName()) == -1)
{
clusterName = clusterName + "-" + Thread.currentThread().getName();
-// System.out.println(getThreadId() + " Setting cluster name " + newClusterName);
+// System.out.println(getThreadId() + " Setting cluster name " + newClusterName);
}
// String testName = extractTestName();
@@ -255,7 +261,7 @@
if (clusterConfig == null)
{
// No explicit cluster configuration found. we need to resolve the default config
- // now in orded to be able to update it before the cache (and the channel) starts.
+ // now in orded to be able to update it before the cache (and the channel) starts.
// TODO: this does not seem to be the best solution :(
clusterConfig = UnitTestCacheConfigurationFactory.getClusterConfigFromFile(
15 years, 5 months
JBoss Cache SVN: r7240 - core/branches/flat/src/main/java/org/jboss/starobrno/batch.
by jbosscache-commits@lists.jboss.org
Author: manik.surtani(a)jboss.com
Date: 2008-12-02 12:07:08 -0500 (Tue, 02 Dec 2008)
New Revision: 7240
Modified:
core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java
Log:
close started batches
Modified: core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java
===================================================================
--- core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java 2008-12-02 17:06:52 UTC (rev 7239)
+++ core/branches/flat/src/main/java/org/jboss/starobrno/batch/AutoBatchSupport.java 2008-12-02 17:07:08 UTC (rev 7240)
@@ -47,6 +47,10 @@
protected void endAtomic()
{
invocationCount--;
- if (startedBatch && invocationCount == 0) cache.endBatch(true);
+ if (startedBatch && invocationCount == 0)
+ {
+ cache.endBatch(true);
+ startedBatch = false;
+ }
}
}
15 years, 5 months