Ejemplo n.º 1
0
  /**
   * @param ctx Context.
   * @param h2 H2 Indexing.
   * @throws IgniteCheckedException If failed.
   */
  public void start(final GridKernalContext ctx, final IgniteH2Indexing h2)
      throws IgniteCheckedException {
    this.ctx = ctx;
    this.h2 = h2;

    log = ctx.log(GridReduceQueryExecutor.class);

    ctx.io()
        .addMessageListener(
            GridTopic.TOPIC_QUERY,
            new GridMessageListener() {
              @Override
              public void onMessage(UUID nodeId, Object msg) {
                if (!busyLock.enterBusy()) return;

                try {
                  GridReduceQueryExecutor.this.onMessage(nodeId, msg);
                } finally {
                  busyLock.leaveBusy();
                }
              }
            });

    ctx.event()
        .addLocalEventListener(
            new GridLocalEventListener() {
              @Override
              public void onEvent(final Event evt) {
                UUID nodeId = ((DiscoveryEvent) evt).eventNode().id();

                for (QueryRun r : runs.values()) {
                  for (GridMergeIndex idx : r.idxs) {
                    if (idx.hasSource(nodeId)) {
                      handleNodeLeft(r, nodeId);

                      break;
                    }
                  }
                }
              }
            },
            EventType.EVT_NODE_FAILED,
            EventType.EVT_NODE_LEFT);
  }