/** {@inheritDoc} */
  @Override
  public void start0() throws IgniteCheckedException {
    super.start0();

    assert cctx.config().getCacheMode() != LOCAL;

    cctx.io()
        .addHandler(
            cctx.cacheId(),
            GridCacheQueryRequest.class,
            new CI2<UUID, GridCacheQueryRequest>() {
              @Override
              public void apply(UUID nodeId, GridCacheQueryRequest req) {
                processQueryRequest(nodeId, req);
              }
            });

    lsnr =
        new GridLocalEventListener() {
          @Override
          public void onEvent(Event evt) {
            DiscoveryEvent discoEvt = (DiscoveryEvent) evt;

            for (GridCacheDistributedQueryFuture fut : futs.values())
              fut.onNodeLeft(discoEvt.eventNode().id());
          }
        };

    cctx.events().addListener(lsnr, EVT_NODE_LEFT, EVT_NODE_FAILED);
  }