[jbosscache-commits] JBoss Cache SVN: r7043 - core/trunk/src/main/java/org/jboss/cache.
jbosscache-commits at lists.jboss.org
jbosscache-commits at lists.jboss.org
Fri Oct 31 07:21:10 EDT 2008
Author: manik.surtani at jboss.com
Date: 2008-10-31 07:21:10 -0400 (Fri, 31 Oct 2008)
New Revision: 7043
Modified:
core/trunk/src/main/java/org/jboss/cache/RegionImpl.java
core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java
Log:
Better concurrent creation of regions and initialization of region eviction queues
Modified: core/trunk/src/main/java/org/jboss/cache/RegionImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/RegionImpl.java 2008-10-31 04:22:58 UTC (rev 7042)
+++ core/trunk/src/main/java/org/jboss/cache/RegionImpl.java 2008-10-31 11:21:10 UTC (rev 7043)
@@ -50,7 +50,7 @@
private Fqn fqn;
private Status status;
private ClassLoader classLoader;
- private BlockingQueue<EvictionEvent> evictionEventQueue = null;
+ private volatile BlockingQueue<EvictionEvent> evictionEventQueue = null;
private int capacityWarnThreshold = 0;
private EvictionRegionConfig evictionRegionConfig;
private EvictionAlgorithm evictionAlgorithm;
@@ -270,7 +270,10 @@
{
log.warn("Capacity warn threshold used in eviction is smaller than 1.");
}
- evictionEventQueue = new LinkedBlockingQueue<EvictionEvent>(size);
+ synchronized (this)
+ {
+ if (evictionEventQueue == null) evictionEventQueue = new LinkedBlockingQueue<EvictionEvent>(size);
+ }
}
}
Modified: core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java
===================================================================
--- core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java 2008-10-31 04:22:58 UTC (rev 7042)
+++ core/trunk/src/main/java/org/jboss/cache/RegionManagerImpl.java 2008-10-31 11:21:10 UTC (rev 7043)
@@ -236,7 +236,10 @@
if (createIfAbsent)
{
Region r = new RegionImpl(fqnToUse, this);
- regionsRegistry.put(fqnToUse, r);
+
+ // could be created concurrently; so make sure we use appropriate methods on regionsRegistry for this.
+ Region previous = regionsRegistry.putIfAbsent(fqnToUse, r);
+ if (previous != null) r = previous;
if (type == MARSHALLING)
{
// insert current class loader into region so at least it is recognised as a marshalling region
More information about the jbosscache-commits
mailing list