[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