Skip to content

Commit d4acfac

Browse files
committed
HDFS-17328. DiskBalancer should not computeNodeDensity every time when addVolume.
1 parent fb1bb64 commit d4acfac

2 files changed

Lines changed: 15 additions & 4 deletions

File tree

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/diskbalancer/connectors/DBNameNodeConnector.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,10 @@ private void getVolumeInfoFromStorageReports(DiskBalancerDataNode node,
133133
throws Exception {
134134
Preconditions.checkNotNull(node);
135135
Preconditions.checkNotNull(reports);
136-
for (StorageReport report : reports) {
136+
int len = reports.length;
137+
boolean needComputeDensity = false;
138+
for (int i = 0; i < len; i++) {
139+
StorageReport report = reports[i];
137140
DatanodeStorage storage = report.getStorage();
138141
DiskBalancerVolume volume = new DiskBalancerVolume();
139142
volume.setCapacity(report.getCapacity());
@@ -153,8 +156,10 @@ private void getVolumeInfoFromStorageReports(DiskBalancerDataNode node,
153156
.READ_ONLY_SHARED) || report.isFailed());
154157
volume.setStorageType(storage.getStorageType().name());
155158
volume.setIsTransient(storage.getStorageType().isTransient());
156-
node.addVolume(volume);
159+
if (i == len - 1) {
160+
needComputeDensity = true;
161+
}
162+
node.addVolume(volume, needComputeDensity);
157163
}
158-
159164
}
160165
}

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/diskbalancer/datamodel/DiskBalancerDataNode.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,10 @@ public boolean isBalancingNeeded(double threshold) {
238238
* @param volume - volume
239239
*/
240240
public void addVolume(DiskBalancerVolume volume) throws Exception {
241+
addVolume(volume, false);
242+
}
243+
244+
public void addVolume(DiskBalancerVolume volume, boolean computeDensity) throws Exception {
241245
Preconditions.checkNotNull(volume, "volume cannot be null");
242246
Preconditions.checkNotNull(volumeSets, "volume sets cannot be null");
243247
Preconditions
@@ -254,7 +258,9 @@ public void addVolume(DiskBalancerVolume volume) throws Exception {
254258
}
255259

256260
vSet.addVolume(volume);
257-
computeNodeDensity();
261+
if (computeDensity) {
262+
computeNodeDensity();
263+
}
258264
}
259265

260266
/**

0 commit comments

Comments
 (0)