Skip to content

Commit ff94e11

Browse files
p-szucssteveloughran
authored andcommitted
COMPX-18033. YARN-11733. Fix the order of updating CPU controls with cgroup v1 (apache#7069)
(cherry picked from commit b078f86) Change-Id: I334bc1dd2707b2b3432c768677eeab5c2d658fc4 (cherry picked from commit 95163925163c5be7debdb1f3ea53020fe317d1ca)
1 parent 13674e7 commit ff94e11

File tree

2 files changed

+13
-10
lines changed

2 files changed

+13
-10
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/CGroupsCpuResourceHandlerImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,14 +59,14 @@ public class CGroupsCpuResourceHandlerImpl extends AbstractCGroupsCpuResourceHan
5959

6060
@Override
6161
protected void updateCgroupMaxCpuLimit(String cgroupId, String quota, String period) throws ResourceHandlerException {
62-
if (quota != null) {
63-
cGroupsHandler
64-
.updateCGroupParam(CPU, cgroupId, CGroupsHandler.CGROUP_CPU_QUOTA_US, quota);
65-
}
6662
if (period != null) {
6763
cGroupsHandler
6864
.updateCGroupParam(CPU, cgroupId, CGroupsHandler.CGROUP_CPU_PERIOD_US, period);
6965
}
66+
if (quota != null) {
67+
cGroupsHandler
68+
.updateCGroupParam(CPU, cgroupId, CGroupsHandler.CGROUP_CPU_QUOTA_US, quota);
69+
}
7070
}
7171

7272
@Override

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/test/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/linux/resources/TestCGroupsCpuResourceHandlerImpl.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.junit.Assert;
3232
import org.junit.Before;
3333
import org.junit.Test;
34+
import org.mockito.InOrder;
3435
import org.mockito.Mockito;
3536

3637
import java.io.File;
@@ -190,11 +191,12 @@ public void testPreStartStrictUsage() throws Exception {
190191
CGroupsHandler.CGROUP_CPU_SHARES,
191192
String.valueOf(CGroupsCpuResourceHandlerImpl.CPU_DEFAULT_WEIGHT));
192193
// set quota and period
193-
verify(mockCGroupsHandler, times(1))
194+
InOrder cpuLimitOrder = inOrder(mockCGroupsHandler);
195+
cpuLimitOrder.verify(mockCGroupsHandler, times(1))
194196
.updateCGroupParam(CGroupsHandler.CGroupController.CPU, id,
195197
CGroupsHandler.CGROUP_CPU_PERIOD_US,
196198
String.valueOf(CGroupsCpuResourceHandlerImpl.MAX_QUOTA_US));
197-
verify(mockCGroupsHandler, times(1))
199+
cpuLimitOrder.verify(mockCGroupsHandler, times(1))
198200
.updateCGroupParam(CGroupsHandler.CGroupController.CPU, id,
199201
CGroupsHandler.CGROUP_CPU_QUOTA_US, String.valueOf(
200202
(int) (CGroupsCpuResourceHandlerImpl.MAX_QUOTA_US * share)));
@@ -222,10 +224,11 @@ public void testPreStartRestrictedContainers() throws Exception {
222224
conf.setInt(YarnConfiguration.NM_RESOURCE_PERCENTAGE_PHYSICAL_CPU_LIMIT,
223225
cpuPerc);
224226
cGroupsCpuResourceHandler.bootstrap(plugin, conf);
225-
verify(mockCGroupsHandler, times(1))
227+
InOrder cpuLimitOrder = inOrder(mockCGroupsHandler);
228+
cpuLimitOrder.verify(mockCGroupsHandler, times(1))
226229
.updateCGroupParam(CGroupsHandler.CGroupController.CPU, "",
227230
CGroupsHandler.CGROUP_CPU_PERIOD_US, String.valueOf("333333"));
228-
verify(mockCGroupsHandler, times(1))
231+
cpuLimitOrder.verify(mockCGroupsHandler, times(1))
229232
.updateCGroupParam(CGroupsHandler.CGroupController.CPU, "",
230233
CGroupsHandler.CGROUP_CPU_QUOTA_US,
231234
String.valueOf(CGroupsCpuResourceHandlerImpl.MAX_QUOTA_US));
@@ -262,10 +265,10 @@ public void testPreStartRestrictedContainers() throws Exception {
262265
CGroupsHandler.CGROUP_CPU_SHARES, String.valueOf(
263266
CGroupsCpuResourceHandlerImpl.CPU_DEFAULT_WEIGHT * cVcores));
264267
// set quota and period
265-
verify(mockCGroupsHandler, times(1))
268+
cpuLimitOrder.verify(mockCGroupsHandler, times(1))
266269
.updateCGroupParam(CGroupsHandler.CGroupController.CPU, id,
267270
CGroupsHandler.CGROUP_CPU_PERIOD_US, String.valueOf(periodUS));
268-
verify(mockCGroupsHandler, times(1))
271+
cpuLimitOrder.verify(mockCGroupsHandler, times(1))
269272
.updateCGroupParam(CGroupsHandler.CGroupController.CPU, id,
270273
CGroupsHandler.CGROUP_CPU_QUOTA_US, String.valueOf(quotaUS));
271274
}

0 commit comments

Comments
 (0)