Handle ElanTunnelISL NumberFormatException 57/84057/1
authorStephen Kitt <skitt@redhat.com>
Thu, 29 Aug 2019 08:11:26 +0000 (10:11 +0200)
committerStephen Kitt <skitt@redhat.com>
Thu, 29 Aug 2019 08:11:26 +0000 (10:11 +0200)
This explicitly handles NumberFormatException when converting from
String to BigInteger, without queuing a job if the input data is
invalid.

Change-Id: If9c8e479970c72824ddc399c0f1971dd422842b2
Signed-off-by: Stephen Kitt <skitt@redhat.com>
elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanTunnelInterfaceStateListener.java

index 20dcbf69c1d54f92e769038b431411b777b791d9..f9cdf160e9ae4ef461dd0c8ffdd17b5d97f993c9 100644 (file)
@@ -82,14 +82,19 @@ public class ElanTunnelInterfaceStateListener extends AsyncDataTreeChangeListene
             LOG.trace("Returning because unsupported tunnelOperStatus {}", tunOpStatus);
             return;
         }
-        jobCoordinator.enqueueJob(add.getTunnelInterfaceName(), () -> {
+        try {
             BigInteger srcDpId = new BigInteger(add.getSrcInfo().getTepDeviceId());
             BigInteger dstDpId = new BigInteger(add.getDstInfo().getTepDeviceId());
-            LOG.info("Handling tunnel state event for srcDpId {} and dstDpId {} ",
-                    srcDpId, dstDpId);
-            elanInterfaceManager.handleInternalTunnelStateEvent(srcDpId, dstDpId);
-            return Collections.emptyList();
-        }, ElanConstants.JOB_MAX_RETRIES);
+            jobCoordinator.enqueueJob(add.getTunnelInterfaceName(), () -> {
+                LOG.info("Handling tunnel state event for srcDpId {} and dstDpId {} ",
+                        srcDpId, dstDpId);
+                elanInterfaceManager.handleInternalTunnelStateEvent(srcDpId, dstDpId);
+                return Collections.emptyList();
+            }, ElanConstants.JOB_MAX_RETRIES);
+        } catch (NumberFormatException e) {
+            LOG.error("Invalid source TepDeviceId {} or destination TepDeviceId {}", add.getSrcInfo().getTepDeviceId(),
+                add.getDstInfo().getTepDeviceId());
+        }
     }
 
     @Override