From 9a6641288dd057ac9545a560893d90f9ea9a3359 Mon Sep 17 00:00:00 2001 From: Gregor Maier <gregor.maier@bigswitch.com> Date: Fri, 19 Oct 2012 14:39:09 -0700 Subject: [PATCH] Remove unnecessary locks by using volatile and concurrent set. --- .../floodlightcontroller/core/internal/OFSwitchImpl.java | 8 +++++--- .../devicemanager/internal/DeviceManagerImpl.java | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java index d0bf49493..f0389a46c 100644 --- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java +++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchImpl.java @@ -105,7 +105,7 @@ public class OFSwitchImpl implements IOFSwitch { protected Map<Integer,OFStatisticsFuture> statsFutureMap; protected Map<Integer, IOFMessageListener> iofMsgListenersMap; protected Map<Integer,OFFeaturesReplyFuture> featuresFutureMap; - protected boolean connected; + protected volatile boolean connected; protected Role role; protected TimedCache<Long> timedCache; protected ReentrantReadWriteLock listenerLock; @@ -493,13 +493,15 @@ public class OFSwitchImpl implements IOFSwitch { @JsonIgnore @Override - public synchronized boolean isConnected() { + public boolean isConnected() { + // No lock needed since we use volatile return connected; } @Override @JsonIgnore - public synchronized void setConnected(boolean connected) { + public void setConnected(boolean connected) { + // No lock needed since we use volatile this.connected = connected; } diff --git a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java index feccdc4f8..033d0c11e 100755 --- a/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java +++ b/src/main/java/net/floodlightcontroller/devicemanager/internal/DeviceManagerImpl.java @@ -663,8 +663,8 @@ IFlowReconcileListener, IInfoProvider, IHAListener { addIndex(true, EnumSet.of(DeviceField.IPV4)); this.deviceListeners = new HashSet<IDeviceListener>(); - this.suppressAPs = - Collections.synchronizedSet(new HashSet<SwitchPort>()); + this.suppressAPs = Collections.newSetFromMap( + new ConcurrentHashMap<SwitchPort, Boolean>()); this.floodlightProvider = fmc.getServiceImpl(IFloodlightProviderService.class); -- GitLab