Пример #1
0
  /** Notifies pipelined consumers of this result partition once. */
  private void notifyPipelinedConsumers() {
    if (sendScheduleOrUpdateConsumersMessage
        && !hasNotifiedPipelinedConsumers
        && partitionType.isPipelined()) {
      partitionConsumableNotifier.notifyPartitionConsumable(jobId, partitionId, taskActions);

      hasNotifiedPipelinedConsumers = true;
    }
  }
Пример #2
0
  /**
   * Registers a buffer pool with this result partition.
   *
   * <p>There is one pool for each result partition, which is shared by all its sub partitions.
   *
   * <p>The pool is registered with the partition *after* it as been constructed in order to conform
   * to the life-cycle of task registrations in the {@link TaskManager}.
   */
  public void registerBufferPool(BufferPool bufferPool) {
    checkArgument(
        bufferPool.getNumberOfRequiredMemorySegments() >= getNumberOfSubpartitions(),
        "Bug in result partition setup logic: Buffer pool has not enough guaranteed buffers for this result partition.");

    checkState(
        this.bufferPool == null,
        "Bug in result partition setup logic: Already registered buffer pool.");

    this.bufferPool = checkNotNull(bufferPool);

    // If the partition type is back pressure-free, we register with the buffer pool for
    // callbacks to release memory.
    if (!partitionType.hasBackPressure()) {
      bufferPool.setBufferPoolOwner(this);
    }
  }