Shashikanth VH
Committed by Gerrit Code Review

BGP system test issue fix.

Change-Id: I26f30e800a2d88377fde9d6da8ccca25581250ce
...@@ -361,6 +361,13 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { ...@@ -361,6 +361,13 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler {
361 361
362 } 362 }
363 363
364 + //Stop keepalive timer
365 + private void stopKeepAliveTimer() {
366 + if ((keepAliveTimer != null) && (keepAliveTimer.getKeepAliveTimer() != null)) {
367 + keepAliveTimer.getKeepAliveTimer().cancel();
368 + }
369 + }
370 +
364 // ************************* 371 // *************************
365 // Channel handler methods 372 // Channel handler methods
366 // ************************* 373 // *************************
...@@ -457,9 +464,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { ...@@ -457,9 +464,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler {
457 duplicateBGPIdFound = Boolean.FALSE; 464 duplicateBGPIdFound = Boolean.FALSE;
458 } 465 }
459 466
460 - if (null != keepAliveTimer) { 467 + stopKeepAliveTimer();
461 - keepAliveTimer.getKeepAliveTimer().cancel();
462 - }
463 } else { 468 } else {
464 bgpconfig.setPeerConnState(peerAddr, BgpPeerCfg.State.IDLE); 469 bgpconfig.setPeerConnState(peerAddr, BgpPeerCfg.State.IDLE);
465 log.warn("No bgp ip in channelHandler registered for " + "disconnected peer {}", getPeerInfoString()); 470 log.warn("No bgp ip in channelHandler registered for " + "disconnected peer {}", getPeerInfoString());
...@@ -476,6 +481,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { ...@@ -476,6 +481,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler {
476 log.error("Disconnecting device {} due to read timeout", getPeerInfoString()); 481 log.error("Disconnecting device {} due to read timeout", getPeerInfoString());
477 sendNotification(BgpErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null); 482 sendNotification(BgpErrorType.HOLD_TIMER_EXPIRED, (byte) 0, null);
478 state = ChannelState.IDLE; 483 state = ChannelState.IDLE;
484 + stopKeepAliveTimer();
479 ctx.getChannel().close(); 485 ctx.getChannel().close();
480 return; 486 return;
481 } else if (e.getCause() instanceof ClosedChannelException) { 487 } else if (e.getCause() instanceof ClosedChannelException) {
...@@ -486,6 +492,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { ...@@ -486,6 +492,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler {
486 // still print stack trace if debug is enabled 492 // still print stack trace if debug is enabled
487 log.debug("StackTrace for previous Exception: ", e.getCause()); 493 log.debug("StackTrace for previous Exception: ", e.getCause());
488 } 494 }
495 + stopKeepAliveTimer();
489 ctx.getChannel().close(); 496 ctx.getChannel().close();
490 } else if (e.getCause() instanceof BgpParseException) { 497 } else if (e.getCause() instanceof BgpParseException) {
491 byte[] data = new byte[] {}; 498 byte[] data = new byte[] {};
...@@ -502,6 +509,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { ...@@ -502,6 +509,7 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler {
502 } else if (e.getCause() instanceof RejectedExecutionException) { 509 } else if (e.getCause() instanceof RejectedExecutionException) {
503 log.warn("Could not process message: queue full"); 510 log.warn("Could not process message: queue full");
504 } else { 511 } else {
512 + stopKeepAliveTimer();
505 log.error("Error while processing message from peer " + getPeerInfoString() + "state " + this.state); 513 log.error("Error while processing message from peer " + getPeerInfoString() + "state " + this.state);
506 ctx.getChannel().close(); 514 ctx.getChannel().close();
507 } 515 }
......