title: No executor to a Netty pipeline. What happens?
body: <p>For example, Floodlight openflow stack uses Netty for it's IO, and it defines following Pipeline factory class.</p>
  
  <pre><code>public class OpenflowPipelineFactory implements ChannelPipelineFactory {
  
      protected Controller controller;
      protected ThreadPoolExecutor pipelineExecutor;
      protected Timer timer;
      protected IdleStateHandler idleHandler;
      protected ReadTimeoutHandler readTimeoutHandler;
  
      public OpenflowPipelineFactory(Controller controller,
                                     ThreadPoolExecutor pipelineExecutor) {
          super();
          this.controller = controller;
          this.pipelineExecutor = pipelineExecutor;
          this.timer = new HashedWheelTimer();
          this.idleHandler = new IdleStateHandler(timer, 20, 25, 0);
          this.readTimeoutHandler = new ReadTimeoutHandler(timer, 30);
      }
  
      @Override
      public ChannelPipeline getPipeline() throws Exception {
          OFChannelState state = new OFChannelState();
  
          ChannelPipeline pipeline = Channels.pipeline();
          pipeline.addLast("ofmessagedecoder", new OFMessageDecoder());
          pipeline.addLast("ofmessageencoder", new OFMessageEncoder());
          pipeline.addLast("idle", idleHandler);
          pipeline.addLast("timeout", readTimeoutHandler);
          pipeline.addLast("handshaketimeout",
                           new HandshakeTimeoutHandler(state, timer, 15));
          if (pipelineExecutor != null)
              pipeline.addLast("pipelineExecutor",
                               new ExecutionHandler(pipelineExecutor));
          pipeline.addLast("handler", controller.getChannelHandler(state));
          return pipeline;
      }
  
  }
  </code></pre>
  
  <p>But in fact, as Floodlight gives null to the second argument of the constructor, the execution handler and executor object is never assigned to the pipeline. </p>
  
  <pre><code>...
  final ServerBootstrap bootstrap = createServerBootStrap();
  
  bootstrap.setOption("reuseAddr", true);
  bootstrap.setOption("child.keepAlive", true);
  bootstrap.setOption("child.tcpNoDelay", true);
  bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE);
  
  ChannelPipelineFactory pfact = new OpenflowPipelineFactory(this, null);
  bootstrap.setPipelineFactory(pfact);
  InetSocketAddress sa = new InetSocketAddress(openFlowPort);
  final ChannelGroup cg = new DefaultChannelGroup();
  cg.add(bootstrap.bind(sa));
  ...
  </code></pre>
  
  <p>My question is, 'what happens if there's no pipeline executor is set to the pipeline'? Any default pipeline executor is assumed? If it is, OrderedMemoryAwareThreadPoolExecutor executor is always assumed?</p>
  
  <p>Thank you in advance, waiting for some help from the Netty and Floodlight specialists. </p>