[ https://issues.apache.org/jira/browse/FLINK-7832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16207634#comment-16207634 ]
ASF GitHub Bot commented on FLINK-7832: --------------------------------------- Github user zentol commented on a diff in the pull request: https://github.com/apache/flink/pull/4823#discussion_r145129240 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/clusterframework/types/TaskManagerSlot.java --- @@ -74,22 +83,51 @@ public AllocationID getAllocationId() { return allocationId; } - public void setAllocationId(AllocationID allocationId) { - this.allocationId = allocationId; - } - public PendingSlotRequest getAssignedSlotRequest() { return assignedSlotRequest; } - public void setAssignedSlotRequest(PendingSlotRequest assignedSlotRequest) { - this.assignedSlotRequest = assignedSlotRequest; - } - public InstanceID getInstanceId() { return taskManagerConnection.getInstanceID(); } + public void freeSlot() { + Preconditions.checkState(state == State.ALLOCATED, "Slot must be allocated before freeing it."); + + state = State.FREE; + allocationId = null; + } + + public void clearPendingSlotRequest() { + Preconditions.checkState(state == State.PENDING, "No slot request to clear."); + + state = State.FREE; + assignedSlotRequest = null; + } + + public void assignPendingSlotRequest(PendingSlotRequest pendingSlotRequest) { + Preconditions.checkState(state == State.FREE, "Slot must be free to be assigned a slot request."); + + state = State.PENDING; + assignedSlotRequest = Preconditions.checkNotNull(pendingSlotRequest); + } + + public void completeAllocation(AllocationID allocationId) { + Preconditions.checkState(state == State.PENDING, "In order to complete an allocation, the slot has to be allocated."); + Preconditions.checkState(Objects.equals(allocationId, assignedSlotRequest.getAllocationId()), "Mismatch between allocation id of the pending slot request."); + + state = State.ALLOCATED; + this.allocationId = Preconditions.checkNotNull(allocationId); + assignedSlotRequest = null; + } + + public void updateAllocation(AllocationID allocationId) { --- End diff -- Can you explain the difference between updateAllocation and completeAllocation in terms of when they are used? (I would've expected that the slot lifecycle is along the lines of FREE <-> PENDING -> ALLOCATED -> FREE), but this doesn't appear to be the case as a free slot can be allocated without ever being in a pending state). > SlotManager should return number of registered slots > ---------------------------------------------------- > > Key: FLINK-7832 > URL: https://issues.apache.org/jira/browse/FLINK-7832 > Project: Flink > Issue Type: Improvement > Components: Distributed Coordination > Affects Versions: 1.4.0 > Reporter: Till Rohrmann > Assignee: Till Rohrmann > Labels: flip-6 > Fix For: 1.4.0 > > > The {{SlotManager}} should provide information about the number of registered > slots for a {{TaskExecutor}} and how many of these slots are still free. -- This message was sent by Atlassian JIRA (v6.4.14#64029)