diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
index 2dbba0a30de9a7d558e26e79d6c216b388a4c455..4f530fe75cd02657077ff53d3e4cdc0a2d6cdec0 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkDiscoveryManager.java
@@ -970,20 +970,28 @@ public class LinkDiscoveryManager implements IOFMessageListener,
 
         while (count < BDDP_TASK_SIZE && quarantineQueue.peek() != null) {
             NodePortTuple npt;
-            npt = quarantineQueue.remove();
-            sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false,
+            try {
+            	npt = quarantineQueue.remove();
+            	sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false,
                                  false);
-            nptList.add(npt);
-            count++;
+            	nptList.add(npt);
+            	count++;
+            } catch (Exception e){
+            	log.error("Multiple removals in quarantineQueue.");
+            }
         }
 
         count = 0;
         while (count < BDDP_TASK_SIZE && maintenanceQueue.peek() != null) {
             NodePortTuple npt;
-            npt = maintenanceQueue.remove();
-            sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false,
+            try {
+            	npt = maintenanceQueue.remove();
+            	sendDiscoveryMessage(npt.getNodeId(), npt.getPortId(), false,
                                  false);
-            count++;
+            	count++;
+            } catch (Exception e){
+            	log.error("Multiple removals in maintenanceQueue.");
+            }
         }
 
         for (NodePortTuple npt : nptList) {