[infinispan-commits] Infinispan SVN: r1782 - trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod.
infinispan-commits at lists.jboss.org
infinispan-commits at lists.jboss.org
Tue May 11 12:31:21 EDT 2010
Author: galder.zamarreno at jboss.com
Date: 2010-05-11 12:31:21 -0400 (Tue, 11 May 2010)
New Revision: 1782
Modified:
trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodDecoder.scala
trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodServer.scala
Log:
[ISPN-427] (Hot Rod CrashedMemberDetectorListener should have sync set to false) Done.
Modified: trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodDecoder.scala
===================================================================
--- trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodDecoder.scala 2010-05-11 15:34:19 UTC (rev 1781)
+++ trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodDecoder.scala 2010-05-11 16:31:21 UTC (rev 1782)
@@ -64,7 +64,6 @@
}
override def getCache(header: HotRodHeader): Cache[CacheKey, CacheValue] = {
- // TODO: Document DefaultCacheManager.DEFAULT_CACHE_NAME usage in wiki
val cacheName = header.cacheName
if (cacheName != DefaultCacheManager.DEFAULT_CACHE_NAME && !cacheManager.getCacheNames.contains(cacheName))
throw new CacheNotFoundException("Cache with name '" + cacheName + "' not found amongst the configured caches")
Modified: trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodServer.scala
===================================================================
--- trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodServer.scala 2010-05-11 15:34:19 UTC (rev 1781)
+++ trunk/server/hotrod/src/main/scala/org/infinispan/server/hotrod/HotRodServer.scala 2010-05-11 16:31:21 UTC (rev 1782)
@@ -103,43 +103,15 @@
cacheManager.defineConfiguration(TopologyCacheName, topologyCacheConfig)
}
- // TODO: Change to sync false rather than creating your own callable and firing it
- @Listener
+ @Listener(sync = false) // Use a separate thread to avoid blocking the view handler thread
private class CrashedMemberDetectorListener {
- private val executor = Executors.newCachedThreadPool(new ThreadFactory(){
- val threadCounter = new AtomicInteger
-
- override def newThread(r: Runnable): Thread = {
- var t = new Thread(r, "CrashedMemberDetectorThread-" + threadCounter.incrementAndGet)
- t.setDaemon(true)
- t
- }
- })
-
@ViewChanged
def handleViewChange(e: ViewChangedEvent) {
val cacheManager = e.getCacheManager
// Only the coordinator can potentially make modifications related to crashed members.
// This is to avoid all nodes trying to make the same modification which would be wasteful and lead to deadlocks.
if (cacheManager.isCoordinator) {
- // Use a separate thread to avoid blocking the view handler thread
- executor.submit(new CrashedMemberDetectorCallable(e));
- }
- }
-
- private def isOldMemberInTopology(oldMember: Address, view: TopologyView): (Boolean, TopologyAddress) = {
- // TODO: If members was stored as a map, this would be more efficient
- for (member <- view.members) {
- if (member.clusterAddress == oldMember) {
- return (true, member)
- }
- }
- (false, null)
- }
-
- private class CrashedMemberDetectorCallable(e: ViewChangedEvent) extends Callable[Void] {
- override def call = {
try {
val newMembers = e.getNewMembers
val oldMembers = e.getOldMembers
@@ -174,9 +146,19 @@
} catch {
case t: Throwable => error("Error detecting crashed member", t)
}
- null
}
}
+
+ private def isOldMemberInTopology(oldMember: Address, view: TopologyView): (Boolean, TopologyAddress) = {
+ // TODO: If members was stored as a map, this would be more efficient
+ for (member <- view.members) {
+ if (member.clusterAddress == oldMember) {
+ return (true, member)
+ }
+ }
+ (false, null)
+ }
+
}
}
More information about the infinispan-commits
mailing list