Ejemplo n.º 1
0
  @Override
  public final void registerInputOutput() throws Exception {
    LOG.debug("registerInputOutput for {}", getName());

    boolean initializationCompleted = false;
    try {
      AccumulatorRegistry accumulatorRegistry = getEnvironment().getAccumulatorRegistry();

      userClassLoader = getUserCodeClassLoader();
      configuration = new StreamConfig(getTaskConfiguration());
      accumulatorMap = accumulatorRegistry.getUserMap();

      stateBackend = createStateBackend();
      stateBackend.initializeForJob(getEnvironment().getJobID());

      headOperator = configuration.getStreamOperator(userClassLoader);
      operatorChain =
          new OperatorChain<>(this, headOperator, accumulatorRegistry.getReadWriteReporter());

      if (headOperator != null) {
        headOperator.setup(this, configuration, operatorChain.getChainEntryPoint());
      }

      timerService =
          Executors.newSingleThreadScheduledExecutor(
              new DispatcherThreadFactory(TRIGGER_THREAD_GROUP, "Time Trigger for " + getName()));

      // task specific initialization
      init();

      initializationCompleted = true;
    } finally {
      if (!initializationCompleted) {
        if (timerService != null) {
          timerService.shutdownNow();
        }
        if (operatorChain != null) {
          operatorChain.releaseOutputs();
        }
      }
    }
  }