Github user GJL commented on a diff in the pull request:

    https://github.com/apache/flink/pull/5091#discussion_r155520946
  
    --- Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/slotpool/SlotSharingManager.java
 ---
    @@ -0,0 +1,722 @@
    +/*
    + * Licensed to the Apache Software Foundation (ASF) under one
    + * or more contributor license agreements.  See the NOTICE file
    + * distributed with this work for additional information
    + * regarding copyright ownership.  The ASF licenses this file
    + * to you under the Apache License, Version 2.0 (the
    + * "License"); you may not use this file except in compliance
    + * with the License.  You may obtain a copy of the License at
    + *
    + *     http://www.apache.org/licenses/LICENSE-2.0
    + *
    + * Unless required by applicable law or agreed to in writing, software
    + * distributed under the License is distributed on an "AS IS" BASIS,
    + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    + * See the License for the specific language governing permissions and
    + * limitations under the License.
    + */
    +
    +package org.apache.flink.runtime.jobmaster.slotpool;
    +
    +import org.apache.flink.annotation.VisibleForTesting;
    +import org.apache.flink.runtime.jobmaster.LogicalSlot;
    +import org.apache.flink.runtime.jobmaster.SlotContext;
    +import org.apache.flink.runtime.jobmaster.SlotOwner;
    +import org.apache.flink.runtime.jobmaster.SlotRequestId;
    +import org.apache.flink.runtime.instance.SlotSharingGroupId;
    +import org.apache.flink.runtime.jobmanager.scheduler.Locality;
    +import org.apache.flink.runtime.taskmanager.TaskManagerLocation;
    +import org.apache.flink.util.AbstractID;
    +import org.apache.flink.util.FlinkException;
    +import org.apache.flink.util.Preconditions;
    +
    +import javax.annotation.Nullable;
    +
    +import java.util.AbstractCollection;
    +import java.util.Collection;
    +import java.util.Collections;
    +import java.util.HashMap;
    +import java.util.HashSet;
    +import java.util.Iterator;
    +import java.util.Map;
    +import java.util.Objects;
    +import java.util.Set;
    +import java.util.concurrent.CompletableFuture;
    +
    +/**
    + * Manager which is responsible for slot sharing. Slot sharing allows to 
run different
    + * tasks in the same slot and to realize co-location constraints.
    + *
    + * <p>The SlotSharingManager allows to create a hierarchy of {@link 
TaskSlot} such that
    + * every {@link TaskSlot} is uniquely identified by a {@link 
SlotRequestId} identifying
    + * the request for the TaskSlot and a {@link AbstractID} identifying the 
task or the
    + * co-location constraint running in this slot.
    + *
    + * <p>The {@link TaskSlot} hierarchy is implemented by {@link 
MultiTaskSlot} and
    + * {@link SingleTaskSlot}. The former class represents inner nodes which 
can contain
    + * a number of other {@link TaskSlot} and the latter class represents the 
leave nodes.
    + * The hierarchy starts with a root {@link MultiTaskSlot} which is a future
    + * {@link SlotContext} assigned. The {@link SlotContext} represents the 
allocated slot
    + * on the TaskExecutor in which all slots of this hierarchy run. A {@link 
MultiTaskSlot}
    + * can be assigned multiple {@link SingleTaskSlot} or {@link 
MultiTaskSlot} if and only if
    + * the task slot does not yet contain another child with the same {@link 
AbstractID} identifying
    + * the actual task or the co-location constraint.
    + *
    + * <p>Normal slot sharing is represented by a root {@link MultiTaskSlot} 
which contains a set
    + * of {@link SingleTaskSlot} on the second layer. Each {@link 
SingleTaskSlot} represents a different
    + * task.
    + *
    + * <p>Co-location constraints are modeled by adding a {@link 
MultiTaskSlot} to the root node. The co-location
    + * constraint is uniquely identified by a {@link AbstractID} such that we 
cannot add a second co-located
    + * {@link MultiTaskSlot} to the same root node. Now all co-located tasks 
will be added to co-located
    + * multi task slot.
    + */
    +public class SlotSharingManager {
    +
    +   private final SlotSharingGroupId slotSharingGroupId;
    +
    +   // needed to release allocated slots after a complete multi task slot 
hierarchy has been released
    --- End diff --
    
    nit: All fields are commented with non-javadoc comments. Normally comments 
on fields are also done in Javadoc style, e.g., `SlotPool`. Javadoc comments on 
fields are displayed by IntelliJ (`Ctrl + J`).


---

Reply via email to