public void forceRemovalInRegister(ArrayList<Node> ping) {
        for (Node pingNode : ping) {
            InvocationContext ctx = balancerRunner.getInvocationContext(
                    pingNode.getProperties().get("version"));
            //ctx.nodes.remove(pingNode);
            String instanceId = pingNode.getProperties().get("Restcomm-Instance-Id");
            if(instanceId!=null)
            	ctx.httpNodeMap.remove(instanceId);
            Integer smppPort = null;
            if(pingNode.getProperties().get("smppPort") != null)
            	smppPort = Integer.parseInt(pingNode.getProperties().get("smppPort"));
            if(smppPort!=null)
            	ctx.smppNodeMap.remove(new KeySmpp(pingNode));
            
            Boolean isIpV6=LbUtils.isValidInet6Address(pingNode.getIp());        	
            ctx.sipNodeMap(isIpV6).remove(new KeySip(pingNode,isIpV6));
            boolean nodePresent = false;
            Iterator<Node> nodesIterator = balancerRunner.balancerContext.aliveNodes.iterator();
            while (nodesIterator.hasNext() && !nodePresent) {
                Node node = (Node) nodesIterator.next();
                if (node.equals(pingNode)) {
                    nodePresent = true;
                }
            }
            // removal done afterwards to avoid ConcurrentModificationException when removing the node while goign through the iterator
            if(nodePresent) {
            	
                balancerRunner.balancerContext.aliveNodes.remove(pingNode);
                ctx.balancerAlgorithm.nodeRemoved(pingNode);
                if(logger.isInfoEnabled()) {
                    logger.info("NodeExpirationTimerTask Run NSync["
                            + pingNode + "] forcibly removed due to a clean shutdown of a node. Numbers of nodes present in the balancer : " 
                            + balancerRunner.balancerContext.aliveNodes.size());
                }
            }					
        }
    }
public void forceRemovalInRegister ( ArrayList < Node > ping ) { for ( Node pingNode : ping ) { InvocationContext ctx = balancerRunner . getInvocationContext ( pingNode . getProperties ( ) . get ( "version" ) ) ; String instanceId = pingNode . getProperties ( ) . get ( "Restcomm-Instance-Id" ) ; if ( instanceId != null ) ctx . httpNodeMap . remove ( instanceId ) ; Integer smppPort = null ; if ( pingNode . getProperties ( ) . get ( "smppPort" ) != null ) smppPort = Integer . parseInt ( pingNode . getProperties ( ) . get ( "smppPort" ) ) ; if ( smppPort != null ) ctx . smppNodeMap . remove ( new KeySmpp ( pingNode ) ) ; Boolean isIpV6 = LbUtils . isValidInet6Address ( pingNode . getIp ( ) ) ; ctx . sipNodeMap ( isIpV6 ) . remove ( new KeySip ( pingNode , isIpV6 ) ) ; boolean nodePresent = false ; Iterator < Node > nodesIterator = balancerRunner . balancerContext . aliveNodes . iterator ( ) ; while ( nodesIterator . hasNext ( ) && ! nodePresent ) { Node node = ( Node ) nodesIterator . next ( ) ; if ( node . equals ( pingNode ) ) { nodePresent = true ; } } if ( nodePresent ) { balancerRunner . balancerContext . aliveNodes . remove ( pingNode ) ; ctx . balancerAlgorithm . nodeRemoved ( pingNode ) ; if ( logger . isInfoEnabled ( ) ) { logger . info ( "NodeExpirationTimerTask Run NSync[" + pingNode + "] forcibly removed due to a clean shutdown of a node. Numbers of nodes present in the balancer : " + balancerRunner . balancerContext . aliveNodes . size ( ) ) ; } } } }
{@inheritDoc}