This is an automated email from the ASF dual-hosted git repository. guoyangze pushed a commit to branch release-1.18 in repository https://gitbox.apache.org/repos/asf/flink.git
commit 21cfe998f4fb21afe24ceb8b6f4fef180e89b9e9 Author: Yangze Guo <karma...@gmail.com> AuthorDate: Mon Feb 19 10:35:45 2024 +0800 [FLINK-34434][slotmanager] Complete the returnedFuture when slot removed before allocation success --- .../resourcemanager/slotmanager/DefaultSlotStatusSyncer.java | 2 +- .../slotmanager/DefaultSlotStatusSyncerTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncer.java b/flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncer.java index 0d687df9ad4..794db8125c2 100644 --- a/flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncer.java +++ b/flink-runtime/src/main/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncer.java @@ -152,7 +152,7 @@ public class DefaultSlotStatusSyncer implements SlotStatusSyncer { LOG.debug( "The slot {} has been removed before. Ignore the future.", allocationId); - requestFuture.complete(null); + returnedFuture.complete(null); return null; } if (acknowledge != null) { diff --git a/flink-runtime/src/test/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncerTest.java b/flink-runtime/src/test/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncerTest.java index 4c3d2d5a723..ebce5c72b65 100644 --- a/flink-runtime/src/test/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncerTest.java +++ b/flink-runtime/src/test/java/org/apache/flink/runtime/resourcemanager/slotmanager/DefaultSlotStatusSyncerTest.java @@ -119,6 +119,16 @@ class DefaultSlotStatusSyncerTest { assertThat(taskManagerInfo.getAllocatedSlots()).isEmpty()); } + @Test + void testAllocationUpdatesIgnoredIfSlotRemoved() throws Exception { + testSlotAllocation( + (slotStatusSyncer, taskManagerTracker, instanceID, allocationId) -> { + taskManagerTracker.removeTaskManager(instanceID); + assertThat(taskManagerTracker.getAllocatedOrPendingSlot(allocationId)) + .isEmpty(); + }); + } + @Test void testFreeSlot() { final FineGrainedTaskManagerTracker taskManagerTracker =