[ https://issues.apache.org/jira/browse/SLIDER-1224?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16006856#comment-16006856 ]
Billie Rinaldi commented on SLIDER-1224: ---------------------------------------- [~kyungwan nam], thanks for the patch! This looks great, so I will close SLIDER-1104 as a duplicate of this. I took your test from SLIDER-1104 and expanded it a bit to test this patch, and I found one more thing that needs to be changed: https://github.com/apache/incubator-slider/blob/develop/slider-core/src/main/java/org/apache/slider/server/appmaster/state/OutstandingRequestTracker.java#L179 The outcome is set to open when a request is found in openRequests. We should add a check here that says if the request mayEscalate and isEscalated, the outcome should be set to escalated. This is similar to what is done when a request is found in placedRequests, but the mayEscalate property needs to be checked as well. Please also include the test in your patch: {noformat} diff --git a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.groovy b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.groovy index 7be01ad..574ded5 100644 --- a/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.groovy +++ b/slider-core/src/test/groovy/org/apache/slider/server/appmaster/model/history/TestRoleHistoryOutstandingRequestTracker.groovy @@ -143,6 +143,52 @@ class TestRoleHistoryOutstandingRequestTracker extends BaseMockAppStateTest { } @Test + public void testIssuedEscalatedRequest() throws Throwable { + def req1 = tracker.newRequest(host1, 0) + def resource = factory.newResource() + resource.virtualCores = 1 + resource.memory = 48; + def yarnRequest = req1.buildContainerRequest(resource, role0Status, 0) + assert tracker.listPlacedRequests().size() == 1 + assert tracker.listOpenRequests().size() == 0 + + tracker.escalateOutstandingRequests(role0Status.placementTimeoutSeconds * 1000) + assert !req1.isEscalated() + assert tracker.listPlacedRequests().size() == 1 + assert tracker.listOpenRequests().size() == 0 + + tracker.escalateOutstandingRequests(role0Status.placementTimeoutSeconds * 1000 + 1) + assert req1.isEscalated() + assert tracker.listPlacedRequests().size() == 0 + assert tracker.listOpenRequests().size() == 1 + + def c1 = factory.newContainer() + + def nodeId = factory.newNodeId() + c1.nodeId = nodeId + // if request was escalated, container can be allocated to another host + // by relaxed placement. + nodeId.host = "host9" + + def pri = ContainerPriority.buildPriority(0, false) + assert pri > 0 + c1.setPriority(new MockPriority(pri)) + + c1.setResource(resource) + + def issued = req1.issuedRequest + assert issued.capability == resource + assert issued.priority.priority == c1.getPriority().getPriority() + assert req1.resourceRequirementsMatch(resource) + + def allocation = tracker.onContainerAllocated(0, nodeId.host, c1) + assert tracker.listPlacedRequests().size() == 0 + assert tracker.listOpenRequests().size() == 0 + assert allocation.outcome == ContainerAllocationOutcome.Escalated; + assert allocation.origin.is(req1) + } + + @Test public void testResetEntries() throws Throwable { tracker.newRequest(host1, 0) tracker.newRequest(host2, 0) {noformat} > the outstanding request that has been escalated is failed to cleanup > -------------------------------------------------------------------- > > Key: SLIDER-1224 > URL: https://issues.apache.org/jira/browse/SLIDER-1224 > Project: Slider > Issue Type: Bug > Affects Versions: Slider 0.92 > Reporter: kyungwan nam > Assignee: kyungwan nam > Attachments: SLIDER-1224.001.patch > > > There is a slider app with placement policy is normal ( 0 ). > If an outstanding request is escalated, the container can be allocated to > another node, not desired node. > But, when container is allocated to another node, the outstanding request is > kept, not to remove > I think it is the same issue with SLIDER-1104. > it can still happen with slider-0.92. -- This message was sent by Atlassian JIRA (v6.3.15#6346)