Program: 15256
Project: 15256
Buggy source:
/** 
 * @see com.eucalyptus.util.async.RequestHandler#fire(com.eucalyptus.component.ServiceEndpoint)
 * @param serviceEndpoint
 * @return
 */
@Override public boolean fire(final ServiceConfiguration config,final Q request){
  if (!this.request.compareAndSet(null,request)) {
    LOG.warn("String_Node_Str" + this.request.get().getClass().getSimpleName());
    return true;
  }
 else {
    final SocketAddress serviceSocketAddress=config.getSocketAddress();
    final ChannelPipelineFactory factory=config.getComponentId().getClientPipeline();
    try {
      this.clientBootstrap=ChannelUtil.getClientBootstrap(new ChannelPipelineFactory(){
        @Override public ChannelPipeline getPipeline() throws Exception {
          ChannelPipeline pipeline=factory.getPipeline();
          pipeline.addLast("String_Node_Str",AsyncRequestHandler.this);
          return pipeline;
        }
      }
);
      EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_OPENING,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString()).trace();
      this.connectFuture=this.clientBootstrap.connect(serviceSocketAddress);
      final HttpRequest httpRequest=new MappingHttpRequest(HttpVersion.HTTP_1_1,HttpMethod.POST,config,this.request.get());
      this.connectFuture.addListener(new ChannelFutureListener(){
        @Override public void operationComplete(        ChannelFuture future) throws Exception {
          try {
            if (future.isSuccess()) {
              final InetAddress localAddr=((InetSocketAddress)future.getChannel().getLocalAddress()).getAddress();
              if (!factory.getClass().getSimpleName().startsWith("String_Node_Str")) {
                AsyncRequestHandler.this.request.get().set_epoch(Topology.epoch());
                AsyncRequestHandler.this.request.get().get_services().addAll(Topology.partitionRelativeView(config.lookupPartition(),localAddr));
              }
              EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_OPEN,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString(),"String_Node_Str" + future.getChannel().getLocalAddress(),"String_Node_Str" + future.getChannel().getRemoteAddress()).trace();
              future.getChannel().getCloseFuture().addListener(new ChannelFutureListener(){
                @Override public void operationComplete(                ChannelFuture future) throws Exception {
                  EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_CLOSED,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString(),"String_Node_Str" + future.getChannel().getLocalAddress(),"String_Node_Str" + future.getChannel().getRemoteAddress()).trace();
                }
              }
);
              future.getChannel().write(httpRequest).addListener(new ChannelFutureListener(){
                @Override public void operationComplete(                ChannelFuture future) throws Exception {
                  AsyncRequestHandler.this.writeComplete.set(true);
                  EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_WRITE,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString(),"String_Node_Str" + future.getChannel().getLocalAddress(),"String_Node_Str" + future.getChannel().getRemoteAddress()).trace();
                }
              }
);
            }
 else {
              AsyncRequestHandler.this.teardown(future.getCause());
            }
          }
 catch (          Exception ex) {
            LOG.error(ex,ex);
            AsyncRequestHandler.this.teardown(future.getCause());
          }
        }
      }
);
      return true;
    }
 catch (    Throwable t) {
      LOG.error(t,t);
      this.teardown(t);
      return false;
    }
  }
}

Fixed version (ground truth):
/** 
 * @see com.eucalyptus.util.async.RequestHandler#fire(com.eucalyptus.component.ServiceEndpoint)
 * @param serviceEndpoint
 * @return
 */
@Override public boolean fire(final ServiceConfiguration config,final Q request){
  if (!this.request.compareAndSet(null,request)) {
    LOG.warn("String_Node_Str" + this.request.get().getClass().getSimpleName());
    return false;
  }
 else {
    final SocketAddress serviceSocketAddress=config.getSocketAddress();
    final ChannelPipelineFactory factory=config.getComponentId().getClientPipeline();
    try {
      this.clientBootstrap=ChannelUtil.getClientBootstrap(new ChannelPipelineFactory(){
        @Override public ChannelPipeline getPipeline() throws Exception {
          ChannelPipeline pipeline=factory.getPipeline();
          pipeline.addLast("String_Node_Str",AsyncRequestHandler.this);
          return pipeline;
        }
      }
);
      EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_OPENING,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString()).trace();
      this.connectFuture=this.clientBootstrap.connect(serviceSocketAddress);
      final HttpRequest httpRequest=new MappingHttpRequest(HttpVersion.HTTP_1_1,HttpMethod.POST,config,this.request.get());
      this.connectFuture.addListener(new ChannelFutureListener(){
        @Override public void operationComplete(        ChannelFuture future) throws Exception {
          try {
            if (future.isSuccess()) {
              final InetAddress localAddr=((InetSocketAddress)future.getChannel().getLocalAddress()).getAddress();
              if (!factory.getClass().getSimpleName().startsWith("String_Node_Str")) {
                AsyncRequestHandler.this.request.get().set_epoch(Topology.epoch());
                AsyncRequestHandler.this.request.get().get_services().addAll(Topology.partitionRelativeView(config.lookupPartition(),localAddr));
              }
              EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_OPEN,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString(),"String_Node_Str" + future.getChannel().getLocalAddress(),"String_Node_Str" + future.getChannel().getRemoteAddress()).trace();
              future.getChannel().getCloseFuture().addListener(new ChannelFutureListener(){
                @Override public void operationComplete(                ChannelFuture future) throws Exception {
                  EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_CLOSED,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString(),"String_Node_Str" + future.getChannel().getLocalAddress(),"String_Node_Str" + future.getChannel().getRemoteAddress()).trace();
                }
              }
);
              future.getChannel().write(httpRequest).addListener(new ChannelFutureListener(){
                @Override public void operationComplete(                ChannelFuture future) throws Exception {
                  AsyncRequestHandler.this.writeComplete.set(true);
                  EventRecord.here(request.getClass(),EventClass.SYSTEM_REQUEST,EventType.CHANNEL_WRITE,request.getClass().getSimpleName(),request.getCorrelationId(),serviceSocketAddress.toString(),"String_Node_Str" + future.getChannel().getLocalAddress(),"String_Node_Str" + future.getChannel().getRemoteAddress()).trace();
                }
              }
);
            }
 else {
              AsyncRequestHandler.this.teardown(future.getCause());
            }
          }
 catch (          Exception ex) {
            LOG.error(ex,ex);
            AsyncRequestHandler.this.teardown(future.getCause());
          }
        }
      }
);
      return true;
    }
 catch (    Throwable t) {
      LOG.error(t,t);
      this.teardown(t);
      return false;
    }
  }
}