Skip to content

Commit cb64e8e

Browse files
committed
Revert "Fix synchronization issues of AbstractYarnScheduler#nodeUpdate and its implementations. (Naganarasimha G R via wangda)" because forgot to add JIRA Number
This reverts commit 554e665.
1 parent 554e665 commit cb64e8e

File tree

4 files changed

+55
-60
lines changed

4 files changed

+55
-60
lines changed

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import org.apache.hadoop.classification.InterfaceStability.Unstable;
3737
import org.apache.hadoop.conf.Configuration;
3838
import org.apache.hadoop.service.AbstractService;
39-
import org.apache.hadoop.yarn.api.records.AbstractResourceRequest;
4039
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
4140
import org.apache.hadoop.yarn.api.records.ApplicationId;
4241
import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport;
@@ -51,6 +50,7 @@
5150
import org.apache.hadoop.yarn.api.records.ResourceOption;
5251
import org.apache.hadoop.yarn.api.records.ResourceRequest;
5352
import org.apache.hadoop.yarn.api.records.UpdateContainerRequest;
53+
import org.apache.hadoop.yarn.api.records.AbstractResourceRequest;
5454
import org.apache.hadoop.yarn.conf.YarnConfiguration;
5555
import org.apache.hadoop.yarn.exceptions.InvalidResourceRequestException;
5656
import org.apache.hadoop.yarn.exceptions.YarnException;
@@ -76,15 +76,14 @@
7676
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode;
7777
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeCleanContainerEvent;
7878
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeFinishedContainersPulledByAMEvent;
79+
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivitiesManager;
7980
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeResourceUpdateEvent;
8081
import org.apache.hadoop.yarn.server.resourcemanager.rmnode.UpdatedContainerInfo;
81-
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivitiesManager;
8282
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.common.QueueEntitlement;
8383
import org.apache.hadoop.yarn.server.utils.Lock;
8484
import org.apache.hadoop.yarn.util.Clock;
8585
import org.apache.hadoop.yarn.util.SystemClock;
8686
import org.apache.hadoop.yarn.util.resource.Resources;
87-
8887
import com.google.common.annotations.VisibleForTesting;
8988
import com.google.common.util.concurrent.SettableFuture;
9089

@@ -395,8 +394,8 @@ private void killOrphanContainerOnNode(RMNode node,
395394
}
396395
}
397396

398-
public void recoverContainersOnNode(List<NMContainerStatus> containerReports,
399-
RMNode nm) {
397+
public synchronized void recoverContainersOnNode(
398+
List<NMContainerStatus> containerReports, RMNode nm) {
400399
try {
401400
writeLock.lock();
402401
if (!rmContext.isWorkPreservingRecoveryEnabled()
@@ -991,7 +990,7 @@ protected void updateNodeResourceUtilization(RMNode nm) {
991990
* Process a heartbeat update from a node.
992991
* @param nm The RMNode corresponding to the NodeManager
993992
*/
994-
protected void nodeUpdate(RMNode nm) {
993+
protected synchronized void nodeUpdate(RMNode nm) {
995994
if (LOG.isDebugEnabled()) {
996995
LOG.debug("nodeUpdate: " + nm +
997996
" cluster capacity: " + getClusterResource());

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: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,24 @@
1818

1919
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity;
2020

21-
import com.google.common.annotations.VisibleForTesting;
22-
import com.google.common.base.Preconditions;
23-
import com.google.common.util.concurrent.SettableFuture;
21+
import java.io.IOException;
22+
import java.io.InputStream;
23+
import java.util.ArrayList;
24+
import java.util.Collection;
25+
import java.util.Collections;
26+
import java.util.Comparator;
27+
import java.util.EnumSet;
28+
import java.util.HashSet;
29+
import java.util.List;
30+
import java.util.Map;
31+
import java.util.Map.Entry;
32+
import java.util.Random;
33+
import java.util.Set;
34+
import java.util.concurrent.BlockingQueue;
35+
import java.util.concurrent.ConcurrentHashMap;
36+
import java.util.concurrent.LinkedBlockingQueue;
37+
import java.util.concurrent.atomic.AtomicBoolean;
38+
2439
import org.apache.commons.lang.StringUtils;
2540
import org.apache.commons.logging.Log;
2641
import org.apache.commons.logging.LogFactory;
@@ -88,9 +103,10 @@
88103
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerDynamicEditException;
89104
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode;
90105
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerUtils;
106+
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.*;
107+
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityDiagnosticConstant;
91108
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivitiesLogger;
92109
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivitiesManager;
93-
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityDiagnosticConstant;
94110
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.ActivityState;
95111
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.activities.AllocationState;
96112
import org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.preemption.KillableContainer;
@@ -125,24 +141,9 @@
125141
import org.apache.hadoop.yarn.util.resource.ResourceCalculator;
126142
import org.apache.hadoop.yarn.util.resource.Resources;
127143

128-
import java.io.IOException;
129-
import java.io.InputStream;
130-
import java.util.ArrayList;
131-
import java.util.Collection;
132-
import java.util.Collections;
133-
import java.util.Comparator;
134-
import java.util.EnumSet;
135-
import java.util.HashSet;
136-
import java.util.List;
137-
import java.util.Map;
138-
import java.util.Map.Entry;
139-
import java.util.Random;
140-
import java.util.Set;
141-
import java.util.concurrent.BlockingQueue;
142-
import java.util.concurrent.ConcurrentHashMap;
143-
import java.util.concurrent.LinkedBlockingQueue;
144-
import java.util.concurrent.atomic.AtomicBoolean;
145-
144+
import com.google.common.annotations.VisibleForTesting;
145+
import com.google.common.base.Preconditions;
146+
import com.google.common.util.concurrent.SettableFuture;
146147

147148
@LimitedPrivate("yarn")
148149
@Evolving
@@ -1016,7 +1017,7 @@ public List<QueueUserACLInfo> getQueueUserAclInfo() {
10161017
}
10171018

10181019
@Override
1019-
protected void nodeUpdate(RMNode rmNode) {
1020+
protected synchronized void nodeUpdate(RMNode rmNode) {
10201021
try {
10211022
readLock.lock();
10221023
setLastNodeUpdateTime(Time.now());

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,23 @@
1818

1919
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair;
2020

21-
import com.google.common.annotations.VisibleForTesting;
22-
import com.google.common.base.Preconditions;
21+
import java.io.IOException;
22+
import java.util.ArrayList;
23+
import java.util.Collection;
24+
import java.util.Comparator;
25+
import java.util.EnumSet;
26+
import java.util.HashSet;
27+
import java.util.Iterator;
28+
import java.util.List;
29+
import java.util.Set;
30+
import java.util.concurrent.ConcurrentHashMap;
31+
2332
import org.apache.commons.logging.Log;
2433
import org.apache.commons.logging.LogFactory;
2534
import org.apache.hadoop.classification.InterfaceAudience.LimitedPrivate;
2635
import org.apache.hadoop.classification.InterfaceStability.Unstable;
2736
import org.apache.hadoop.conf.Configuration;
2837
import org.apache.hadoop.security.UserGroupInformation;
29-
import org.apache.hadoop.yarn.api.records.AbstractResourceRequest;
3038
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
3139
import org.apache.hadoop.yarn.api.records.ApplicationId;
3240
import org.apache.hadoop.yarn.api.records.Container;
@@ -41,6 +49,7 @@
4149
import org.apache.hadoop.yarn.api.records.ResourceOption;
4250
import org.apache.hadoop.yarn.api.records.ResourceRequest;
4351
import org.apache.hadoop.yarn.api.records.UpdateContainerRequest;
52+
import org.apache.hadoop.yarn.api.records.AbstractResourceRequest;
4453
import org.apache.hadoop.yarn.conf.YarnConfiguration;
4554
import org.apache.hadoop.yarn.exceptions.YarnException;
4655
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
@@ -86,16 +95,8 @@
8695
import org.apache.hadoop.yarn.util.resource.ResourceCalculator;
8796
import org.apache.hadoop.yarn.util.resource.Resources;
8897

89-
import java.io.IOException;
90-
import java.util.ArrayList;
91-
import java.util.Collection;
92-
import java.util.Comparator;
93-
import java.util.EnumSet;
94-
import java.util.HashSet;
95-
import java.util.Iterator;
96-
import java.util.List;
97-
import java.util.Set;
98-
import java.util.concurrent.ConcurrentHashMap;
98+
import com.google.common.annotations.VisibleForTesting;
99+
import com.google.common.base.Preconditions;
99100

100101
/**
101102
* A scheduler that schedules resources between a set of queues. The scheduler
@@ -1069,7 +1070,7 @@ public Allocation allocate(ApplicationAttemptId appAttemptId,
10691070
}
10701071

10711072
@Override
1072-
protected void nodeUpdate(RMNode nm) {
1073+
protected synchronized void nodeUpdate(RMNode nm) {
10731074
try {
10741075
writeLock.lock();
10751076
long start = getClock().getTime();

hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fifo/FifoScheduler.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,16 @@
1818

1919
package org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo;
2020

21-
import com.google.common.annotations.VisibleForTesting;
21+
import java.io.IOException;
22+
import java.util.ArrayList;
23+
import java.util.Arrays;
24+
import java.util.Collections;
25+
import java.util.HashMap;
26+
import java.util.List;
27+
import java.util.Map;
28+
import java.util.Set;
29+
import java.util.concurrent.ConcurrentSkipListMap;
30+
2231
import org.apache.commons.logging.Log;
2332
import org.apache.commons.logging.LogFactory;
2433
import org.apache.hadoop.classification.InterfaceAudience.LimitedPrivate;
@@ -45,7 +54,6 @@
4554
import org.apache.hadoop.yarn.exceptions.YarnRuntimeException;
4655
import org.apache.hadoop.yarn.factories.RecordFactory;
4756
import org.apache.hadoop.yarn.factory.providers.RecordFactoryProvider;
48-
import org.apache.hadoop.yarn.server.api.protocolrecords.NMContainerStatus;
4957
import org.apache.hadoop.yarn.server.resourcemanager.RMContext;
5058
import org.apache.hadoop.yarn.server.resourcemanager.nodelabels.RMNodeLabelsManager;
5159
import org.apache.hadoop.yarn.server.resourcemanager.recovery.RMStateStore.RMState;
@@ -88,15 +96,7 @@
8896
import org.apache.hadoop.yarn.util.resource.ResourceCalculator;
8997
import org.apache.hadoop.yarn.util.resource.Resources;
9098

91-
import java.io.IOException;
92-
import java.util.ArrayList;
93-
import java.util.Arrays;
94-
import java.util.Collections;
95-
import java.util.HashMap;
96-
import java.util.List;
97-
import java.util.Map;
98-
import java.util.Set;
99-
import java.util.concurrent.ConcurrentSkipListMap;
99+
import com.google.common.annotations.VisibleForTesting;
100100

101101
@LimitedPrivate("yarn")
102102
@Evolving
@@ -978,10 +978,4 @@ protected synchronized void nodeUpdate(RMNode nm) {
978978

979979
updateAvailableResourcesMetrics();
980980
}
981-
982-
@Override
983-
public synchronized void recoverContainersOnNode(
984-
List<NMContainerStatus> containerReports, RMNode nm) {
985-
super.recoverContainersOnNode(containerReports, nm);
986-
}
987981
}

0 commit comments

Comments
 (0)