From 909ac2b32d80db7bf36eca1b26332c81463f6721 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 2 Jun 2014 13:35:29 +0200 Subject: [PATCH] BUG-1120: promote synchronization to all entrypoints This is a temporary regression in performance: get rid of the synchronized map at the cost of explicit synchronized methods. Subsequent patches will remove the synchronization from the fast paths. Change-Id: Ibe90e4e7ff99655a69b77c942ad50baec9df1ba2 Signed-off-by: Robert Varga --- .../sal/binding/impl/NotificationListenerMap.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/NotificationListenerMap.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/NotificationListenerMap.java index d3039fede8..2fab0abc9f 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/NotificationListenerMap.java +++ b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/NotificationListenerMap.java @@ -19,11 +19,10 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; final class NotificationListenerMap { private final Multimap, NotificationListenerRegistration> listeners = - Multimaps.synchronizedSetMultimap(HashMultimap., NotificationListenerRegistration>create()); + HashMultimap.create(); private static Iterable> getNotificationTypes(final Notification notification) { final Class[] ifaces = notification.getClass().getInterfaces(); @@ -38,7 +37,7 @@ final class NotificationListenerMap { }); } - Iterable> listenersFor(final Notification notification) { + synchronized Iterable> listenersFor(final Notification notification) { final Set> toNotify = new HashSet<>(); for (final Class type : getNotificationTypes(notification)) { @@ -51,20 +50,19 @@ final class NotificationListenerMap { return toNotify; } - Iterable> getKnownTypes() { + synchronized Iterable> getKnownTypes() { return ImmutableList.copyOf(listeners.keySet()); } - void addRegistrations(final NotificationListenerRegistration... registrations) { + synchronized void addRegistrations(final NotificationListenerRegistration... registrations) { for (NotificationListenerRegistration reg : registrations) { listeners.put(reg.getType(), reg); } } - void removeRegistrations(final NotificationListenerRegistration... registrations) { + synchronized void removeRegistrations(final NotificationListenerRegistration... registrations) { for (NotificationListenerRegistration reg : registrations) { listeners.remove(reg.getType(), reg); } } - } -- 2.36.6