## What is the purpose of the change

This PR adds support for multi task slot TaskExecutors to Flink. Before it was 
recommended to start a Flink cluster with single slot `TaskExecutors`. Now also 
multi slot `TaskExecutors` can be configured and Flink won't allocate resources 
over-excessively.

## Brief change log

- Extend `ResourceActions#allocateResource` to return 
`Collection<ResourceProfile>` indicating the set of slots to expect
- Store expected slots as `PendingTaskManagerSlot`
- Use `PendingTaskManagerSlot` to fulfill `PendingSlotRequest`
- Only ask for new resources if there are no more `TaskManagerSlots` and 
`PendingTaskManagerSlots`

## Verifying this change

- Added `SlotManagerTest#`: `testRequestNewResources`, 
`testFailingAllocationReturnsPendingTaskManagerSlot`, 
`testPendingTaskManagerSlotCompletion`, `testRegistrationOfDifferentSlot`, 
`testOnlyFreeSlotsCanFulfillPendingTaskManagerSlot`, 

## Does this pull request potentially affect one of the following parts:

  - Dependencies (does it add or upgrade a dependency): (no)
  - The public API, i.e., is any changed class annotated with 
`@Public(Evolving)`: (no)
  - The serializers: (no)
  - The runtime per-record code paths (performance sensitive): (no)
  - Anything that affects deployment or recovery: JobManager (and its 
components), Checkpointing, Yarn/Mesos, ZooKeeper: (**yes**)
  - The S3 file system connector: (no)

## Documentation

  - Does this pull request introduce a new feature? (no)
  - If yes, how is the feature documented? (not applicable)


[ Full content available at: https://github.com/apache/flink/pull/6734 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to