Author: [email protected]
Date: Tue Apr  5 15:56:42 2011
New Revision: 943

Log:
[AMDATU-357] Fixed proper de-registration of ColumnFamilyAvailable services

Modified:
   
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java

Modified: 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
      (original)
+++ 
trunk/amdatu-cassandra/cassandra-listener/src/main/java/org/amdatu/cassandra/listener/service/CassandraUpdateListenerImpl.java
      Tue Apr  5 15:56:42 2011
@@ -22,6 +22,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.amdatu.cassandra.application.CassandraDaemonService;
 import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
@@ -65,6 +66,8 @@
 
     // The interval for each individual inspect
     private int INSPECT_INTERVAL = 5000;
+    
+    private Map<String, Component> m_componentMap = new 
ConcurrentHashMap<String, Component>();
 
     public void start() {
         // Now start the inspect thread
@@ -241,9 +244,12 @@
                     String keyspace = 
servRef.getProperty(CassandraPersistenceManager.KEYSPACE_AWARE_KEY).toString();
                     String columnFamily = 
servRef.getProperty(ColumnFamilyAvailable.FILTER_NAME).toString();
                     if (m_snapshot.get(keyspace) == null || 
!m_snapshot.get(keyspace).contains(columnFamily)) {
-                        m_context.ungetService(servRef);
-                        m_logService.log(LogService.LOG_INFO, 
"ColumnFamilyAvailable service for keyspace '" + keyspace
-                            + "' and ColumnFamily '" + columnFamily + "' 
unregistered");
+                        if (m_componentMap.containsKey(columnFamily)) {
+                            
m_dependencyManager.remove(m_componentMap.get(columnFamily));
+                            m_componentMap.remove(columnFamily);
+                            m_logService.log(LogService.LOG_INFO, 
"ColumnFamilyAvailable service for keyspace '" + keyspace
+                                + "' and ColumnFamily '" + columnFamily + "' 
unregistered");
+                        }
                     }
                 }
             }
@@ -259,6 +265,7 @@
             .setImplementation(ColumnFamilyAvailableImpl.class);
 
             m_dependencyManager.add(component);
+            m_componentMap.put(columnFamily, component);
             m_logService.log(LogService.LOG_INFO, "ColumnFamilyAvailable 
service for  keyspace '" + keyspace + "' and ColumnFamily '" + columnFamily + 
"' registered");
         }
     }
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to