Fixed publishDataChangeEvent in 2phase commit 27/4227/5
authorLukas Sedlak <lsedlak@cisco.com>
Tue, 14 Jan 2014 15:06:45 +0000 (16:06 +0100)
committerLukas Sedlak <lsedlak@cisco.com>
Mon, 27 Jan 2014 14:27:33 +0000 (15:27 +0100)
Modified publishDataChangeEvenet to work asynchronously in TwoPhaseCommit

Change-Id: Ifbbbd03a9eec309093c69d36791c9ddc330bd584
Signed-off-by: Lukas Sedlak <lsedlak@cisco.com>
opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataBroker.xtend

index 927975ca53bbb06bb661225ee70f3e7bcad175b9..0c8f6109ed843ac84bdc5d4fef814e1e98518c7d 100644 (file)
@@ -303,21 +303,23 @@ package class TwoPhaseCommit<P extends Path<P>, D, DCL extends DataChangeListene
     }\r
 \r
     def void publishDataChangeEvent(ImmutableList<ListenerStateCapture<P, D, DCL>> listeners) {\r
-        for (listenerSet : listeners) {\r
-            val updatedConfiguration = dataBroker.readConfigurationData(listenerSet.path);\r
-            val updatedOperational = dataBroker.readOperationalData(listenerSet.path);\r
-\r
-            val changeEvent = new DataChangeEventImpl(transaction, listenerSet.initialConfigurationState,\r
-                listenerSet.initialOperationalState, updatedOperational, updatedConfiguration);\r
-            for (listener : listenerSet.listeners) {\r
-                try {\r
-                    listener.instance.onDataChanged(changeEvent);\r
-\r
-                } catch (Exception e) {\r
-                    e.printStackTrace();\r
-                }\r
-            }\r
-        }\r
+        dataBroker.executor.submit [|\r
+            for (listenerSet : listeners) {
+                val updatedConfiguration = dataBroker.readConfigurationData(listenerSet.path);
+                val updatedOperational = dataBroker.readOperationalData(listenerSet.path);
+
+                val changeEvent = new DataChangeEventImpl(transaction, listenerSet.initialConfigurationState,
+                    listenerSet.initialOperationalState, updatedOperational, updatedConfiguration);
+                for (listener : listenerSet.listeners) {
+                    try {
+                        listener.instance.onDataChanged(changeEvent);
+
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                }
+            }        \r
+        ]\r
     }\r
 \r
     def rollback(List<DataCommitTransaction<P, D>> transactions, Exception e) {\r