From 88fb52f3124f4e6781e2b29d64e3d11ba9fe4af6 Mon Sep 17 00:00:00 2001 From: Rob Adams <rob.adams@bigswitch.com> Date: Wed, 27 Jun 2012 15:16:26 -0700 Subject: [PATCH] Don't set role again if it's the same. Partial fix for BSC-1835 --- .../core/internal/Controller.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java index 5bbe2437f..27e0394b1 100644 --- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java +++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java @@ -345,12 +345,14 @@ public class Controller implements IFloodlightProviderService, } @Override - public synchronized Role getRole() { - return role; + public Role getRole() { + synchronized(roleChanger) { + return role; + } } @Override - public synchronized void setRole(Role role) { + public void setRole(Role role) { if (role == null) throw new NullPointerException("Role can not be null."); // Need to synchronize to ensure a reliable ordering on role request @@ -359,6 +361,11 @@ public class Controller implements IFloodlightProviderService, // timeout handling // @see RoleChanger synchronized(roleChanger) { + if (role.equals(this.role)) { + log.debug("Ignoring role change: role is already {}", role); + return; + } + Role oldRole = this.role; this.role = role; -- GitLab