Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-19142

Local recovery can be broken if slot hijacking happened during a full restart

    XMLWordPrintableJSON

Details

    Description

      The ticket originates from this PR discussion.

      The previous AllocationIDs are used by PreviousAllocationSlotSelectionStrategy to schedule subtasks into the slot where they were previously executed before a failover. If the previous slot (AllocationID) is not available, we do not want subtasks to take previous slots (AllocationIDs) of other subtasks.

      The MergingSharedSlotProfileRetriever gets all previous AllocationIDs of the bulk from SlotSharingExecutionSlotAllocator but only from the current bulk. The previous AllocationIDs of other bulks stay unknown. Therefore, the current bulk can potentially hijack the previous slots from the preceding bulks. On the other hand the previous AllocationIDs of other tasks should be taken if the other tasks are not going to run at the same time, e.g. not enough resources after failover or other bulks are done.

      Local recovery can be broken due to this. e.g. when multiple regions of a streaming job are restarted at the same time(due to global failover, or task failover with `full` failover strategy).

      Attachments

        Issue Links

          Activity

            People

              zhuzh Zhu Zhu
              azagrebin Andrey Zagrebin
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: