class TaskExecutorPartitionTrackerImpl extends AbstractPartitionTracker<JobID, TaskExecutorPartitionInfo> implements TaskExecutorPartitionTracker {

	@Override
	public void promoteJobPartitions(Collection<ResultPartitionID> partitionsToPromote) {
		if (partitionsToPromote.isEmpty()) {
			return;
		}

		final Collection<PartitionTrackerEntry<JobID, TaskExecutorPartitionInfo>> partitionTrackerEntries = stopTrackingPartitions(partitionsToPromote);

		for (PartitionTrackerEntry<JobID, TaskExecutorPartitionInfo> partitionTrackerEntry : partitionTrackerEntries) {
			final TaskExecutorPartitionInfo dataSetMetaInfo = partitionTrackerEntry.getMetaInfo();
			final DataSetEntry dataSetEntry = clusterPartitions.computeIfAbsent(
				dataSetMetaInfo.getIntermediateDataSetId(),
				ignored -> new DataSetEntry(dataSetMetaInfo.getNumberOfPartitions()));
			dataSetEntry.addPartition(partitionTrackerEntry.getResultPartitionId());
		}
	}

	public  TaskExecutorPartitionTrackerImpl(ShuffleEnvironment<?, ?> shuffleEnvironment);

}