Skip to content

Commit 0c6e45a

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

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

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,9 @@ 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+
for (int i = 0; i < len; i++) {
138+
StorageReport report = reports[i];
137139
DatanodeStorage storage = report.getStorage();
138140
DiskBalancerVolume volume = new DiskBalancerVolume();
139141
volume.setCapacity(report.getCapacity());
@@ -153,8 +155,11 @@ private void getVolumeInfoFromStorageReports(DiskBalancerDataNode node,
153155
.READ_ONLY_SHARED) || report.isFailed());
154156
volume.setStorageType(storage.getStorageType().name());
155157
volume.setIsTransient(storage.getStorageType().isTransient());
156-
node.addVolume(volume);
158+
boolean needComputeDensity = false;
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)