[ 
https://issues.apache.org/jira/browse/FLINK-20364?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17239055#comment-17239055
 ] 

Guruh Fajar Samudra commented on FLINK-20364:
---------------------------------------------

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`).
Permalink
 added a comment - 07/Dec/17 15:17
Github user GJL commented on a diff in the pull request:

[https://github.com/apache/flink/pull/5091#discussion_r155549755]

— Diff: 
flink-runtime/src/main/java/org/apache/flink/runtime/jobmaster/LogicalSlot.java 
—
@@ -32,6 +34,20 @@
*/
public interface LogicalSlot {

+ Payload TERMINATED_PAYLOAD = new Payload() {
+
+ private final CompletableFuture<?> COMPLETED_TERMINATION_FUTURE = 
CompletableFuture.completedFuture(null);
— End diff –

nit: `COMPLETED_TERMINATION_FUTURE` should be camel cased because is not 
actually a constant (not static).

> Add support for scheduling with slot sharing
> --------------------------------------------
>
>                 Key: FLINK-20364
>                 URL: https://issues.apache.org/jira/browse/FLINK-20364
>             Project: Flink
>          Issue Type: Test
>          Components: Runtime / Coordination
>    Affects Versions: statefun-2.2.1
>            Reporter: Guruh Fajar Samudra
>            Priority: Major
>             Fix For: statefun-2.2.2
>
>
> In order to reach feature equivalence with the old code base, we should add 
> support for scheduling with slot sharing to the SlotPool. This will also 
> allow us to run all the IT cases based on the {{AbstractTestBase}} on the 
> Flip-6 {{MiniCluster}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to