flink-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GJL <...@git.apache.org>
Subject [GitHub] flink pull request #5091: [FLINK-7956] [flip6] Add support for queued schedu...
Date Thu, 07 Dec 2017 14:05:12 GMT
Github user GJL commented on a diff in the pull request:

    --- 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
    + * 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
    + * the task slot does not yet contain another child with the same {@link AbstractID}
    + * 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`).


View raw message