Skip to content

Commit 0b05dd8

Browse files
authored
YARN-9650. Set thread names for CapacityScheduler AsyncScheduleThread (#2665)
Amogh Rajesh Desai via Zhankun Tang
1 parent 0e2b308 commit 0b05dd8

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/CapacityScheduler.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ public class CapacityScheduler extends
200200

201201
private CSConfigurationProvider csConfProvider;
202202

203+
private int threadNum = 0;
204+
203205
@Override
204206
public void setConf(Configuration conf) {
205207
yarnConf = conf;
@@ -653,6 +655,7 @@ static class AsyncScheduleThread extends Thread {
653655

654656
public AsyncScheduleThread(CapacityScheduler cs) {
655657
this.cs = cs;
658+
setName("AsyncCapacitySchedulerThread" + cs.threadNum++);
656659
setDaemon(true);
657660
}
658661

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/test/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/capacity/TestCapacitySchedulerAsyncScheduling.java

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,13 +130,41 @@ public void testAsyncContainerAllocationWithMultiNode() throws Exception {
130130
testAsyncContainerAllocation(2);
131131
}
132132

133+
@Test(timeout = 300000)
134+
public void testAsyncThreadNames() throws Exception {
135+
conf.setInt(
136+
CapacitySchedulerConfiguration.SCHEDULE_ASYNCHRONOUSLY_MAXIMUM_THREAD,
137+
1);
138+
conf.setInt(CapacitySchedulerConfiguration.SCHEDULE_ASYNCHRONOUSLY_PREFIX
139+
+ ".scheduling-interval-ms", 0);
140+
final RMNodeLabelsManager mg = new NullRMNodeLabelsManager();
141+
mg.init(conf);
142+
143+
// inject node label manager
144+
MockRM rm = new MockRM(TestUtils.getConfigurationWithMultipleQueues(conf)) {
145+
@Override
146+
public RMNodeLabelsManager createNodeLabelManager() {
147+
return mg;
148+
}
149+
};
150+
151+
rm.getRMContext().setNodeLabelManager(mg);
152+
rm.start();
153+
154+
CapacityScheduler cs = (CapacityScheduler) rm.getResourceScheduler();
155+
for (CapacityScheduler.AsyncScheduleThread thread :
156+
cs.asyncSchedulerThreads) {
157+
Assert.assertTrue(thread.getName()
158+
.startsWith("AsyncCapacitySchedulerThread"));
159+
}
160+
}
161+
133162
public void testAsyncContainerAllocation(int numThreads) throws Exception {
134163
conf.setInt(
135164
CapacitySchedulerConfiguration.SCHEDULE_ASYNCHRONOUSLY_MAXIMUM_THREAD,
136165
numThreads);
137166
conf.setInt(CapacitySchedulerConfiguration.SCHEDULE_ASYNCHRONOUSLY_PREFIX
138167
+ ".scheduling-interval-ms", 0);
139-
140168
final RMNodeLabelsManager mgr = new NullRMNodeLabelsManager();
141169
mgr.init(conf);
142170

@@ -187,7 +215,6 @@ public RMNodeLabelsManager createNodeLabelManager() {
187215
ams.get(i).allocate("*", 1024, 20 * (i + 1), new ArrayList<>());
188216
totalAsked += 20 * (i + 1) * GB;
189217
}
190-
191218
// Wait for at most 15000 ms
192219
int waitTime = 15000; // ms
193220
while (waitTime > 0) {

0 commit comments

Comments
 (0)