From 600a8aabc783f911650c3bb93bd393a03c55435e Mon Sep 17 00:00:00 2001
From: Ryan Izard <rizard@g.clemson.edu>
Date: Tue, 6 Oct 2015 15:39:38 -0400
Subject: [PATCH] Removing a bunch of unused annotations along with the source.

---
 .../core/OFConnection.java                    |  7 --
 .../floodlightcontroller/core/OFSwitch.java   | 29 +++---
 .../core/annotations/LogMessageCategory.java  | 34 -------
 .../core/annotations/LogMessageDoc.java       | 79 -----------------
 .../core/annotations/LogMessageDocs.java      | 36 --------
 .../core/internal/Controller.java             | 61 -------------
 .../core/internal/OFChannelHandler.java       | 57 ------------
 .../internal/OFSwitchHandshakeHandler.java    | 51 -----------
 .../core/internal/OFSwitchManager.java        | 28 +-----
 .../core/module/FloodlightModuleLoader.java   | 29 ------
 .../core/util/ListenerDispatcher.java         |  9 --
 .../core/util/SingletonTask.java              |  4 -
 .../core/web/ControllerRoleResource.java      |  6 --
 .../core/web/SwitchResourceBase.java          |  7 --
 .../internal/LinkDiscoveryManager.java        | 88 ++++---------------
 .../packetstreamer/PacketStreamerHandler.java | 28 ------
 .../packetstreamer/PacketStreamerServer.java  |  2 -
 .../perfmon/PktInProcessingTime.java          | 13 ---
 .../routing/ForwardingBase.java               | 37 --------
 .../staticflowentry/StaticFlowEntries.java    |  2 -
 .../StaticFlowEntryPusher.java                | 34 -------
 .../web/StaticFlowEntryDeleteResource.java    |  8 --
 .../web/StaticFlowEntryPusherResource.java    | 11 ---
 .../storage/AbstractStorageSource.java        | 17 ----
 .../topology/TopologyInstance.java            |  7 --
 .../topology/TopologyManager.java             | 17 ----
 .../util/ActionUtils.java                     | 14 ---
 .../util/LoadMonitor.java                     | 19 +---
 .../sync/internal/DefaultStoreClient.java     |  1 -
 .../sync/internal/StoreRegistry.java          |  7 --
 .../sync/internal/SyncManager.java            | 36 --------
 .../internal/config/FallbackCCProvider.java   |  7 --
 .../internal/remote/RemoteSyncManager.java    |  7 --
 .../rpc/AbstractRPCChannelHandler.java        | 55 ------------
 .../sync/internal/rpc/RPCChannelHandler.java  | 11 ---
 .../sync/internal/rpc/RPCService.java         | 17 ----
 .../internal/store/JavaDBStorageEngine.java   |  7 +-
 .../internal/store/ListenerStorageEngine.java |  7 --
 38 files changed, 32 insertions(+), 857 deletions(-)
 delete mode 100644 src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java
 delete mode 100644 src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java
 delete mode 100644 src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java

diff --git a/src/main/java/net/floodlightcontroller/core/OFConnection.java b/src/main/java/net/floodlightcontroller/core/OFConnection.java
index eb59851d1..c72c618c6 100644
--- a/src/main/java/net/floodlightcontroller/core/OFConnection.java
+++ b/src/main/java/net/floodlightcontroller/core/OFConnection.java
@@ -36,7 +36,6 @@ import org.jboss.netty.util.TimerTask;
 
 import java.util.Date;
 
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.internal.Controller;
 import net.floodlightcontroller.core.internal.IOFConnectionListener;
 import net.floodlightcontroller.debugcounter.IDebugCounterService;
@@ -152,12 +151,6 @@ public class OFConnection implements IOFConnection, IOFConnectionBackend{
     }
 
     @Override
-    @LogMessageDoc(level = "WARN",
-                   message = "Sending OF message that modifies switch "
-                           + "state while in the slave role: {switch}",
-                   explanation = "An application has sent a message to a switch "
-                           + "that is not valid when the switch is in a slave role",
-                   recommendation = LogMessageDoc.REPORT_CONTROLLER_BUG)
     public void write(Iterable<OFMessage> msglist) {
         if (!isConnected()) {
             if (logger.isDebugEnabled())
diff --git a/src/main/java/net/floodlightcontroller/core/OFSwitch.java b/src/main/java/net/floodlightcontroller/core/OFSwitch.java
index 16684795e..1b72fef17 100644
--- a/src/main/java/net/floodlightcontroller/core/OFSwitch.java
+++ b/src/main/java/net/floodlightcontroller/core/OFSwitch.java
@@ -37,7 +37,6 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import javax.annotation.Nonnull;
 
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.internal.IOFSwitchManager;
 import net.floodlightcontroller.core.internal.TableFeatures;
 import net.floodlightcontroller.core.util.AppCookie;
@@ -249,8 +248,12 @@ public class OFSwitch implements IOFSwitchBackend {
 				newPortsByName.put(p.getName().toLowerCase(), p);
 				if (!p.getState().contains(OFPortState.LINK_DOWN) 
 						&& !p.getConfig().contains(OFPortConfig.PORT_DOWN)) {
-					newEnabledPortList.add(p);
-					newEnabledPortNumbers.add(p.getPortNo());
+					if (!newEnabledPortList.contains(p)) {
+						newEnabledPortList.add(p);
+					}
+					if (!newEnabledPortNumbers.contains(p.getPortNo())) {
+						newEnabledPortNumbers.add(p.getPortNo());
+					}
 				}
 			}
 			portsByName = Collections.unmodifiableMap(newPortsByName);
@@ -575,8 +578,12 @@ public class OFSwitch implements IOFSwitchBackend {
 					// Enabled = not down admin (config) or phys (state)
 					if (!p.getConfig().contains(OFPortConfig.PORT_DOWN)
 							&& !p.getState().contains(OFPortState.LINK_DOWN)) {
-						newEnabledPortList.add(p);
-						newEnabledPortNumbers.add(p.getPortNo());
+						if (!newEnabledPortList.contains(p)) {
+							newEnabledPortList.add(p);
+						}
+						if (!newEnabledPortNumbers.contains(p.getPortNo())) {
+							newEnabledPortNumbers.add(p.getPortNo());
+						}
 					}
 
 					// get changes
@@ -785,12 +792,6 @@ public class OFSwitch implements IOFSwitchBackend {
 	}
 
 	@Override
-	@LogMessageDoc(level="WARN",
-	message="Sending OF message that modifies switch " +
-			"state while in the slave role: {switch}",
-			explanation="An application has sent a message to a switch " +
-					"that is not valid when the switch is in a slave role",
-					recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	public void write(Iterable<OFMessage> msglist) {
 		if (isActive()) {
 			connections.get(OFAuxId.MAIN).write(msglist);
@@ -1110,12 +1111,6 @@ public class OFSwitch implements IOFSwitchBackend {
 	}
 
 	@Override
-	@LogMessageDoc(level="WARN",
-	message="Switch {switch} flow table is full",
-	explanation="The controller received flow table full " +
-			"message from the switch, could be caused by increased " +
-			"traffic pattern",
-			recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	public void setTableFull(boolean isFull) {
 		if (isFull && !flowTableFull) {
 			switchManager.addSwitchEvent(this.datapathId,
diff --git a/src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java b/src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java
deleted file mode 100644
index e9abf02a2..000000000
--- a/src/main/java/net/floodlightcontroller/core/annotations/LogMessageCategory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
-*    Copyright 2012, Big Switch Networks, Inc. 
-*    Originally created by David Erickson, Stanford University
-* 
-*    Licensed under the Apache License, Version 2.0 (the "License"); you may
-*    not use this file except in compliance with the License. You may obtain
-*    a copy of the License at
-*
-*         http://www.apache.org/licenses/LICENSE-2.0
-*
-*    Unless required by applicable law or agreed to in writing, software
-*    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-*    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-*    License for the specific language governing permissions and limitations
-*    under the License.
-**/
-
-package net.floodlightcontroller.core.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-
-/**
- * Annotation used to set the category for log messages for a class
- * @author readams
- */
-@Target({ElementType.TYPE, ElementType.METHOD})
-public @interface LogMessageCategory {
-    /**
-     * The category for the log messages for this class
-     * @return
-     */
-    String value() default "Core";
-}
diff --git a/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java b/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java
deleted file mode 100644
index 08b48dc84..000000000
--- a/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDoc.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
-*    Copyright 2012, Big Switch Networks, Inc. 
-*    Originally created by David Erickson, Stanford University
-* 
-*    Licensed under the Apache License, Version 2.0 (the "License"); you may
-*    not use this file except in compliance with the License. You may obtain
-*    a copy of the License at
-*
-*         http://www.apache.org/licenses/LICENSE-2.0
-*
-*    Unless required by applicable law or agreed to in writing, software
-*    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-*    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-*    License for the specific language governing permissions and limitations
-*    under the License.
-**/
-
-package net.floodlightcontroller.core.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-
-/**
- * Annotation used to document log messages.  This can be used to generate
- * documentation on syslog output.
- * @author readams
- */
-@Target({ElementType.TYPE, ElementType.METHOD})
-public @interface LogMessageDoc {
-    public static final String NO_ACTION = "No action is required.";
-    public static final String UNKNOWN_ERROR = "An unknown error occured";
-    public static final String GENERIC_ACTION = 
-            "Examine the returned error or exception and take " +
-            "appropriate action.";
-    public static final String CHECK_SWITCH = 
-            "Check the health of the indicated switch.  " + 
-            "Test and troubleshoot IP connectivity.";
-    public static final String HA_CHECK_SWITCH = 
-            "Check the health of the indicated switch.  If the problem " +
-            "persists or occurs repeatedly, it likely indicates a defect " +
-            "in the switch HA implementation.";
-    public static final String CHECK_CONTROLLER = 
-            "Verify controller system health, CPU usage, and memory.  " + 
-            "Rebooting the controller node may help if the controller " +
-            "node is in a distressed state.";
-    public static final String REPORT_CONTROLLER_BUG =
-            "This is likely a defect in the controller.  Please report this " +
-            "issue.  Restarting the controller or switch may help to " +
-            "alleviate.";
-    public static final String REPORT_SWITCH_BUG =
-            "This is likely a defect in the switch.  Please report this " +
-            "issue.  Restarting the controller or switch may help to " +
-            "alleviate.";
-    public static final String TRANSIENT_CONDITION =
-            "This is normally a transient condition that does not necessarily " +
-            "represent an error.  If, however, the condition persists or " +
-            "happens frequently you should report this as a controller defect.";
-
-    /**
-     * The log level for the log message
-     * @return the log level as a string
-     */
-    String level() default "INFO";
-    /**
-     * The message that will be printed
-     * @return the message
-     */
-    String message() default UNKNOWN_ERROR;
-    /**
-     * An explanation of the meaning of the log message
-     * @return the explanation
-     */
-    String explanation() default UNKNOWN_ERROR;
-    /**
-     * The recommended action associated with the log message
-     * @return the recommendation
-     */
-    String recommendation() default NO_ACTION;
-}
diff --git a/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java b/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java
deleted file mode 100644
index 663baf0bc..000000000
--- a/src/main/java/net/floodlightcontroller/core/annotations/LogMessageDocs.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
-*    Copyright 2012, Big Switch Networks, Inc. 
-*    Originally created by David Erickson, Stanford University
-* 
-*    Licensed under the Apache License, Version 2.0 (the "License"); you may
-*    not use this file except in compliance with the License. You may obtain
-*    a copy of the License at
-*
-*         http://www.apache.org/licenses/LICENSE-2.0
-*
-*    Unless required by applicable law or agreed to in writing, software
-*    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-*    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-*    License for the specific language governing permissions and limitations
-*    under the License.
-**/
-
-package net.floodlightcontroller.core.annotations;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-
-/**
- * Annotation used to document log messages.  This can be used to generate
- * documentation on syslog output.  This version allows multiple log messages
- * to be documentated on an interface.
- * @author readams
- */
-@Target({ElementType.TYPE, ElementType.METHOD})
-public @interface LogMessageDocs {
-    /**
-     * A list of {@link LogMessageDoc} elements
-     * @return the list of log message doc
-     */
-    LogMessageDoc[] value();
-}
diff --git a/src/main/java/net/floodlightcontroller/core/internal/Controller.java b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
index 86299625e..51c0dbc32 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/Controller.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/Controller.java
@@ -52,8 +52,6 @@ import net.floodlightcontroller.core.IOFSwitchListener;
 import net.floodlightcontroller.core.LogicalOFMessageCategory;
 import net.floodlightcontroller.core.PortChangeType;
 import net.floodlightcontroller.core.RoleInfo;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.FloodlightModuleLoader;
 import net.floodlightcontroller.core.util.ListenerDispatcher;
@@ -91,8 +89,6 @@ import org.slf4j.LoggerFactory;
 import com.google.common.base.Optional;
 import com.google.common.base.Strings;
 
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-
 /**
  * The main controller class.  Handles all setup and network listeners
  */
@@ -420,20 +416,6 @@ public class Controller implements IFloodlightProviderService, IStorageSourceLis
      * FIXME: this method and the ChannelHandler disagree on which messages
      * should be dispatched and which shouldn't
      */
-    @LogMessageDocs({
-        @LogMessageDoc(level="ERROR",
-                message="Ignoring PacketIn (Xid = {xid}) because the data" +
-                        " field is empty.",
-                explanation="The switch sent an improperly-formatted PacketIn" +
-                        " message",
-                recommendation=LogMessageDoc.CHECK_SWITCH),
-        @LogMessageDoc(level="WARN",
-                message="Unhandled OF Message: {} from {}",
-                explanation="The switch sent a message not handled by " +
-                        "the controller")
-    })
-    @SuppressFBWarnings(value="SF_SWITCH_NO_DEFAULT",
-                        justification="False positive -- has default")
     @Override
     public void handleMessage(IOFSwitch sw, OFMessage m,
                                  FloodlightContext bContext) {
@@ -646,15 +628,6 @@ public class Controller implements IFloodlightProviderService, IStorageSourceLis
      * @return A valid role if role information is specified in the
      *         config params, otherwise null
      */
-    @LogMessageDocs({
-        @LogMessageDoc(message="Controller role set to {role}",
-                explanation="Setting the initial HA role to "),
-        @LogMessageDoc(level="ERROR",
-                message="Invalid current role value: {role}",
-                explanation="An invalid HA role value was read from the " +
-                            "properties file",
-                recommendation=LogMessageDoc.CHECK_CONTROLLER)
-    })
     protected HARole getInitialRole(Map<String, String> configParams) {
         HARole role = HARole.STANDBY;
         String roleString = configParams.get("role");
@@ -676,19 +649,6 @@ public class Controller implements IFloodlightProviderService, IStorageSourceLis
      * @throws IOException
      */
     @Override
-    @LogMessageDocs({
-        @LogMessageDoc(message="Listening for switch connections on {address}",
-                explanation="The controller is ready and listening for new" +
-                        " switch connections"),
-        @LogMessageDoc(message="Storage exception in controller " +
-                        "updates loop; terminating process",
-                explanation=ERROR_DATABASE,
-                recommendation=LogMessageDoc.CHECK_CONTROLLER),
-        @LogMessageDoc(level="ERROR",
-                message="Exception in controller updates loop",
-                explanation="Failed to dispatch controller event",
-                recommendation=LogMessageDoc.GENERIC_ACTION)
-    })
     public void run() {
         this.moduleLoaderState = ModuleLoaderState.COMPLETE;
 
@@ -772,11 +732,6 @@ public class Controller implements IFloodlightProviderService, IStorageSourceLis
      * Startup all of the controller's components
      * @param floodlightModuleLoader
      */
-    @LogMessageDoc(message="Waiting for storage source",
-                explanation="The system database is not yet ready",
-                recommendation="If this message persists, this indicates " +
-                        "that the system database has failed to start. " +
-                        LogMessageDoc.CHECK_CONTROLLER)
     public void startupComponents(FloodlightModuleLoader floodlightModuleLoader) throws FloodlightModuleException {
 
         this.moduleLoaderState = ModuleLoaderState.STARTUP;
@@ -810,10 +765,6 @@ public class Controller implements IFloodlightProviderService, IStorageSourceLis
         addInfoProvider("summary", this);
     }
     
-    @LogMessageDoc(level="ERROR",
-            message="failed to access storage: {reason}",
-            explanation="Could not retrieve forwarding configuration",
-            recommendation=LogMessageDoc.CHECK_CONTROLLER)
     private void readFlowPriorityConfigurationFromStorage() {
         try {
             Map<String, Object> row;
@@ -961,13 +912,6 @@ public class Controller implements IFloodlightProviderService, IStorageSourceLis
             "Flow priority configuration has changed after " +
             "controller startup. Restart controller for new " +
             "configuration to take effect.";
-    @LogMessageDoc(level="WARN",
-            message=FLOW_PRIORITY_CHANGED_AFTER_STARTUP,
-            explanation="A user has changed the priority with which access " +
-                    "and core flows are installed after controller startup. " +
-                    "Changing this setting will only take affect after a " +
-                    "controller restart",
-            recommendation="Restart controller")
     @Override
     public void rowsModified(String tableName, Set<Object> rowKeys) {
         if (tableName.equals(CONTROLLER_INTERFACE_TABLE_NAME)) {
@@ -1007,11 +951,6 @@ public class Controller implements IFloodlightProviderService, IStorageSourceLis
         return rb.getUptime();
     }
 
-    @LogMessageDoc(level="WARN",
-            message="Failure adding update {} to queue",
-            explanation="The controller tried to add an internal notification" +
-                        " to its message queue but the add failed.",
-            recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     @Override
     public void addUpdateToQueue(IUpdate update) {
         try {
diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java b/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java
index 437d97b4f..7d45c1ee8 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFChannelHandler.java
@@ -25,8 +25,6 @@ import org.jboss.netty.util.Timer;
 
 import net.floodlightcontroller.core.IOFConnectionBackend;
 import net.floodlightcontroller.core.OFConnection;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.internal.OpenflowPipelineFactory.PipelineHandler;
 import net.floodlightcontroller.core.internal.OpenflowPipelineFactory.PipelineHandshakeTimeout;
 import net.floodlightcontroller.core.internal.OpenflowPipelineFactory.PipelineIdleReadTimeout;
@@ -209,15 +207,6 @@ class OFChannelHandler extends IdleStateAwareChannelHandler {
 		 * @param sw The switch that sent the error
 		 * @param error The error message
 		 */
-		@LogMessageDoc(level="ERROR",
-				message="Error {error type} {error code} from {switch} " +
-						"in state {state}",
-						explanation="The switch responded with an unexpected error" +
-								"to an OpenFlow message from the controller",
-								recommendation="This could indicate improper network operation. " +
-										"If the problem persists restarting the switch and " +
-										"controller may help."
-				)
 		protected void logError(OFErrorMsg error) {
 			log.error("{} from switch {} in state {}",
 					new Object[] {
@@ -599,9 +588,6 @@ class OFChannelHandler extends IdleStateAwareChannelHandler {
 	}
 
 	@Override
-	@LogMessageDoc(message="New switch connection from {ip address}",
-	explanation="A new switch has connected from the " +
-			"specified IP address")
 	public void channelConnected(ChannelHandlerContext ctx,
 			ChannelStateEvent e) throws Exception {
 		log.debug("channelConnected on OFChannelHandler {}", String.format("%08x", System.identityHashCode(this)));
@@ -613,8 +599,6 @@ class OFChannelHandler extends IdleStateAwareChannelHandler {
 	}
 
 	@Override
-	@LogMessageDoc(message="Disconnected switch {switch information}",
-	explanation="The specified switch has disconnected.")
 	public void channelDisconnected(ChannelHandlerContext ctx,
 			ChannelStateEvent e) throws Exception {
 		// Only handle cleanup connection is even known
@@ -628,47 +612,6 @@ class OFChannelHandler extends IdleStateAwareChannelHandler {
 	}
 
 	@Override
-	@LogMessageDocs({
-		@LogMessageDoc(level="ERROR",
-				message="Disconnecting switch {switch} due to read timeout",
-				explanation="The connected switch has failed to send any " +
-						"messages or respond to echo requests",
-						recommendation=LogMessageDoc.CHECK_SWITCH),
-						@LogMessageDoc(level="ERROR",
-						message="Disconnecting switch {switch}: failed to " +
-								"complete handshake",
-								explanation="The switch did not respond correctly " +
-										"to handshake messages",
-										recommendation=LogMessageDoc.CHECK_SWITCH),
-										@LogMessageDoc(level="ERROR",
-										message="Disconnecting switch {switch} due to IO Error: {}",
-										explanation="There was an error communicating with the switch",
-										recommendation=LogMessageDoc.CHECK_SWITCH),
-										@LogMessageDoc(level="ERROR",
-										message="Disconnecting switch {switch} due to switch " +
-												"state error: {error}",
-												explanation="The switch sent an unexpected message",
-												recommendation=LogMessageDoc.CHECK_SWITCH),
-												@LogMessageDoc(level="ERROR",
-												message="Disconnecting switch {switch} due to " +
-														"message parse failure",
-														explanation="Could not parse a message from the switch",
-														recommendation=LogMessageDoc.CHECK_SWITCH),
-														@LogMessageDoc(level="ERROR",
-														message="Terminating controller due to storage exception",
-														explanation=Controller.ERROR_DATABASE,
-														recommendation=LogMessageDoc.CHECK_CONTROLLER),
-														@LogMessageDoc(level="ERROR",
-														message="Could not process message: queue full",
-														explanation="OpenFlow messages are arriving faster than " +
-																" the controller can process them.",
-																recommendation=LogMessageDoc.CHECK_CONTROLLER),
-																@LogMessageDoc(level="ERROR",
-																message="Error while processing message " +
-																		"from switch {switch} {cause}",
-																		explanation="An error occurred processing the switch message",
-																		recommendation=LogMessageDoc.GENERIC_ACTION)
-	})
 	public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
 			throws Exception {
 		if (e.getCause() instanceof ReadTimeoutException) {
diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java
index 1a1993e21..9621b995b 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchHandshakeHandler.java
@@ -22,8 +22,6 @@ import net.floodlightcontroller.core.IOFSwitch.SwitchStatus;
 import net.floodlightcontroller.core.IOFSwitchBackend;
 import net.floodlightcontroller.core.PortChangeEvent;
 import net.floodlightcontroller.core.SwitchDescription;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.internal.OFSwitchAppHandshakePlugin.PluginResultType;
 import net.floodlightcontroller.util.OFDPAUtils;
 
@@ -229,13 +227,6 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener {
 		 * @param role The role to send to the switch.
 		 * @throws IOException
 		 */
-		@LogMessageDoc(level="WARN",
-				message="Reasserting master role on switch {SWITCH}, " +
-						"likely a configruation error with multiple masters",
-						explanation="The controller keeps getting permission error " +
-								"from switch, likely due to switch connected to another " +
-								"controller also in master mode",
-								recommendation=LogMessageDoc.CHECK_SWITCH)
 		synchronized void sendRoleRequestIfNotPending(OFControllerRole role, long xid)
 				throws IOException {
 			long now = System.nanoTime();
@@ -883,15 +874,6 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener {
 		 * Log an OpenFlow error message from a switch
 		 * @param error The error message
 		 */
-		@LogMessageDoc(level="ERROR",
-				message="Error {error type} {error code} from {switch} " +
-						"in state {state}",
-						explanation="The switch responded with an unexpected error" +
-								"to an OpenFlow message from the controller",
-								recommendation="This could indicate improper network operation. " +
-										"If the problem persists restarting the switch and " +
-										"controller may help."
-				)
 		protected void logError(OFErrorMsg error) {
 			log.error("{} from switch {} in state {}",
 					new Object[] {
@@ -1104,16 +1086,6 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener {
 		}
 
 		@Override
-		@LogMessageDocs({
-			@LogMessageDoc(level="WARN",
-					message="Config Reply from {switch} has " +
-							"miss length set to {length}",
-							explanation="The controller requires that the switch " +
-									"use a miss length of 0xffff for correct " +
-									"function",
-									recommendation="Use a different switch to ensure " +
-					"correct function")
-		})
 		void processOFGetConfigReply(OFGetConfigReply m) {
 			if (m.getMissSendLen() == 0xffff) {
 				log.trace("Config Reply from switch {} confirms "
@@ -1184,11 +1156,6 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener {
 			super(false);
 		}
 
-		@LogMessageDoc(message="Switch {switch info} bound to class " +
-				"{switch driver}, description {switch description}",
-				explanation="The specified switch has been bound to " +
-						"a switch driver based on the switch description" +
-				"received from the switch")
 		@Override
 		void processOFStatsReply(OFStatsReply m) {
 			// Read description, if it has been updated
@@ -1543,15 +1510,6 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener {
 			setSwitchStatus(SwitchStatus.MASTER);
 		}
 
-		@LogMessageDoc(level="WARN",
-				message="Received permission error from switch {} while" +
-						"being master. Reasserting master role.",
-						explanation="The switch has denied an operation likely " +
-								"indicating inconsistent controller roles",
-								recommendation="This situation can occurs transiently during role" +
-										" changes. If, however, the condition persists or happens" +
-										" frequently this indicates a role inconsistency. " +
-										LogMessageDoc.CHECK_CONTROLLER )
 		@Override
 		void processOFError(OFErrorMsg m) {
 			// role changer will ignore the error if it isn't for it
@@ -1748,15 +1706,6 @@ public class OFSwitchHandshakeHandler implements IOFConnectionListener {
 		}
 
 		@Override
-		@LogMessageDoc(level="WARN",
-		message="Received PacketIn from switch {} while" +
-				"being slave. Reasserting slave role.",
-				explanation="The switch has receive a PacketIn despite being " +
-						"in slave role indicating inconsistent controller roles",
-						recommendation="This situation can occurs transiently during role" +
-								" changes. If, however, the condition persists or happens" +
-								" frequently this indicates a role inconsistency. " +
-								LogMessageDoc.CHECK_CONTROLLER )
 		void processOFPacketIn(OFPacketIn m) {
 			// we don't expect packetIn while slave, reassert we are slave
 			switchManagerCounters.packetInWhileSwitchIsSlave.increment();
diff --git a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java
index bace34438..dbf9cc244 100644
--- a/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java
+++ b/src/main/java/net/floodlightcontroller/core/internal/OFSwitchManager.java
@@ -39,8 +39,6 @@ import net.floodlightcontroller.core.LogicalOFMessageCategory;
 import net.floodlightcontroller.core.PortChangeType;
 import net.floodlightcontroller.core.SwitchDescription;
 import net.floodlightcontroller.core.SwitchSyncRepresentation;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.internal.Controller.IUpdate;
 import net.floodlightcontroller.core.internal.Controller.ModuleLoaderState;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
@@ -118,7 +116,6 @@ public class OFSwitchManager implements IOFSwitchManager, INewOFConnectionListen
 	private ConcurrentHashMap<DatapathId, OFSwitchHandshakeHandler> switchHandlers;
 	private ConcurrentHashMap<DatapathId, IOFSwitchBackend> switches;
 	private ConcurrentHashMap<DatapathId, IOFSwitch> syncedSwitches;
-	private Set<DatapathId> pastSwitches;
 
 	private ISwitchDriverRegistry driverRegistry;
 
@@ -197,27 +194,6 @@ public class OFSwitchManager implements IOFSwitchManager, INewOFConnectionListen
 		}
 	}
 
-	@LogMessageDocs({
-		@LogMessageDoc(level="ERROR",
-				message="Switch {switch} activated but was already active",
-				explanation="A switch that was already activated was " +
-						"activated again. This should not happen.",
-						recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG
-				),
-				@LogMessageDoc(level="WARN",
-				message="New switch added {switch} for already-added switch {switch}",
-				explanation="A switch with the same DPID as another switch " +
-						"connected to the controller.  This can be caused by " +
-						"multiple switches configured with the same DPID, or " +
-						"by a switch reconnected very quickly after " +
-						"disconnecting.",
-						recommendation="If this happens repeatedly, it is likely there " +
-								"are switches with duplicate DPIDs on the network.  " +
-								"Reconfigure the appropriate switches.  If it happens " +
-								"very rarely, then it is likely this is a transient " +
-								"network problem that can be ignored."
-						)
-	})
 	@Override
 	public synchronized void switchStatusChanged(IOFSwitchBackend sw, SwitchStatus oldStatus, SwitchStatus newStatus) {
 		DatapathId dpid = sw.getId();
@@ -678,8 +654,6 @@ public class OFSwitchManager implements IOFSwitchManager, INewOFConnectionListen
 
 		this.switchListeners = new CopyOnWriteArraySet<IOFSwitchListener>();
 		
-		this.pastSwitches = new HashSet<DatapathId>();
-
 		/* TODO @Ryan
 		try {
 			this.storeClient = this.syncService.getStoreClient(
@@ -922,7 +896,7 @@ public class OFSwitchManager implements IOFSwitchManager, INewOFConnectionListen
 
 		try {
 			try {
-				jp = f.createJsonParser(json);
+				jp = f.createParser(json);
 			} catch (JsonParseException e) {
 				throw new IOException(e);
 			}
diff --git a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
index ded7b6d34..9a906671d 100644
--- a/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
+++ b/src/main/java/net/floodlightcontroller/core/module/FloodlightModuleLoader.java
@@ -40,8 +40,6 @@ import java.util.ServiceConfigurationError;
 import java.util.ServiceLoader;
 import java.util.Set;
 
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.module.FloodlightModulePriority.Priority;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -203,28 +201,6 @@ public class FloodlightModuleLoader {
      * @return An IFloodlightModuleContext with all the modules to be started
      * @throws FloodlightModuleException
      */
-    @LogMessageDocs({
-        @LogMessageDoc(level="INFO",
-                message="Loading modules from {file name}",
-                explanation="The controller is initializing its module " +
-                        "configuration from the specified properties " +
-                        "file or directory"),
-        @LogMessageDoc(level="INFO",
-                message="Loading default modules",
-                explanation="The controller is initializing its module " +
-                        "configuration to the default configuration"),
-        @LogMessageDoc(level="ERROR",
-                message="Could not load module configuration file",
-                explanation="The controller failed to read the " +
-                        "module configuration file",
-                recommendation="Verify that the module configuration is " +
-                        "present. " + LogMessageDoc.CHECK_CONTROLLER),
-        @LogMessageDoc(level="ERROR",
-                message="Could not load default modules",
-                explanation="The controller failed to read the default " +
-                        "module configuration",
-                recommendation=LogMessageDoc.CHECK_CONTROLLER)
-    })
     public IFloodlightModuleContext loadModulesFromConfig(String fName)
             throws FloodlightModuleException {
         Properties prop = new Properties();
@@ -558,11 +534,6 @@ public class FloodlightModuleLoader {
      * Parses configuration parameters for each module
      * @param prop The properties file to use
      */
-    @LogMessageDoc(level="WARN",
-                   message="Module {module} not found or loaded. " +
-                           "Not adding configuration option {key} = {value}",
-                   explanation="Ignoring a configuration parameter for a " +
-                        "module that is not loaded.")
     protected void parseConfigParameters(Properties prop) {
         if (prop == null) return;
 
diff --git a/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java b/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
index 4a6b978c5..82a34a238 100644
--- a/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
+++ b/src/main/java/net/floodlightcontroller/core/util/ListenerDispatcher.java
@@ -22,7 +22,6 @@ import java.util.HashSet;
 import java.util.List;
 
 import net.floodlightcontroller.core.IListener;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -60,14 +59,6 @@ public class ListenerDispatcher<U, T extends IListener<U>> {
      * Add a listener to the list of listeners
      * @param listener
      */
-    @LogMessageDoc(level="ERROR",
-                   message="No listener dependency solution: " +
-                           "No listeners without incoming dependencies",
-                   explanation="The set of listeners installed " +
-                           "have dependencies with no solution",
-                   recommendation="Install a different set of listeners " +
-                           "or install all dependencies.  This is a defect in " +
-                           "the controller installation.")
     public void addListener(U type, T listener) {
         List<T> newlisteners = new ArrayList<T>();
         if (listeners != null)
diff --git a/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java b/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
index 7a145f82f..d7562b0a0 100644
--- a/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
+++ b/src/main/java/net/floodlightcontroller/core/util/SingletonTask.java
@@ -20,7 +20,6 @@ package net.floodlightcontroller.core.util;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -57,9 +56,6 @@ public class SingletonTask {
         }
 
         @Override
-        @LogMessageDoc(level="ERROR",
-                       message="Exception while executing task",
-                       recommendation=LogMessageDoc.GENERIC_ACTION)
         public void run() {
             synchronized (parent.context) {
                 if (canceled || !parent.context.taskShouldRun)
diff --git a/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java b/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
index c64f1a821..69c3723ae 100644
--- a/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
+++ b/src/main/java/net/floodlightcontroller/core/web/ControllerRoleResource.java
@@ -23,7 +23,6 @@ import org.restlet.resource.ServerResource;
 
 import net.floodlightcontroller.core.IFloodlightProviderService;
 import net.floodlightcontroller.core.RoleInfo;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 
 import org.restlet.resource.Get;
 import org.restlet.resource.Post;
@@ -57,11 +56,6 @@ public class ControllerRoleResource extends ServerResource {
     }
 
     @Post
-    @LogMessageDoc(level="WARN",
-                   message="Invalid role value specified in REST API to " +
-                      "set controller role",
-                   explanation="An HA role change request was malformed.",
-                   recommendation=LogMessageDoc.CHECK_CONTROLLER)
     public Map<String, String> setRole(String json) {
     	Map<String, String> retValue = new HashMap<String, String>();
 
diff --git a/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java b/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
index 358d73717..0ade22924 100644
--- a/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
+++ b/src/main/java/net/floodlightcontroller/core/web/SwitchResourceBase.java
@@ -22,7 +22,6 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
 import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.internal.IOFSwitchService;
 
 import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
@@ -71,12 +70,6 @@ public class SwitchResourceBase extends ServerResource {
 	 * @return
 	 */
 	@SuppressWarnings("unchecked")
-	@LogMessageDoc(level="ERROR",
-	message="Failure retrieving statistics from switch {switch}",
-	explanation="An error occurred while retrieving statistics" +
-			"from the switch",
-			recommendation=LogMessageDoc.CHECK_SWITCH + " " +
-					LogMessageDoc.GENERIC_ACTION)
 	protected List<OFStatsReply> getSwitchStatistics(DatapathId switchId,
 			OFStatsType statType) {
 		IOFSwitchService switchService = (IOFSwitchService) getContext().getAttributes().get(IOFSwitchService.class.getCanonicalName());
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
index 9f1209d75..3950c2c43 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -53,9 +53,6 @@ import net.floodlightcontroller.core.IInfoProvider;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.IOFSwitchListener;
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.internal.IOFSwitchService;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
@@ -129,7 +126,6 @@ import org.slf4j.LoggerFactory;
  * 
  * @edited Ryan Izard, rizard@g.clemson.edu, ryan.izard@bigswitch.com
  */
-@LogMessageCategory("Network Topology")
 public class LinkDiscoveryManager implements IOFMessageListener,
 IOFSwitchListener, IStorageSourceListener, ILinkDiscoveryService,
 IFloodlightModule, IInfoProvider {
@@ -301,10 +297,10 @@ IFloodlightModule, IInfoProvider {
 
 		OFPortDesc ofpPort = iofSwitch.getPort(port);
 
-		if (log.isTraceEnabled()) {
-			log.trace("Sending LLDP packet out of swich: {}, port: {}, reverse: {}",
-					new Object[] {iofSwitch.getId().toString(), port.toString(), Boolean.toString(isReverse)});
-		}
+		//if (log.isTraceEnabled()) {
+		log.warn("Sending LLDP packet out of swich: {}, port: {}, reverse: {}",
+				new Object[] {iofSwitch.getId().toString(), port.toString(), Boolean.toString(isReverse)});
+		//}
 
 		// using "nearest customer bridge" MAC address for broadest possible
 		// propagation
@@ -792,7 +788,7 @@ IFloodlightModule, IInfoProvider {
 					new Object[] { time, iofSwitch.getId(), timestamp, remoteSwitch.getId(), iofSwitch.getId(), String.valueOf(latency.getValue()) });
 		}
 		Link lt = new Link(remoteSwitch.getId(), remotePort,
-				iofSwitch.getId(), inPort, latency); /* we assume 0 latency is undefined */
+				iofSwitch.getId(), inPort, latency);
 
 		if (!isLinkAllowed(lt.getSrc(), lt.getSrcPort(),
 				lt.getDst(), lt.getDstPort()))
@@ -810,8 +806,7 @@ IFloodlightModule, IInfoProvider {
 			lastBddpTime = new Date(firstSeenTime.getTime());
 		}
 
-		LinkInfo newLinkInfo = new LinkInfo(firstSeenTime, lastLldpTime,
-				lastBddpTime);
+		LinkInfo newLinkInfo = new LinkInfo(firstSeenTime, lastLldpTime, lastBddpTime);
 
 		addOrUpdateLink(lt, newLinkInfo);
 
@@ -828,6 +823,7 @@ IFloodlightModule, IInfoProvider {
 				// the reverse link does not exist.
 				if (newLinkInfo.getFirstSeenTime().getTime() > System.currentTimeMillis()
 						- LINK_TIMEOUT) {
+					log.debug("Sending reverse LLDP for link {}", lt);
 					this.sendDiscoveryMessage(lt.getDst(), lt.getDstPort(),
 							isStandard, true);
 				}
@@ -895,11 +891,6 @@ IFloodlightModule, IInfoProvider {
 	//  Internal Methods - Discovery Related
 	//***********************************
 
-	@LogMessageDoc(level = "ERROR",
-			message = "Error in link discovery updates loop",
-			explanation = "An unknown error occured while dispatching "
-					+ "link update notifications",
-					recommendation = LogMessageDoc.GENERIC_ACTION)
 	private void doUpdatesThread() throws InterruptedException {
 		do {
 			LDUpdate update = updates.take();
@@ -1204,11 +1195,6 @@ IFloodlightModule, IInfoProvider {
 	 * @param isReverse
 	 *            indicates whether the LLDP was sent as a response
 	 */
-	@LogMessageDoc(level = "ERROR",
-			message = "Failure sending LLDP out port {port} on switch {switch}",
-			explanation = "An I/O error occured while sending LLDP message "
-					+ "to the switch.",
-					recommendation = LogMessageDoc.CHECK_SWITCH)
 	protected void sendDiscoveryMessage(DatapathId sw, OFPort port,
 			boolean isStandard, boolean isReverse) {
 
@@ -1246,17 +1232,18 @@ IFloodlightModule, IInfoProvider {
 			IOFSwitch iofSwitch = switchService.getSwitch(sw);
 			if (iofSwitch == null) continue;
 			if (!iofSwitch.isActive()) continue; /* can't do anything if the switch is SLAVE */
-			if (iofSwitch.getEnabledPorts() != null) {
-				for (OFPortDesc ofp : iofSwitch.getEnabledPorts()) {
-					if (isLinkDiscoverySuppressed(sw, ofp.getPortNo())) {			
+			Collection<OFPort> c = iofSwitch.getEnabledPortNumbers();
+			if (c != null) {
+				for (OFPort ofp : c) {
+					if (isLinkDiscoverySuppressed(sw, ofp)) {			
 						continue;
 					}
 					log.trace("Enabled port: {}", ofp);
-					sendDiscoveryMessage(sw, ofp.getPortNo(), true, false);
+					sendDiscoveryMessage(sw, ofp, true, false);
 
 					// If the switch port is not already in the maintenance
 					// queue, add it.
-					NodePortTuple npt = new NodePortTuple(sw, ofp.getPortNo());
+					NodePortTuple npt = new NodePortTuple(sw, ofp);
 					addToMaintenanceQueue(npt);
 				}
 			}
@@ -1323,7 +1310,7 @@ IFloodlightModule, IInfoProvider {
 			portLinks.put(dstNpt,
 					new HashSet<Link>());
 		portLinks.get(dstNpt).add(lt);
-		
+
 		newInfo.addObservedLatency(lt.getLatency());
 
 		return true;
@@ -1380,7 +1367,7 @@ IFloodlightModule, IInfoProvider {
 		 */
 		U64 currentLatency = existingInfo.getCurrentLatency();
 		U64 latencyToUse = existingInfo.addObservedLatency(lk.getLatency());
-		
+
 		if (currentLatency == null) {
 			/* no-op; already 'changed' as this is a new link */
 		} else if (!latencyToUse.equals(currentLatency)) {
@@ -1394,14 +1381,6 @@ IFloodlightModule, IInfoProvider {
 		return linkChanged;
 	}
 
-	@LogMessageDocs({
-		@LogMessageDoc(message="Inter-switch link detected:",
-				explanation="Detected a new link between two openflow switches," +
-				"use show link to find current status"),
-				@LogMessageDoc(message="Inter-switch link updated:",
-				explanation="Detected a link change between two openflow switches, " +
-						"use show link to find current status")
-	})
 	protected boolean addOrUpdateLink(Link lt, LinkInfo newInfo) {
 		boolean linkChanged = false;
 
@@ -1513,9 +1492,6 @@ IFloodlightModule, IInfoProvider {
 	 * @param links
 	 *            The List of @LinkTuple to delete.
 	 */
-	@LogMessageDoc(message="Inter-switch link removed:",
-			explanation="A previously detected link between two openflow switches no longer exists, " +
-			"use show link to find current status")
 	protected void deleteLinks(List<Link> links, String reason,
 			List<LDUpdate> updateList) {
 
@@ -1665,14 +1641,6 @@ IFloodlightModule, IInfoProvider {
 	//******************
 	// Internal Helper Methods
 	//******************
-	@LogMessageDoc(level="WARN",
-			message="Could not get list of interfaces of local machine to " +
-					"encode in TLV: {detail-msg}",
-					explanation="Outgoing LLDP packets encode a unique hash to " +
-							"identify the local machine. The list of network " +
-							"interfaces is used as input and the controller failed " +
-							"to query this list",
-							recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	protected void setControllerTLV() {
 		// Setting the controllerTLVValue based on current nano time,
 		// controller's IP address, and the network interface object hash
@@ -2067,28 +2035,6 @@ IFloodlightModule, IInfoProvider {
 	}
 
 	@Override
-	@LogMessageDocs({
-		@LogMessageDoc(level = "ERROR",
-				message = "No storage source found.",
-				explanation = "Storage source was not initialized; cannot initialize "
-						+ "link discovery.",
-						recommendation = LogMessageDoc.REPORT_CONTROLLER_BUG),
-						@LogMessageDoc(level = "ERROR",
-						message = "Error in installing listener for "
-								+ "switch config table {table}",
-								explanation = "Failed to install storage notification for the "
-										+ "switch config table",
-										recommendation = LogMessageDoc.REPORT_CONTROLLER_BUG),
-										@LogMessageDoc(level = "ERROR",
-										message = "No storage source found.",
-										explanation = "Storage source was not initialized; cannot initialize "
-												+ "link discovery.",
-												recommendation = LogMessageDoc.REPORT_CONTROLLER_BUG),
-												@LogMessageDoc(level = "ERROR",
-												message = "Exception in LLDP send timer.",
-												explanation = "An unknown error occured while sending LLDP "
-														+ "messages to switches.",
-														recommendation = LogMessageDoc.CHECK_SWITCH) })
 	public void startUp(FloodlightModuleContext context) throws FloodlightModuleException {
 
 		// Initialize role to floodlight provider role.
@@ -2247,7 +2193,6 @@ IFloodlightModule, IInfoProvider {
 		}
 	}
 
-
 	//*********************
 	//  IInfoProvider
 	//*********************
@@ -2320,5 +2265,4 @@ IFloodlightModule, IInfoProvider {
 			//no-op
 		}
 	}
-
-}
+}
\ No newline at end of file
diff --git a/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java b/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java
index a492cb829..d5d928696 100644
--- a/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java
+++ b/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerHandler.java
@@ -16,9 +16,6 @@
 
 package net.floodlightcontroller.packetstreamer;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.packetstreamer.thrift.*;
 
 import java.nio.ByteBuffer;
@@ -35,7 +32,6 @@ import org.slf4j.LoggerFactory;
 /**
  * The PacketStreamer handler class that implements the service APIs.
  */
-@LogMessageCategory("OpenFlow Message Tracing")
 public class PacketStreamerHandler implements PacketStreamer.Iface {
 
 	/**
@@ -85,18 +81,6 @@ public class PacketStreamerHandler implements PacketStreamer.Iface {
      * @return A list of packets associated with the session
      */
     @Override
-    @LogMessageDocs({
-        @LogMessageDoc(level="ERROR",
-                message="Interrupted while waiting for session start",
-                explanation="The thread was interrupted waiting " +
-                     "for the packet streamer session to start",
-                recommendation=LogMessageDoc.CHECK_CONTROLLER),
-        @LogMessageDoc(level="ERROR",
-                message="Interrupted while waiting for packets",
-                explanation="The thread was interrupted waiting " +
-                        "for packets",
-                recommendation=LogMessageDoc.CHECK_CONTROLLER)
-    })
     public List<ByteBuffer> getPackets(String sessionid)
             throws org.apache.thrift.TException {
         List<ByteBuffer> packets = new ArrayList<ByteBuffer>();
@@ -134,18 +118,6 @@ public class PacketStreamerHandler implements PacketStreamer.Iface {
      * @throws TException
      */
     @Override
-    @LogMessageDocs({
-        @LogMessageDoc(level="ERROR",
-                message="Could not push empty message",
-                explanation="An empty message was sent to the packet streamer",
-                recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG),
-        @LogMessageDoc(level="ERROR",
-                message="queue for session {sessionId} is null",
-                explanation="The queue for the packet streamer session " +
-                		"is missing",
-                recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
-    })
-
     public int pushMessageSync(Message msg)
             throws org.apache.thrift.TException {
 
diff --git a/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java b/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java
index e709ff7c7..c0c19c47c 100644
--- a/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java
+++ b/src/main/java/net/floodlightcontroller/packetstreamer/PacketStreamerServer.java
@@ -27,14 +27,12 @@ import org.apache.thrift.transport.TNonblockingServerTransport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
 // Generated code
 import net.floodlightcontroller.packetstreamer.thrift.*;
 
 /**
  * The PacketStreamer Server that brokers the packet streaming service.
  */
-@LogMessageCategory("OpenFlow Message Tracing")
 public class PacketStreamerServer {
     protected static Logger log = LoggerFactory.getLogger(PacketStreamerServer.class);
     protected static int port = 9090;
diff --git a/src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java b/src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java
index 9e754469d..74c79e353 100644
--- a/src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java
+++ b/src/main/java/net/floodlightcontroller/perfmon/PktInProcessingTime.java
@@ -29,8 +29,6 @@ import net.floodlightcontroller.core.FloodlightContext;
 import net.floodlightcontroller.core.IFloodlightProviderService;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightModule;
@@ -66,7 +64,6 @@ import org.slf4j.LoggerFactory;
  *    syslog is generated instead
  * 
  */
-@LogMessageCategory("Performance Monitoring")
 public class PktInProcessingTime
     implements IFloodlightModule, IPktInProcessingTimeService {
 
@@ -149,11 +146,6 @@ public class PktInProcessingTime
     }
     
     @Override
-    @LogMessageDoc(level="WARN",
-            message="Time to process packet-in exceeded threshold: {}",
-            explanation="Time to process packet-in exceeded the configured " +
-            		"performance threshold",
-            recommendation=LogMessageDoc.CHECK_CONTROLLER)
     public void recordEndTimePktIn(IOFSwitch sw, OFMessage m, FloodlightContext cntx) {
         if (isEnabled()) {
             long procTimeNs = System.nanoTime() - startTimePktNs;
@@ -207,11 +199,6 @@ public class PktInProcessingTime
     }
     
     @Override
-    @LogMessageDoc(level="INFO",
-        message="Packet processing time threshold for warning" +
-            " set to {time} ms.",
-        explanation="Performance monitoring will log a warning if " +
-    		"packet processing time exceeds the configured threshold")
     public void startUp(FloodlightModuleContext context) {
         // Add our REST API
         restApi.addRestletRoutable(new PerfWebRoutable());
diff --git a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
index 175f464b2..981090eaa 100644
--- a/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
+++ b/src/main/java/net/floodlightcontroller/routing/ForwardingBase.java
@@ -30,9 +30,6 @@ import net.floodlightcontroller.core.FloodlightContext;
 import net.floodlightcontroller.core.IFloodlightProviderService;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.internal.IOFSwitchService;
 import net.floodlightcontroller.core.util.AppCookie;
 import net.floodlightcontroller.debugcounter.IDebugCounterService;
@@ -73,7 +70,6 @@ import org.slf4j.LoggerFactory;
  * responsible for programming flows to a switch in response to a policy
  * decision.
  */
-@LogMessageCategory("Flow Programming")
 public abstract class ForwardingBase implements IOFMessageListener {
 
 	protected static Logger log =
@@ -202,18 +198,6 @@ public abstract class ForwardingBase implements IOFMessageListener {
 	 *        OFFlowMod.OFPFC_MODIFY etc.
 	 * @return srcSwitchIncluded True if the source switch is included in this route
 	 */
-	@LogMessageDocs({
-		@LogMessageDoc(level="WARN",
-				message="Unable to push route, switch at DPID {dpid} not available",
-				explanation="A switch along the calculated path for the " +
-						"flow has disconnected.",
-						recommendation=LogMessageDoc.CHECK_SWITCH),
-						@LogMessageDoc(level="ERROR",
-						message="Failure writing flow mod",
-						explanation="An I/O error occurred while writing a " +
-								"flow modification to a switch",
-								recommendation=LogMessageDoc.CHECK_SWITCH)
-	})
 	public boolean pushRoute(Route route, Match match, OFPacketIn pi,
 			DatapathId pinSwitch, U64 cookie, FloodlightContext cntx,
 			boolean reqeustFlowRemovedNotifn, boolean doFlush,
@@ -327,20 +311,6 @@ public abstract class ForwardingBase implements IOFMessageListener {
 	 * @param cntx      context of the packet
 	 * @param flush     force to flush the packet.
 	 */
-	@LogMessageDocs({
-		@LogMessageDoc(level="ERROR",
-				message="BufferId is not and packet data is null. " +
-						"Cannot send packetOut. " +
-						"srcSwitch={dpid} inPort={port} outPort={port}",
-						explanation="The switch send a malformed packet-in." +
-								"The packet will be dropped",
-								recommendation=LogMessageDoc.REPORT_SWITCH_BUG),
-								@LogMessageDoc(level="ERROR",
-								message="Failure writing packet out",
-								explanation="An I/O error occurred while writing a " +
-										"packet out to a switch",
-										recommendation=LogMessageDoc.CHECK_SWITCH)
-	})
 
 	/**
 	 * Pushes a packet-out to a switch.  The assumption here is that
@@ -468,13 +438,6 @@ public abstract class ForwardingBase implements IOFMessageListener {
 		packetOutMultiPort(packet.serialize(), sw, inPort, outPorts, cntx);
 	}
 
-	@LogMessageDocs({
-		@LogMessageDoc(level="ERROR",
-				message="Failure writing deny flow mod",
-				explanation="An I/O error occurred while writing a " +
-						"deny flow mod to a switch",
-						recommendation=LogMessageDoc.CHECK_SWITCH)
-	})
 	public static boolean blockHost(IOFSwitchService switchService,
 			SwitchPort sw_tup, MacAddress host_mac, short hardTimeout, U64 cookie) {
 
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
index c7b421c4a..12f24d8cc 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntries.java
@@ -23,7 +23,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
 import net.floodlightcontroller.core.util.AppCookie;
 import net.floodlightcontroller.staticflowentry.web.StaticFlowEntryPusherResource;
 import net.floodlightcontroller.util.ActionUtils;
@@ -57,7 +56,6 @@ import org.projectfloodlight.openflow.types.U64;
  * Represents static flow entries to be maintained by the controller on the 
  * switches. 
  */
-@LogMessageCategory("Static Flow Pusher")
 public class StaticFlowEntries {
 	protected static Logger log = LoggerFactory.getLogger(StaticFlowEntries.class);
 	private static final int INFINITE_TIMEOUT = 0;
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
index e0f33f14b..d4e95df91 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/StaticFlowEntryPusher.java
@@ -36,8 +36,6 @@ import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.IOFSwitchListener;
 import net.floodlightcontroller.core.PortChangeType;
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.internal.IOFSwitchService;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
@@ -77,7 +75,6 @@ import org.projectfloodlight.openflow.types.U64;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-@LogMessageCategory("Static Flow Pusher")
 /**
  * This module is responsible for maintaining a set of static flows on
  * switches. This is just a big 'ol dumb list of flows and something external
@@ -309,11 +306,6 @@ implements IOFSwitchListener, IFloodlightModule, IStaticFlowEntryPusherService,
 	 *
 	 * @return
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="failed to access storage: {reason}",
-			explanation="Could not retrieve static flows from the system " +
-					"database",
-					recommendation=LogMessageDoc.CHECK_CONTROLLER)
 	private Map<String, Map<String, OFFlowMod>> readEntriesFromStorage() {
 		Map<String, Map<String, OFFlowMod>> entries = new ConcurrentHashMap<String, Map<String, OFFlowMod>>();
 		try {
@@ -575,11 +567,6 @@ implements IOFSwitchListener, IFloodlightModule, IStaticFlowEntryPusherService,
 		}
 	}
 
-	@LogMessageDoc(level="ERROR",
-			message="inconsistent internal state: no switch has rule {rule}",
-			explanation="Inconsistent internat state discovered while " +
-					"deleting a static flow rule",
-					recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	private void deleteStaticFlowEntry(String entryName) {
 		String dpid = entry2dpid.remove(entryName);
 
@@ -616,11 +603,6 @@ implements IOFSwitchListener, IFloodlightModule, IStaticFlowEntryPusherService,
 	 * @param dpid The datapath ID of the switch to write to
 	 * @param messages The list of OFMessages to write.
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Tried to write to switch {switch} but got {error}",
-			explanation="An I/O error occured while trying to write a " +
-					"static flow to a switch",
-					recommendation=LogMessageDoc.CHECK_SWITCH)
 	private void writeOFMessagesToSwitch(DatapathId dpid, List<OFMessage> messages) {
 		IOFSwitch ofswitch = switchService.getSwitch(dpid);
 		if (ofswitch != null) {  // is the switch connected
@@ -637,11 +619,6 @@ implements IOFSwitchListener, IFloodlightModule, IStaticFlowEntryPusherService,
 	 * @param dpid The datapath ID of the switch to write to
 	 * @param message The OFMessage to write.
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Tried to write to switch {switch} but got {error}",
-			explanation="An I/O error occured while trying to write a " +
-					"static flow to a switch",
-					recommendation=LogMessageDoc.CHECK_SWITCH)
 	private void writeOFMessageToSwitch(DatapathId dpid, OFMessage message) {
 		IOFSwitch ofswitch = switchService.getSwitch(dpid);
 		if (ofswitch != null) {  // is the switch connected
@@ -675,11 +652,6 @@ implements IOFSwitchListener, IFloodlightModule, IStaticFlowEntryPusherService,
 	 * @param sw The IOFSwitch to write to
 	 * @param flowMod The OFFlowMod to write
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Tried to write OFFlowMod to {switch} but got {error}",
-			explanation="An I/O error occured while trying to write a " +
-					"static flow to a switch",
-					recommendation=LogMessageDoc.CHECK_SWITCH)
 	private void writeFlowModToSwitch(IOFSwitch sw, OFFlowMod flowMod) {
 		sw.write(flowMod);
 		sw.flush();
@@ -777,12 +749,6 @@ implements IOFSwitchListener, IFloodlightModule, IStaticFlowEntryPusherService,
 	}
 
 	@Override
-	@LogMessageDoc(level="ERROR",
-	message="Got a FlowRemove message for a infinite " +
-			"timeout flow: {flow} from switch {switch}",
-			explanation="Flows with infinite timeouts should not expire. " +
-					"The switch has expired the flow anyway.",
-					recommendation=LogMessageDoc.REPORT_SWITCH_BUG)
 	public Command receive(IOFSwitch sw, OFMessage msg, FloodlightContext cntx) {
 		switch (msg.getType()) {
 		case FLOW_REMOVED:
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryDeleteResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryDeleteResource.java
index 8c8baa3e3..d64b97103 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryDeleteResource.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryDeleteResource.java
@@ -24,9 +24,6 @@ import org.restlet.resource.ServerResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.staticflowentry.StaticFlowEntries;
 import net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher;
 import net.floodlightcontroller.storage.IStorageSourceService;
@@ -41,15 +38,10 @@ import net.floodlightcontroller.storage.IStorageSourceService;
  * 		REST compliant.
  * 
  */
-@LogMessageCategory("Static Flow Pusher Delete Resource")
 public class StaticFlowEntryDeleteResource extends ServerResource {
     protected static Logger log = LoggerFactory.getLogger(StaticFlowEntryDeleteResource.class);
 
     @Post
-    @LogMessageDoc(level="ERROR",
-        message="Error deleting flow mod request: {request}",
-        explanation="An invalid delete request was sent to static flow pusher",
-        recommendation="Fix the format of the static flow mod request")
     public String del(String fmJson) {
         IStorageSourceService storageSource =
                 (IStorageSourceService)getContext().getAttributes().
diff --git a/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
index cfce15d2b..6c0897ba2 100644
--- a/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
+++ b/src/main/java/net/floodlightcontroller/staticflowentry/web/StaticFlowEntryPusherResource.java
@@ -27,8 +27,6 @@ import org.restlet.resource.ServerResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.staticflowentry.StaticFlowEntries;
 import net.floodlightcontroller.staticflowentry.StaticFlowEntryPusher;
 import net.floodlightcontroller.storage.IStorageSourceService;
@@ -39,7 +37,6 @@ import net.floodlightcontroller.util.MatchUtils;
  * @author alexreimers
  *
  */
-@LogMessageCategory("Static Flow Pusher")
 public class StaticFlowEntryPusherResource extends ServerResource {
 	protected static Logger log = LoggerFactory.getLogger(StaticFlowEntryPusherResource.class);
 
@@ -282,10 +279,6 @@ public class StaticFlowEntryPusherResource extends ServerResource {
 	 * @return A string status message
 	 */
 	@Post
-	@LogMessageDoc(level="ERROR",
-	message="Error parsing push flow mod request: {request}",
-	explanation="An invalid request was sent to static flow pusher",
-	recommendation="Fix the format of the static flow mod request")
 	public String store(String fmJson) {
 		IStorageSourceService storageSource =
 				(IStorageSourceService)getContext().getAttributes().
@@ -331,10 +324,6 @@ public class StaticFlowEntryPusherResource extends ServerResource {
 	}
 
 	@Delete
-	@LogMessageDoc(level="ERROR",
-	message="Error deleting flow mod request: {request}",
-	explanation="An invalid delete request was sent to static flow pusher",
-	recommendation="Fix the format of the static flow mod request")
 	public String del(String fmJson) {
 		IStorageSourceService storageSource =
 				(IStorageSourceService)getContext().getAttributes().
diff --git a/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java b/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
index d7a6d88d6..f26bdce87 100644
--- a/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
+++ b/src/main/java/net/floodlightcontroller/storage/AbstractStorageSource.java
@@ -30,8 +30,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightModule;
@@ -45,8 +43,6 @@ import net.floodlightcontroller.storage.web.StorageWebRoutable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
-@LogMessageCategory("System Database")
 public abstract class AbstractStorageSource 
 implements IStorageSourceService, IFloodlightModule {
 	protected static Logger logger = LoggerFactory.getLogger(AbstractStorageSource.class);
@@ -82,10 +78,6 @@ implements IStorageSourceService, IFloodlightModule {
 			"An unknown error occurred while executing asynchronous " +
 					"database operation";
 
-	@LogMessageDoc(level="ERROR",
-			message="Failure in asynchronous call to executeQuery",
-			explanation=DB_ERROR_EXPLANATION,
-			recommendation=LogMessageDoc.GENERIC_ACTION)
 	abstract class StorageCallable<V> implements Callable<V> {
 		public V call() {
 			try {
@@ -101,10 +93,6 @@ implements IStorageSourceService, IFloodlightModule {
 		abstract protected V doStorageOperation();
 	}
 
-	@LogMessageDoc(level="ERROR",
-			message="Failure in asynchronous call to updateRows",
-			explanation=DB_ERROR_EXPLANATION,
-			recommendation=LogMessageDoc.GENERIC_ACTION)
 	abstract class StorageRunnable implements Runnable {
 		public void run() {
 			try {
@@ -459,11 +447,6 @@ implements IStorageSourceService, IFloodlightModule {
 		}
 	}
 
-	@LogMessageDoc(level="ERROR",
-			message="Exception caught handling storage notification",
-			explanation="An unknown error occured while trying to notify" +
-					" storage listeners",
-					recommendation=LogMessageDoc.GENERIC_ACTION)
 	protected synchronized void notifyListeners(StorageSourceNotification notification) {
 		if (logger.isTraceEnabled()) {
 			logger.trace("Notifying storage listeneres: {}", notification);
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java b/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
index f29f030b9..b70196760 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyInstance.java
@@ -26,8 +26,6 @@ import java.util.Map;
 import java.util.PriorityQueue;
 import java.util.Set;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.routing.BroadcastTree;
 import net.floodlightcontroller.routing.Link;
 import net.floodlightcontroller.routing.Route;
@@ -49,7 +47,6 @@ import com.google.common.cache.LoadingCache;
  * A representation of a network topology.  Used internally by
  * {@link TopologyManager}
  */
-@LogMessageCategory("Network Topology")
 public class TopologyInstance {
 
     public static final short LT_SH_LINK = 1;
@@ -279,10 +276,6 @@ public class TopologyInstance {
      *
      * http://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm
      */
-    @LogMessageDoc(level="ERROR",
-            message="No DFS object for switch {} found.",
-            explanation="The internal state of the topology module is corrupt",
-            recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     public void identifyOpenflowDomains() {
         Map<DatapathId, ClusterDFS> dfsList = new HashMap<DatapathId, ClusterDFS>();
 
diff --git a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
index 2741d39b1..74434c328 100644
--- a/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
+++ b/src/main/java/net/floodlightcontroller/topology/TopologyManager.java
@@ -39,8 +39,6 @@ import net.floodlightcontroller.core.IHAListener;
 import net.floodlightcontroller.core.IOFMessageListener;
 import net.floodlightcontroller.core.IOFSwitch;
 import net.floodlightcontroller.core.LogicalOFMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.internal.IOFSwitchService;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
@@ -85,7 +83,6 @@ import org.slf4j.LoggerFactory;
  * of the network graph, as well as implementing tools for finding routes
  * through the topology.
  */
-@LogMessageCategory("Network Topology")
 public class TopologyManager implements IFloodlightModule, ITopologyService, IRoutingService, ILinkDiscoveryListener, IOFMessageListener {
 
 	protected static Logger log = LoggerFactory.getLogger(TopologyManager.class);
@@ -269,11 +266,6 @@ public class TopologyManager implements IFloodlightModule, ITopologyService, IRo
 	 * Thread for recomputing topology.  The thread is always running,
 	 * however the function applyUpdates() has a blocking call.
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Error in topology instance task thread",
-			explanation="An unknown error occured in the topology " +
-					"discovery module.",
-					recommendation=LogMessageDoc.CHECK_CONTROLLER)
 	protected class UpdateTopologyWorker implements Runnable {
 		@Override
 		public void run() {
@@ -990,11 +982,6 @@ public class TopologyManager implements IFloodlightModule, ITopologyService, IRo
 	 * @param ports
 	 * @param cntx
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Failed to clear all flows on switch {switch}",
-			explanation="An I/O error occured while trying send " +
-					"topology discovery packet",
-					recommendation=LogMessageDoc.CHECK_SWITCH)
 	public void doMultiActionPacketOut(byte[] packetData, IOFSwitch sw,
 			Set<OFPort> ports,
 			FloodlightContext cntx) {
@@ -1150,10 +1137,6 @@ public class TopologyManager implements IFloodlightModule, ITopologyService, IRo
 	 * multiple link removed messages.  However, all the updates from
 	 * LinkDiscoveryManager would be propagated to the listeners of topology.
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Error reading link discovery update.",
-			explanation="Unable to process link discovery update",
-			recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	public List<LDUpdate> applyUpdates() {
 		List<LDUpdate> appliedUpdates = new ArrayList<LDUpdate>();
 		LDUpdate update = null;
diff --git a/src/main/java/net/floodlightcontroller/util/ActionUtils.java b/src/main/java/net/floodlightcontroller/util/ActionUtils.java
index a32cfc103..1f8c8269f 100644
--- a/src/main/java/net/floodlightcontroller/util/ActionUtils.java
+++ b/src/main/java/net/floodlightcontroller/util/ActionUtils.java
@@ -6,8 +6,6 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-
 import org.projectfloodlight.openflow.protocol.OFFactories;
 import org.projectfloodlight.openflow.protocol.OFFlowMod;
 import org.projectfloodlight.openflow.protocol.OFVersion;
@@ -149,10 +147,6 @@ public class ActionUtils {
 	 * @param actions; A list of OFActions to encode into one string
 	 * @return A dpctl-style string of the actions
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Could not decode action {action}",
-			explanation="A static flow entry contained an invalid action",
-			recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	public static String actionsToString(List<OFAction> actions, Logger log) {
 		StringBuilder sb = new StringBuilder();
 		for (OFAction a : actions) {
@@ -354,10 +348,6 @@ public class ActionUtils {
 	 * @param bigString The string containing all the actions
 	 * @param log A logger to log for errors.
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Unexpected action '{action}', '{subaction}'",
-			explanation="A static flow entry contained an invalid action",
-			recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	public static void fromString(OFFlowMod.Builder fmb, String bigString, Logger log) {
 		List<OFAction> actions = new LinkedList<OFAction>();
 		if (bigString != null && !bigString.trim().isEmpty()) {
@@ -877,10 +867,6 @@ public class ActionUtils {
 	 * @param log
 	 * @return
 	 */
-	@LogMessageDoc(level="ERROR",
-			message="Invalid subaction: '{subaction}'",
-			explanation="A static flow entry contained an invalid subaction",
-			recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
 	private static OFActionOutput decode_output(String actionToDecode, OFVersion version, Logger log) {
 		Matcher n = Pattern.compile("((all)|(controller)|(local)|(ingress-port)|(normal)|(flood))").matcher(actionToDecode);
 		OFActionOutput.Builder ab = OFFactories.getFactory(version).actions().buildOutput();
diff --git a/src/main/java/net/floodlightcontroller/util/LoadMonitor.java b/src/main/java/net/floodlightcontroller/util/LoadMonitor.java
index 5b234cd5e..39dbcb3e5 100644
--- a/src/main/java/net/floodlightcontroller/util/LoadMonitor.java
+++ b/src/main/java/net/floodlightcontroller/util/LoadMonitor.java
@@ -27,9 +27,6 @@ import java.util.concurrent.TimeUnit;
 
 import org.slf4j.Logger;
 
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-
 public class LoadMonitor implements Runnable {
 
     public enum LoadLevel {
@@ -99,16 +96,6 @@ public class LoadMonitor implements Runnable {
     }
 
     @Override
-    @LogMessageDocs({
-        @LogMessageDoc(
-            message="System under very heavy load, dropping some packet-ins",
-            explanation="We detcted that the system was under very heavy" +
-                        "  load, dropping some packet-ins temporarily"),
-        @LogMessageDoc(
-            message="System under heavy load, dropping some new flows",
-            explanation="We detcted that the system was under heavy load," +
-                        " dropping some new flows temporarily")
-    })
     public void run() {
         if (!isLinux) return;
 
@@ -164,11 +151,7 @@ public class LoadMonitor implements Runnable {
         itersLoaded = 0;
         return;
     }
-
-    @LogMessageDoc(
-        message="Exception in reading load monitor params, using defaults",
-        explanation="There was an error in inializing load monitor's props," +
-                    " using default parameters")
+    
     protected String runcmd(String cmd) {
         String line;
         StringBuilder ret = new StringBuilder();
diff --git a/src/main/java/org/sdnplatform/sync/internal/DefaultStoreClient.java b/src/main/java/org/sdnplatform/sync/internal/DefaultStoreClient.java
index 56d000d4f..6dc0211f2 100644
--- a/src/main/java/org/sdnplatform/sync/internal/DefaultStoreClient.java
+++ b/src/main/java/org/sdnplatform/sync/internal/DefaultStoreClient.java
@@ -42,7 +42,6 @@ public class DefaultStoreClient<K, V> extends AbstractStoreClient<K, V> {
     private Class<K> keyClass;
     private TypeReference<K> keyType;
 
-    @SuppressWarnings("unchecked")
     public DefaultStoreClient(IStore<K, V> delegate,
                               IInconsistencyResolver<Versioned<V>> resolver,
                               AbstractSyncManager syncManager,
diff --git a/src/main/java/org/sdnplatform/sync/internal/StoreRegistry.java b/src/main/java/org/sdnplatform/sync/internal/StoreRegistry.java
index cb71bd396..b83ed1a3d 100644
--- a/src/main/java/org/sdnplatform/sync/internal/StoreRegistry.java
+++ b/src/main/java/org/sdnplatform/sync/internal/StoreRegistry.java
@@ -10,8 +10,6 @@ import java.util.concurrent.locks.ReentrantLock;
 
 import javax.sql.ConnectionPoolDataSource;
 
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-
 import org.sdnplatform.sync.Versioned;
 import org.sdnplatform.sync.ISyncService.Scope;
 import org.sdnplatform.sync.error.PersistException;
@@ -138,11 +136,6 @@ public class StoreRegistry {
      * @param key the key
      * @param value the value
      */
-    @LogMessageDoc(level="ERROR",
-                   message="Failed to queue hint for store {storeName}",
-                   explanation="There was an error synchronizing data to " + 
-                               "remote nodes",
-                   recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     public void queueHint(String storeName, 
                           ByteArray key, Versioned<byte[]> value) {
         try {
diff --git a/src/main/java/org/sdnplatform/sync/internal/SyncManager.java b/src/main/java/org/sdnplatform/sync/internal/SyncManager.java
index cfe27e00e..9db240c9c 100644
--- a/src/main/java/org/sdnplatform/sync/internal/SyncManager.java
+++ b/src/main/java/org/sdnplatform/sync/internal/SyncManager.java
@@ -51,9 +51,6 @@ import org.sdnplatform.sync.thrift.SyncValueMessage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightService;
@@ -70,7 +67,6 @@ import net.floodlightcontroller.threadpool.IThreadPoolService;
  * @author readams
  * @see ISyncService
  */
-@LogMessageCategory("State Synchronization")
 public class SyncManager extends AbstractSyncManager {
     protected static final Logger logger =
             LoggerFactory.getLogger(SyncManager.class.getName());
@@ -210,9 +206,6 @@ public class SyncManager extends AbstractSyncManager {
     /**
      * Perform a synchronization with the node specified
      */
-    @LogMessageDoc(level="INFO",
-                   message="[{id}->{id}] Synchronizing local state to remote node",
-                   explanation="Normal state resynchronization is occurring")
     public void antientropy(Node node) {
         if (!rpcService.isConnected(node.getNodeId())) return;
 
@@ -359,10 +352,6 @@ public class SyncManager extends AbstractSyncManager {
      * @param e the storage engine for the values
      * @param kv the values to synchronize
      */
-    @LogMessageDoc(level="WARN",
-            message="Sync task queue full and not emptying",
-            explanation="The synchronization service is overloaded",
-            recommendation=LogMessageDoc.CHECK_CONTROLLER)
     public void queueSyncTask(SynchronizingStorageEngine e,
                               ByteArray key, Versioned<byte[]> value) {
         storeRegistry.queueHint(e.getName(), key, value);
@@ -592,15 +581,6 @@ public class SyncManager extends AbstractSyncManager {
     // Local methods
     // ***************
 
-    @LogMessageDocs({
-        @LogMessageDoc(level="INFO",
-                message="[{id}] Updating sync configuration {config}",
-                explanation="The sync service cluster configuration has been updated"),
-        @LogMessageDoc(level="INFO",
-                message="[{id}] Local node configuration changed; restarting sync" +
-                        "service",
-                explanation="The sync service must be restarted to update its configuration")
-    })
     protected void doUpdateConfiguration()
             throws FloodlightModuleException {
 
@@ -674,10 +654,6 @@ public class SyncManager extends AbstractSyncManager {
      * Periodically perform cleanup
      * @author readams
      */
-    @LogMessageDoc(level="ERROR",
-            message="Cleanup task failed",
-            explanation="Failed to clean up deleted data in the store",
-            recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     protected class CleanupTask implements Runnable {
         @Override
         public void run() {
@@ -699,10 +675,6 @@ public class SyncManager extends AbstractSyncManager {
      * Periodically perform antientropy
      * @author readams
      */
-    @LogMessageDoc(level="ERROR",
-            message="Antientropy task failed",
-            explanation="Failed to synchronize state between two nodes",
-            recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     protected class AntientropyTask implements Runnable {
         @Override
         public void run() {
@@ -725,10 +697,6 @@ public class SyncManager extends AbstractSyncManager {
      * Worker task to periodically rescan the configuration
      * @author readams
      */
-    @LogMessageDoc(level="ERROR",
-            message="Failed to update configuration",
-            explanation="An error occured while updating sync service configuration",
-            recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     protected class UpdateConfigTask implements Runnable {
         @Override
         public void run() {
@@ -750,10 +718,6 @@ public class SyncManager extends AbstractSyncManager {
      * appropriate messages to the node I/O channels
      * @author readams
      */
-    @LogMessageDoc(level="ERROR",
-            message="Error occured in synchronization worker",
-            explanation="Failed to synchronize state to remote node",
-            recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     protected class HintWorker implements Runnable {
         ArrayList<Hint> tasks = new ArrayList<Hint>(50);
         protected Map<String, SyncMessage> messages =
diff --git a/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java b/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java
index 09278ae2c..3217e2a91 100644
--- a/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java
+++ b/src/main/java/org/sdnplatform/sync/internal/config/FallbackCCProvider.java
@@ -3,8 +3,6 @@ package org.sdnplatform.sync.internal.config;
 import java.util.Collections;
 import java.util.Map;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 
 import org.sdnplatform.sync.error.SyncException;
@@ -17,7 +15,6 @@ import org.slf4j.LoggerFactory;
  * Provide a fallback local configuration
  * @author readams
  */
-@LogMessageCategory("State Synchronization")
 public class FallbackCCProvider implements IClusterConfigProvider {
     protected static final Logger logger =
             LoggerFactory.getLogger(FallbackCCProvider.class.getName());
@@ -32,10 +29,6 @@ public class FallbackCCProvider implements IClusterConfigProvider {
     }
 
     @Override
-    @LogMessageDoc(level="INFO",
-        message="Cluster not yet configured; using fallback " + 
-                "local configuration",
-        explanation="No other nodes are known")
     public ClusterConfig getConfig() throws SyncException {
         if (!warned) {
             logger.info("Cluster not yet configured; using fallback local " + 
diff --git a/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java b/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java
index 5bf2e8885..efcc3ec67 100644
--- a/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java
+++ b/src/main/java/org/sdnplatform/sync/internal/remote/RemoteSyncManager.java
@@ -37,8 +37,6 @@ import org.sdnplatform.sync.thrift.Store;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.core.module.FloodlightModuleContext;
 import net.floodlightcontroller.core.module.FloodlightModuleException;
 import net.floodlightcontroller.core.module.IFloodlightService;
@@ -48,7 +46,6 @@ import net.floodlightcontroller.core.module.IFloodlightService;
  * remote sync manager over a TCP connection
  * @author readams
  */
-@LogMessageCategory("State Synchronization")
 public class RemoteSyncManager extends AbstractSyncManager {
     protected static final Logger logger =
             LoggerFactory.getLogger(RemoteSyncManager.class.getName());
@@ -271,10 +268,6 @@ public class RemoteSyncManager extends AbstractSyncManager {
         return future;
     }
 
-    @LogMessageDoc(level="WARN",
-                   message="Unexpected sync message reply type={type} id={id}",
-                   explanation="An error occurred in the sync protocol",
-                   recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     public void dispatchReply(int xid,
                               SyncReply reply) {
         RemoteSyncFuture future = futureMap.get(Integer.valueOf(xid));
diff --git a/src/main/java/org/sdnplatform/sync/internal/rpc/AbstractRPCChannelHandler.java b/src/main/java/org/sdnplatform/sync/internal/rpc/AbstractRPCChannelHandler.java
index 3ea5f1a94..8fe90ff43 100644
--- a/src/main/java/org/sdnplatform/sync/internal/rpc/AbstractRPCChannelHandler.java
+++ b/src/main/java/org/sdnplatform/sync/internal/rpc/AbstractRPCChannelHandler.java
@@ -11,10 +11,6 @@ import javax.crypto.Mac;
 import javax.crypto.spec.SecretKeySpec;
 import javax.xml.bind.DatatypeConverter;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
-
 import org.jboss.netty.channel.Channel;
 import org.jboss.netty.channel.ChannelHandlerContext;
 import org.jboss.netty.channel.ChannelStateEvent;
@@ -65,7 +61,6 @@ import org.slf4j.LoggerFactory;
  * a {@link SyncMessage} which will provide specific type information. 
  * @author readams
  */
-@LogMessageCategory("State Synchronization")
 public abstract class AbstractRPCChannelHandler 
     extends IdleStateAwareChannelHandler {
     protected static final Logger logger =
@@ -132,32 +127,6 @@ public abstract class AbstractRPCChannelHandler
     }
 
     @Override
-    @LogMessageDocs({
-        @LogMessageDoc(level="ERROR",
-                message="[{id}->{id}] Disconnecting client due to read timeout",
-                explanation="The connected client has failed to send any " +
-                            "messages or respond to echo requests",
-                recommendation=LogMessageDoc.CHECK_CONTROLLER),
-        @LogMessageDoc(level="ERROR",
-                message="[{id}->{id}] Disconnecting RPC node due to " +
-                    "handshake timeout",
-                explanation="The remote node did not complete the handshake",
-                recommendation=LogMessageDoc.CHECK_CONTROLLER),
-                @LogMessageDoc(level="ERROR",
-                message="[{id}->{id}] IOException: {message}",
-                explanation="There was an error communicating with the " + 
-                            "remote client",
-                recommendation=LogMessageDoc.GENERIC_ACTION),
-                @LogMessageDoc(level="ERROR",
-                message="[{id}->{id}] ConnectException: {message} {error}",
-                explanation="There was an error connecting to the " + 
-                            "remote node",
-                recommendation=LogMessageDoc.GENERIC_ACTION),
-        @LogMessageDoc(level="ERROR",
-                message="[{}->{}] An error occurred on RPC channel",
-                explanation="An error occurred processing the message",
-                recommendation=LogMessageDoc.GENERIC_ACTION),
-    })
     public void exceptionCaught(ChannelHandlerContext ctx,
                                 ExceptionEvent e) throws Exception {
         if (e.getCause() instanceof ReadTimeoutException) {
@@ -219,10 +188,6 @@ public abstract class AbstractRPCChannelHandler
      * @param ctx the context
      * @param message the message object
      */
-    @LogMessageDoc(level="WARN",
-                   message="[{id}->{id}] Unhandled message: {message type}",
-                   explanation="An unrecognized event occurred",
-                   recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     protected void handleUnknownMessage(ChannelHandlerContext ctx, 
                                         Object message) {
         logger.warn("[{}->{}] Unhandled message: {}", 
@@ -343,11 +308,6 @@ public abstract class AbstractRPCChannelHandler
         
     }
 
-    @LogMessageDoc(level="WARN",
-                   message="Failed to authenticate connection from {remote}: {message}",
-                   explanation="Challenge/Response authentication failed",
-                   recommendation="Check the included error message, and " + 
-                           "verify the shared secret is correctly-configured")
     protected void handshake(HelloMessage request, Channel channel) {
         try {
             switch (getAuthScheme()) {
@@ -527,11 +487,6 @@ public abstract class AbstractRPCChannelHandler
                           MessageType.CLUSTER_JOIN_RESPONSE, channel);
     }
 
-    @LogMessageDoc(level="ERROR",
-                   message="[{id}->{id}] Error for message {id} ({type}): " + 
-                           "{message} {error code}",
-                   explanation="Remote client sent an error",
-                   recommendation=LogMessageDoc.GENERIC_ACTION)
     protected void handleError(ErrorMessage error, Channel channel) {
         logger.error("[{}->{}] Error for message {} ({}): {} ({})", 
                      new Object[]{getLocalNodeIdString(), 
@@ -554,11 +509,6 @@ public abstract class AbstractRPCChannelHandler
      * @param type the type of the message that generated the error
      * @return the {@link SyncError} message
      */
-    @LogMessageDoc(level="ERROR",
-                   message="Unexpected error processing message {} ({})",
-                   explanation="An error occurred while processing an " + 
-                               "RPC message",
-                   recommendation=LogMessageDoc.GENERIC_ACTION)
     protected SyncMessage getError(int transactionId, Exception error, 
                                    MessageType type) {
         int ec = SyncException.ErrorType.GENERIC.getValue();
@@ -590,11 +540,6 @@ public abstract class AbstractRPCChannelHandler
      * @param type The type of the message that generated the error
      * @param channel the channel to write the error
      */
-    @LogMessageDoc(level="WARN",
-                    message="[{id}->{id}] Received unexpected message: {type}",
-                    explanation="A inappriopriate message was sent by the remote" +
-                            "client",
-                    recommendation=LogMessageDoc.REPORT_CONTROLLER_BUG)
     protected void unexpectedMessage(int transactionId,
                                      MessageType type,
                                      Channel channel) {
diff --git a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCChannelHandler.java b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCChannelHandler.java
index 516f387a2..bb7f942cf 100644
--- a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCChannelHandler.java
+++ b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCChannelHandler.java
@@ -6,8 +6,6 @@ import java.util.List;
 import java.util.Random;
 import java.util.Map.Entry;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.debugcounter.IDebugCounter;
 
 import org.jboss.netty.channel.Channel;
@@ -42,7 +40,6 @@ import org.slf4j.LoggerFactory;
  * Channel handler for the RPC service
  * @author readams
  */
-@LogMessageCategory("State Synchronization")
 public class RPCChannelHandler extends AbstractRPCChannelHandler {
     protected static final Logger logger =
             LoggerFactory.getLogger(RPCChannelHandler.class);
@@ -88,14 +85,6 @@ public class RPCChannelHandler extends AbstractRPCChannelHandler {
     }
 
     @Override
-    @LogMessageDoc(level="ERROR",
-              message="[{id}->{id}] Attempted connection from unrecognized " +
-                      "floodlight node {id}; disconnecting",
-              explanation="A unknown node connected.  This can happen " +
-                      "transiently if new nodes join the cluster.",
-              recommendation="If the problem persists, verify your cluster" +
-                "configuration and that you don't have unauthorized agents " +
-                "in your network.")
     protected void handleHello(HelloMessage hello, Channel channel) {
         if (!hello.isSetNodeId()) {
             // this is a client connection.  Don't set this up as a node
diff --git a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
index 97f498a05..60dbcbbc8 100644
--- a/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
+++ b/src/main/java/org/sdnplatform/sync/internal/rpc/RPCService.java
@@ -16,9 +16,6 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 import java.util.concurrent.LinkedTransferQueue;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
-import net.floodlightcontroller.core.annotations.LogMessageDocs;
 import net.floodlightcontroller.core.util.SingletonTask;
 import net.floodlightcontroller.debugcounter.IDebugCounterService;
 
@@ -40,13 +37,10 @@ import org.sdnplatform.sync.thrift.MessageType;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-
-
 /**
  * A lightweight RPC mechanism built on netty.
  * @author readams
  */
-@LogMessageCategory("State Synchronization")
 public class RPCService {
     protected static final Logger logger =
             LoggerFactory.getLogger(RPCService.class);
@@ -223,14 +217,6 @@ public class RPCService {
     /**
      * Stop the RPC service
      */
-    @LogMessageDocs({
-        @LogMessageDoc(level="WARN",
-                message="Failed to cleanly shut down RPC server",
-                explanation="Could not close all open sockets cleanly"),
-        @LogMessageDoc(level="WARN",
-        message="Interrupted while shutting down RPC server",
-        explanation="Could not close all open sockets cleanly")
-    })
     public void shutdown() {
         shutDown = true;
         try {
@@ -436,9 +422,6 @@ public class RPCService {
     /**
      * Start listening sockets
      */
-    @LogMessageDoc(level="INFO",
-                   message="Listening for internal floodlight RPC on {port}",
-                   explanation="The internal RPC service is ready for connections")
     protected void startServer(ChannelPipelineFactory pipelineFactory) {
         final ServerBootstrap bootstrap =
                 new ServerBootstrap(
diff --git a/src/main/java/org/sdnplatform/sync/internal/store/JavaDBStorageEngine.java b/src/main/java/org/sdnplatform/sync/internal/store/JavaDBStorageEngine.java
index 2acc2fc22..c29b88dda 100644
--- a/src/main/java/org/sdnplatform/sync/internal/store/JavaDBStorageEngine.java
+++ b/src/main/java/org/sdnplatform/sync/internal/store/JavaDBStorageEngine.java
@@ -18,10 +18,7 @@ import java.util.NoSuchElementException;
 import javax.sql.ConnectionPoolDataSource;
 import javax.xml.bind.DatatypeConverter;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-
 import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource40;
-
 import org.sdnplatform.sync.IClosableIterator;
 import org.sdnplatform.sync.IVersion;
 import org.sdnplatform.sync.Versioned;
@@ -46,7 +43,6 @@ import com.fasterxml.jackson.dataformat.smile.SmileFactory;
  * Persistent storage engine that keeps its data in a JDB database
  * @author readams
  */
-@LogMessageCategory("State Synchronization")
 public class JavaDBStorageEngine implements IStorageEngine<ByteArray, byte[]> {
     protected static final Logger logger =
             LoggerFactory.getLogger(JavaDBStorageEngine.class.getName());
@@ -154,7 +150,8 @@ public class JavaDBStorageEngine implements IStorageEngine<ByteArray, byte[]> {
         }
     }
 
-    @Override
+    @SuppressWarnings("resource")
+	@Override
     public void put(ByteArray key, Versioned<byte[]> value) 
             throws SyncException {
         StoreUtils.assertValidKey(key);
diff --git a/src/main/java/org/sdnplatform/sync/internal/store/ListenerStorageEngine.java b/src/main/java/org/sdnplatform/sync/internal/store/ListenerStorageEngine.java
index 9d6f9d79e..0bd1a439a 100644
--- a/src/main/java/org/sdnplatform/sync/internal/store/ListenerStorageEngine.java
+++ b/src/main/java/org/sdnplatform/sync/internal/store/ListenerStorageEngine.java
@@ -6,8 +6,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map.Entry;
 
-import net.floodlightcontroller.core.annotations.LogMessageCategory;
-import net.floodlightcontroller.core.annotations.LogMessageDoc;
 import net.floodlightcontroller.debugcounter.IDebugCounter;
 import net.floodlightcontroller.debugcounter.IDebugCounterService;
 
@@ -26,7 +24,6 @@ import org.slf4j.LoggerFactory;
  * registered listeners of changes
  * @author readams
  */
-@LogMessageCategory("State Synchronization")
 public class ListenerStorageEngine
     implements IStorageEngine<ByteArray, byte[]> {
     protected static Logger logger =
@@ -144,10 +141,6 @@ public class ListenerStorageEngine
         notifyListeners(Collections.singleton(key).iterator(), type);
     }
 
-    @LogMessageDoc(level="ERROR",
-                   message="An error occurred in a sync listener",
-                   explanation="An unexpected error occured in a handler for " +
-                               "an update to shared state.")
     protected void notifyListeners(Iterator<ByteArray> keys, UpdateType type) {
         for (MappingStoreListener msl : listeners) {
             try {
-- 
GitLab